aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Copeland <me@bobcopeland.com>2009-07-29 17:32:28 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-04 16:43:27 -0400
commit8784d2ee92fc835bf18dd5096f00ec9a48dc0590 (patch)
tree56ab5c1775c02aa4dc44ab306e7ff50be6e13daa
parent7e2ce646fc0acc99837f73d39528493e146d1dcc (diff)
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.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)
2000static void 2000static void
2001ath5k_tasklet_tx(unsigned long data) 2001ath5k_tasklet_tx(unsigned long data)
2002{ 2002{
2003 int i;
2003 struct ath5k_softc *sc = (void *)data; 2004 struct ath5k_softc *sc = (void *)data;
2004 2005
2005 ath5k_tx_processq(sc, sc->txq); 2006 for (i=0; i < AR5K_NUM_TX_QUEUES; i++)
2007 if (sc->txqs[i].setup && (sc->ah->ah_txq_isr & BIT(i)))
2008 ath5k_tx_processq(sc, &sc->txqs[i]);
2006} 2009}
2007 2010
2008 2011