diff options
author | Nick Kossifidis <mickflemm@gmail.com> | 2010-12-03 07:05:19 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-12-07 00:00:23 +0300 |
commit | 19252ecb672d3f35959c576d1d26b9aca350f5bf (patch) | |
tree | 83760e5ce884d9ec459a9dcab3d733e5ac6b9df1 /drivers/net/wireless | |
parent | d84938c9be85f4738a350ef44210789fef915cb7 (diff) | |
download | linux-19252ecb672d3f35959c576d1d26b9aca350f5bf.tar.xz |
ath5k: Always free tx buffers before reset
* Always free tx buffers before reset, since we also empty hw queues.
If we don't and a queue gets stuck, we'll never decrease txq_len and sw
will keep thinking the queue is still stuck even after reset.
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 5ece94708371..1522cf82c16c 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c @@ -2661,9 +2661,11 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan, synchronize_irq(sc->irq); stop_tasklets(sc); + /* We are going to empty hw queues + * so we should also free any remaining + * tx buffers */ + ath5k_drain_tx_buffs(sc); if (chan) { - ath5k_drain_tx_buffs(sc); - sc->curchan = chan; sc->curband = &sc->sbands[chan->band]; } |