diff options
author | John W. Linville <linville@tuxdriver.com> | 2012-02-01 15:48:50 (GMT) |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-02-01 15:48:50 (GMT) |
commit | 874239f51f8759f3955630fa5da5cf13cd6567d5 (patch) | |
tree | 224640a759c0734bc6d0bfd5fd207301b1ef4a10 /drivers/net/wireless/brcm80211 | |
parent | b0302aba812bcc39291cdab9ad7e37008f352a91 (diff) | |
parent | b49ba04a3a0382e7314d990707c21094c410425a (diff) | |
download | linux-874239f51f8759f3955630fa5da5cf13cd6567d5.tar.xz |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Diffstat (limited to 'drivers/net/wireless/brcm80211')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/main.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c index 976a531..fb712ca 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c @@ -7967,13 +7967,21 @@ int brcms_c_get_curband(struct brcms_c_info *wlc) void brcms_c_wait_for_tx_completion(struct brcms_c_info *wlc, bool drop) { + int timeout = 20; + /* flush packet queue when requested */ if (drop) brcmu_pktq_flush(&wlc->pkt_queue->q, false, NULL, NULL); /* wait for queue and DMA fifos to run dry */ - while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0) + while (!pktq_empty(&wlc->pkt_queue->q) || brcms_txpktpendtot(wlc) > 0) { brcms_msleep(wlc->wl, 1); + + if (--timeout == 0) + break; + } + + WARN_ON_ONCE(timeout == 0); } void brcms_c_set_beacon_listen_interval(struct brcms_c_info *wlc, u8 interval) |