diff options
author | Bob Copeland <me@bobcopeland.com> | 2009-07-29 17:32:28 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-08-04 16:43:27 -0400 |
commit | 8784d2ee92fc835bf18dd5096f00ec9a48dc0590 (patch) | |
tree | 56ab5c1775c02aa4dc44ab306e7ff50be6e13daa | |
parent | 7e2ce646fc0acc99837f73d39528493e146d1dcc (diff) | |
download | op-kernel-dev-8784d2ee92fc835bf18dd5096f00ec9a48dc0590.zip op-kernel-dev-8784d2ee92fc835bf18dd5096f00ec9a48dc0590.tar.gz |
ath5k: fix CAB queue operation
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>
-rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 55ee976..3a1c156d 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c @@ -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]); } |