Browse Source

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>
Nick Kossifidis 14 years ago
parent
commit
19252ecb67
1 changed files with 4 additions and 2 deletions
  1. 4 2
      drivers/net/wireless/ath/ath5k/base.c

+ 4 - 2
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];
 	}