aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index a08db02537fc..3ba9e1049f3b 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -248,9 +248,27 @@ done:
248 return NETDEV_TX_OK; 248 return NETDEV_TX_OK;
249} 249}
250 250
251void brcmf_txflowblock_if(struct brcmf_if *ifp,
252 enum brcmf_netif_stop_reason reason, bool state)
253{
254 if (!ifp)
255 return;
256
257 brcmf_dbg(TRACE, "enter: idx=%d stop=0x%X reason=%d state=%d\n",
258 ifp->bssidx, ifp->netif_stop, reason, state);
259 if (state) {
260 if (!ifp->netif_stop)
261 netif_stop_queue(ifp->ndev);
262 ifp->netif_stop |= reason;
263 } else {
264 ifp->netif_stop &= ~reason;
265 if (!ifp->netif_stop)
266 netif_wake_queue(ifp->ndev);
267 }
268}
269
251void brcmf_txflowblock(struct device *dev, bool state) 270void brcmf_txflowblock(struct device *dev, bool state)
252{ 271{
253 struct net_device *ndev;
254 struct brcmf_bus *bus_if = dev_get_drvdata(dev); 272 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
255 struct brcmf_pub *drvr = bus_if->drvr; 273 struct brcmf_pub *drvr = bus_if->drvr;
256 int i; 274 int i;
@@ -258,13 +276,8 @@ void brcmf_txflowblock(struct device *dev, bool state)
258 brcmf_dbg(TRACE, "Enter\n"); 276 brcmf_dbg(TRACE, "Enter\n");
259 277
260 for (i = 0; i < BRCMF_MAX_IFS; i++) 278 for (i = 0; i < BRCMF_MAX_IFS; i++)
261 if (drvr->iflist[i]) { 279 brcmf_txflowblock_if(drvr->iflist[i],
262 ndev = drvr->iflist[i]->ndev; 280 BRCMF_NETIF_STOP_REASON_BLOCK_BUS, state);
263 if (state)
264 netif_stop_queue(ndev);
265 else
266 netif_wake_queue(ndev);
267 }
268} 281}
269 282
270void brcmf_rx_frames(struct device *dev, struct sk_buff_head *skb_list) 283void brcmf_rx_frames(struct device *dev, struct sk_buff_head *skb_list)