Explorar el Código

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>
Bob Copeland hace 16 años
padre
commit
8784d2ee92
Se han modificado 1 ficheros con 4 adiciones y 1 borrados
  1. 4 1
      drivers/net/wireless/ath/ath5k/base.c

+ 4 - 1
drivers/net/wireless/ath/ath5k/base.c

@@ -2000,9 +2000,12 @@ ath5k_tx_processq(struct ath5k_softc *sc, struct ath5k_txq *txq)
 static void
 static void
 ath5k_tasklet_tx(unsigned long data)
 ath5k_tasklet_tx(unsigned long data)
 {
 {
+	int i;
 	struct ath5k_softc *sc = (void *)data;
 	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]);
 }
 }