ath5k: fix CAB queue operation
authorBob Copeland <me@bobcopeland.com>
Wed, 29 Jul 2009 21:32:28 +0000 (17:32 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 4 Aug 2009 20:43:27 +0000 (16:43 -0400)
We need to process tx descriptors for all queues (currently main tx
queue and cabq) which may have triggered the TX completion interrupt.
Otherwise, the queues can get stuck after sending a few frames.

Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c

index 55ee976ab6d7614824991f12eb69d57daea213f8..3a1c156d275fa7bf7d232e3247a01ed07f5b9881 100644 (file)
@@ -2000,9 +2000,12 @@ ath5k_tx_processq(struct ath5k_softc *sc, struct ath5k_txq *txq)
 static void
 ath5k_tasklet_tx(unsigned long data)
 {
+       int i;
        struct ath5k_softc *sc = (void *)data;
 
-       ath5k_tx_processq(sc, sc->txq);
+       for (i=0; i < AR5K_NUM_TX_QUEUES; i++)
+               if (sc->txqs[i].setup && (sc->ah->ah_txq_isr & BIT(i)))
+                       ath5k_tx_processq(sc, &sc->txqs[i]);
 }