ath5k: Always free tx buffers before reset
authorNick Kossifidis <mickflemm@gmail.com>
Fri, 3 Dec 2010 04:05:19 +0000 (06:05 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 6 Dec 2010 21:00:23 +0000 (16:00 -0500)
 * 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>
drivers/net/wireless/ath/ath5k/base.c

index 5ece947083714d463dec3dd18a342f912d2ddc58..1522cf82c16c22c12dfa5a60d34438a1be2dd2ed 100644 (file)
@@ -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];
        }