summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath5k/base.c
diff options
context:
space:
mode:
authorBob Copeland2009-07-29 23:32:28 +0200
committerJohn W. Linville2009-08-04 22:43:27 +0200
commit8784d2ee92fc835bf18dd5096f00ec9a48dc0590 (patch)
tree56ab5c1775c02aa4dc44ab306e7ff50be6e13daa /drivers/net/wireless/ath/ath5k/base.c
parentorinoco: enable cfg80211 "set_channel" operation (diff)
downloadkernel-qcow2-linux-8784d2ee92fc835bf18dd5096f00ec9a48dc0590.tar.gz
kernel-qcow2-linux-8784d2ee92fc835bf18dd5096f00ec9a48dc0590.tar.xz
kernel-qcow2-linux-8784d2ee92fc835bf18dd5096f00ec9a48dc0590.zip
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>
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/base.c')
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c5
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 55ee976ab6d7..3a1c156d275f 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]);
}