diff options
author | Clark Williams <williams@redhat.com> | 2012-02-03 15:10:42 -0600 |
---|---|---|
committer | Clark Williams <williams@redhat.com> | 2012-02-03 15:10:42 -0600 |
commit | 77f57fb93d132875acead3581bcdc5d2fefbe7a0 (patch) | |
tree | 5db5ccf5e1754248edc790e2f37f3a2b863f0ddb /drivers/net/wireless/brcm80211/brcmsmac/main.c | |
parent | d28048db190097536aef2be5ee9a736bd7bb92eb (diff) | |
parent | 69bade053d0f2ef0c8ee98af9f6699a55a8d8bb9 (diff) |
Merge commit 'v3.2.3' into rt-3.2.3-rt10
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmsmac/main.c')
-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 510e9bb52287..453f58e5667f 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c @@ -8217,13 +8217,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) |