ath9k: indicate which queues are blocked when stopping tx fails
authorFelix Fietkau <nbd@openwrt.org>
Fri, 7 Oct 2011 00:28:12 +0000 (02:28 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 11 Oct 2011 20:41:12 +0000 (16:41 -0400)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/xmit.c

index b4a07718b3007dd7603a69fe13ff649ed349d950..49f1543ba13110a6bc025ecdfda8e2c6010f4aaf 100644 (file)
@@ -1466,7 +1466,8 @@ bool ath_drain_all_txq(struct ath_softc *sc, bool retry_tx)
        struct ath_hw *ah = sc->sc_ah;
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
        struct ath_txq *txq;
-       int i, npend = 0;
+       int i;
+       u32 npend = 0;
 
        if (sc->sc_flags & SC_OP_INVALID)
                return true;
@@ -1478,11 +1479,12 @@ bool ath_drain_all_txq(struct ath_softc *sc, bool retry_tx)
                if (!ATH_TXQ_SETUP(sc, i))
                        continue;
 
-               npend += ath9k_hw_numtxpending(ah, sc->tx.txq[i].axq_qnum);
+               if (ath9k_hw_numtxpending(ah, sc->tx.txq[i].axq_qnum))
+                       npend |= BIT(i);
        }
 
        if (npend)
-               ath_err(common, "Failed to stop TX DMA!\n");
+               ath_err(common, "Failed to stop TX DMA, queues=0x%03x!\n", npend);
 
        for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) {
                if (!ATH_TXQ_SETUP(sc, i))