ath9k: remove bfs_paprd_timestamp from struct ath_buf_state
authorFelix Fietkau <nbd@openwrt.org>
Sun, 14 Nov 2010 14:20:04 +0000 (15:20 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 17 Nov 2010 21:19:12 +0000 (16:19 -0500)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/xmit.c

index bd988ea..826b665 100644 (file)
@@ -221,7 +221,6 @@ struct ath_buf_state {
        int bfs_retries;
        u8 bf_type;
        u8 bfs_paprd;
-       unsigned long bfs_paprd_timestamp;
        u32 bfs_keyix;
        enum ath9k_internal_frame_type bfs_ftype;
 };
@@ -598,6 +597,7 @@ struct ath_softc {
        struct work_struct paprd_work;
        struct work_struct hw_check_work;
        struct completion paprd_complete;
+       bool paprd_pending;
 
        u32 intrstatus;
        u32 sc_flags; /* SC_OP_* */
index df7c62d..cfec2ad 100644 (file)
@@ -375,6 +375,7 @@ void ath_paprd_calibrate(struct work_struct *work)
                }
 
                init_completion(&sc->paprd_complete);
+               sc->paprd_pending = true;
                ar9003_paprd_setup_gain_table(ah, chain);
                txctl.paprd = BIT(chain);
                if (ath_tx_start(hw, skb, &txctl) != 0)
@@ -382,6 +383,7 @@ void ath_paprd_calibrate(struct work_struct *work)
 
                time_left = wait_for_completion_timeout(&sc->paprd_complete,
                                msecs_to_jiffies(ATH_PAPRD_TIMEOUT));
+               sc->paprd_pending = false;
                if (!time_left) {
                        ath_print(ath9k_hw_common(ah), ATH_DBG_CALIBRATE,
                                  "Timeout waiting for paprd training on "
index 6e0467c..9f3d23a 100644 (file)
@@ -1698,9 +1698,6 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct ath_buf *bf,
                if (bf->bf_state.bfs_paprd)
                        ar9003_hw_set_paprd_txdesc(ah, ds, bf->bf_state.bfs_paprd);
 
-               if (txctl->paprd)
-                       bf->bf_state.bfs_paprd_timestamp = jiffies;
-
                ath_tx_send_normal(sc, txctl->txq, NULL, &bf_head);
        }
 
@@ -1874,9 +1871,7 @@ static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
        bf->bf_buf_addr = 0;
 
        if (bf->bf_state.bfs_paprd) {
-               if (time_after(jiffies,
-                              bf->bf_state.bfs_paprd_timestamp +
-                              msecs_to_jiffies(ATH_PAPRD_TIMEOUT)))
+               if (!sc->paprd_pending)
                        dev_kfree_skb_any(skb);
                else
                        complete(&sc->paprd_complete);