ath9k: Remove ATH9K_TX_SW_ABORTED and introduce a bool for this purpose
authorVasanthakumar Thiagarajan <vasanth@atheros.com>
Thu, 15 Apr 2010 21:38:46 +0000 (17:38 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 16 Apr 2010 19:43:26 +0000 (15:43 -0400)
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/common.h
drivers/net/wireless/ath/ath9k/mac.h
drivers/net/wireless/ath/ath9k/xmit.c

index 1a87283a0941b50178b06448ffa4e68624938d39..5fd7fe10d7ea913817cb2f46343edae509b4f484 100644 (file)
@@ -82,6 +82,7 @@ struct ath_buf {
        dma_addr_t bf_buf_addr;         /* physical addr of data buffer */
        bool bf_stale;
        bool bf_isnullfunc;
+       bool bf_tx_aborted;
        u16 bf_flags;
        struct ath_buf_state bf_state;
        dma_addr_t bf_dmacontext;
index f2f4ad253696f7dd2cfc08b6131efbd102209cc2..99f81ebb35bf011383d9fb7d1e60dd793c37d155 100644 (file)
@@ -86,7 +86,6 @@
 #define ATH9K_TX_DESC_CFG_ERR      0x04
 #define ATH9K_TX_DATA_UNDERRUN     0x08
 #define ATH9K_TX_DELIM_UNDERRUN    0x10
-#define ATH9K_TX_SW_ABORTED        0x40
 #define ATH9K_TX_SW_FILTERED       0x80
 
 /* 64 bytes */
index 4bc52f4a0ad35a25619cf35dc8d2ce6385948af7..6ab20992ba304bf173ccb50fb065b91ca2b0c4c1 100644 (file)
@@ -359,7 +359,7 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq,
                        acked_cnt++;
                } else {
                        if (!(tid->state & AGGR_CLEANUP) &&
-                           ts->ts_flags != ATH9K_TX_SW_ABORTED) {
+                           !bf_last->bf_tx_aborted) {
                                if (bf->bf_retries < ATH_MAX_SW_RETRIES) {
                                        ath_tx_set_retry(sc, txq, bf);
                                        txpending = 1;
@@ -1036,9 +1036,6 @@ void ath_draintxq(struct ath_softc *sc, struct ath_txq *txq, bool retry_tx)
        struct ath_tx_status ts;
 
        memset(&ts, 0, sizeof(ts));
-       if (!retry_tx)
-               ts.ts_flags = ATH9K_TX_SW_ABORTED;
-
        INIT_LIST_HEAD(&bf_head);
 
        for (;;) {
@@ -1063,6 +1060,8 @@ void ath_draintxq(struct ath_softc *sc, struct ath_txq *txq, bool retry_tx)
                }
 
                lastbf = bf->bf_lastbf;
+               if (!retry_tx)
+                       lastbf->bf_tx_aborted = true;
 
                /* remove ath_buf's of the same mpdu from txq */
                list_cut_position(&bf_head, &txq->axq_q, &lastbf->list);
@@ -1897,7 +1896,7 @@ static int ath_tx_num_badfrms(struct ath_softc *sc, struct ath_buf *bf,
        int nbad = 0;
        int isaggr = 0;
 
-       if (ts->ts_flags == ATH9K_TX_SW_ABORTED)
+       if (bf->bf_tx_aborted)
                return 0;
 
        isaggr = bf_isaggr(bf);