ath9k: Stop ANI when doing a reset
authorSujith <Sujith.Manoharan@atheros.com>
Mon, 14 Dec 2009 11:04:56 +0000 (16:34 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 21 Dec 2009 16:32:20 +0000 (11:32 -0500)
The MIB counters are disabled when doing a chip reset.
Since ANI depends on the MIB registers for its operation, relying
on the contents of said registers during HW reset results in sub-optimal
performance.

Cc: stable@kernel.org
Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c

index c48743452515c16c5fdae713ceeda416156fccab..9e68c1a8aef01e27743360bc6b3e3e687428c79c 100644 (file)
@@ -1973,6 +1973,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
        struct ieee80211_hw *hw = sc->hw;
        int r;
 
+       /* Stop ANI */
+       del_timer_sync(&common->ani.timer);
+
        ath9k_hw_set_interrupts(ah, 0);
        ath_drain_all_txq(sc, retry_tx);
        ath_stoprecv(sc);
@@ -2014,6 +2017,9 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
                }
        }
 
+       /* Start ANI */
+       ath_start_ani(common);
+
        return r;
 }