ath5k: Disable ANI during reset
authorNick Kossifidis <mickflemm@gmail.com>
Fri, 3 Dec 2010 04:07:13 +0000 (06:07 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 6 Dec 2010 21:01:27 +0000 (16:01 -0500)
 * Stop ANI durring reset to prevent false PHY error reports

Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c

index 1522cf82c16c22c12dfa5a60d34438a1be2dd2ed..0592773ed81a9cc1b48143552a2e9672a970ec42 100644 (file)
@@ -2653,7 +2653,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
                                                        bool skip_pcu)
 {
        struct ath5k_hw *ah = sc->ah;
-       int ret;
+       int ret, ani_mode;
 
        ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "resetting\n");
 
@@ -2661,6 +2661,12 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
        synchronize_irq(sc->irq);
        stop_tasklets(sc);
 
+       /* Save ani mode and disable ANI durring
+        * reset. If we don't we might get false
+        * PHY error interrupts. */
+       ani_mode = ah->ah_sc->ani_state.ani_mode;
+       ath5k_ani_init(ah, ATH5K_ANI_MODE_OFF);
+
        /* We are going to empty hw queues
         * so we should also free any remaining
         * tx buffers */
@@ -2682,7 +2688,7 @@ ath5k_reset(struct ath5k_softc *sc, struct ieee80211_channel *chan,
                goto err;
        }
 
-       ath5k_ani_init(ah, ah->ah_sc->ani_state.ani_mode);
+       ath5k_ani_init(ah, ani_mode);
 
        ah->ah_cal_next_full = jiffies;
        ah->ah_cal_next_ani = jiffies;