From 13006712eab665d606d217fccbb8f609287e2c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Tue, 21 Mar 2017 10:45:30 +0100 Subject: mac80211: brcmfmac: backport patches pushed on 2017-03-20 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rafał Miłecki --- ...fmac-move-brcmf_txflowblock-to-bcdc-layer.patch | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch (limited to 'package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch') diff --git a/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch b/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch new file mode 100644 index 0000000000..b947cd1de9 --- /dev/null +++ b/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch @@ -0,0 +1,137 @@ +From 20ec4f57498f8770c7a1a3e2a316fa752a424178 Mon Sep 17 00:00:00 2001 +From: Franky Lin +Date: Fri, 10 Mar 2017 21:17:02 +0000 +Subject: [PATCH] brcmfmac: move brcmf_txflowblock to bcdc layer + +brcmf_txflowblock is invoked by sdio and usb bus module which are using +bcdc protocol. This patch makes it a bcdc API instead of a core module +function. + +Reviewed-by: Arend Van Spriel +Signed-off-by: Franky Lin +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 10 ++++++++++ + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h | 1 + + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 2 -- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 10 ---------- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 5 +++-- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 5 +++-- + 6 files changed, 17 insertions(+), 16 deletions(-) + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c +@@ -345,6 +345,16 @@ brcmf_proto_bcdc_txdata(struct brcmf_pub + return brcmf_bus_txdata(drvr->bus_if, pktbuf); + } + ++void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state) ++{ ++ struct brcmf_bus *bus_if = dev_get_drvdata(dev); ++ struct brcmf_pub *drvr = bus_if->drvr; ++ ++ brcmf_dbg(TRACE, "Enter\n"); ++ ++ brcmf_fws_bus_blocked(drvr, state); ++} ++ + static void + brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx, + enum proto_addr_mode addr_mode) +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h +@@ -19,6 +19,7 @@ + #ifdef CPTCFG_BRCMFMAC_PROTO_BCDC + int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr); + void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr); ++void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state); + #else + static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; } + static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {} +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h +@@ -229,8 +229,6 @@ int brcmf_attach(struct device *dev, str + void brcmf_detach(struct device *dev); + /* Indication from bus module that dongle should be reset */ + void brcmf_dev_reset(struct device *dev); +-/* Indication from bus module to change flow-control state */ +-void brcmf_txflowblock(struct device *dev, bool state); + + /* Notify the bus has transferred the tx packet to firmware */ + void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success); +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +@@ -283,16 +283,6 @@ void brcmf_txflowblock_if(struct brcmf_i + spin_unlock_irqrestore(&ifp->netif_stop_lock, flags); + } + +-void brcmf_txflowblock(struct device *dev, bool state) +-{ +- struct brcmf_bus *bus_if = dev_get_drvdata(dev); +- struct brcmf_pub *drvr = bus_if->drvr; +- +- brcmf_dbg(TRACE, "Enter\n"); +- +- brcmf_fws_bus_blocked(drvr, state); +-} +- + void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb) + { + if (skb->pkt_type == PACKET_MULTICAST) +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -44,6 +44,7 @@ + #include "firmware.h" + #include "core.h" + #include "common.h" ++#include "bcdc.h" + + #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500) + #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500) +@@ -2328,7 +2329,7 @@ static uint brcmf_sdio_sendfromq(struct + if ((bus->sdiodev->state == BRCMF_SDIOD_DATA) && + bus->txoff && (pktq_len(&bus->txq) < TXLOW)) { + bus->txoff = false; +- brcmf_txflowblock(bus->sdiodev->dev, false); ++ brcmf_proto_bcdc_txflowblock(bus->sdiodev->dev, false); + } + + return cnt; +@@ -2753,7 +2754,7 @@ static int brcmf_sdio_bus_txdata(struct + + if (pktq_len(&bus->txq) >= TXHI) { + bus->txoff = true; +- brcmf_txflowblock(dev, true); ++ brcmf_proto_bcdc_txflowblock(dev, true); + } + spin_unlock_bh(&bus->txq_lock); + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +@@ -29,6 +29,7 @@ + #include "usb.h" + #include "core.h" + #include "common.h" ++#include "bcdc.h" + + + #define IOCTL_RESP_TIMEOUT msecs_to_jiffies(2000) +@@ -488,7 +489,7 @@ static void brcmf_usb_tx_complete(struct + spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags); + if (devinfo->tx_freecount > devinfo->tx_high_watermark && + devinfo->tx_flowblock) { +- brcmf_txflowblock(devinfo->dev, false); ++ brcmf_proto_bcdc_txflowblock(devinfo->dev, false); + devinfo->tx_flowblock = false; + } + spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags); +@@ -635,7 +636,7 @@ static int brcmf_usb_tx(struct device *d + spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags); + if (devinfo->tx_freecount < devinfo->tx_low_watermark && + !devinfo->tx_flowblock) { +- brcmf_txflowblock(dev, true); ++ brcmf_proto_bcdc_txflowblock(dev, true); + devinfo->tx_flowblock = true; + } + spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags); -- cgit v1.2.3