Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck...
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / ath / ath9k / ani.c
index b4c77f9d74701163c08e20ea4096a5acace22b64..ff007f500feba8176794ca200e2bfd0523d657ff 100644 (file)
@@ -104,11 +104,6 @@ static const struct ani_cck_level_entry cck_level_table[] = {
 #define ATH9K_ANI_CCK_DEF_LEVEL \
        2 /* default level - matches the INI settings */
 
-static bool use_new_ani(struct ath_hw *ah)
-{
-       return AR_SREV_9300_20_OR_LATER(ah) || modparam_force_new_ani;
-}
-
 static void ath9k_hw_update_mibstats(struct ath_hw *ah,
                                     struct ath9k_mib_stats *stats)
 {
@@ -122,8 +117,6 @@ static void ath9k_hw_update_mibstats(struct ath_hw *ah,
 static void ath9k_ani_restart(struct ath_hw *ah)
 {
        struct ar5416AniState *aniState;
-       struct ath_common *common = ath9k_hw_common(ah);
-       u32 ofdm_base = 0, cck_base = 0;
 
        if (!DO_ANI(ah))
                return;
@@ -131,18 +124,10 @@ static void ath9k_ani_restart(struct ath_hw *ah)
        aniState = &ah->curchan->ani;
        aniState->listenTime = 0;
 
-       if (!use_new_ani(ah)) {
-               ofdm_base = AR_PHY_COUNTMAX - ah->config.ofdm_trig_high;
-               cck_base = AR_PHY_COUNTMAX - ah->config.cck_trig_high;
-       }
-
-       ath_dbg(common, ANI, "Writing ofdmbase=%u   cckbase=%u\n",
-               ofdm_base, cck_base);
-
        ENABLE_REGWRITE_BUFFER(ah);
 
-       REG_WRITE(ah, AR_PHY_ERR_1, ofdm_base);
-       REG_WRITE(ah, AR_PHY_ERR_2, cck_base);
+       REG_WRITE(ah, AR_PHY_ERR_1, 0);
+       REG_WRITE(ah, AR_PHY_ERR_2, 0);
        REG_WRITE(ah, AR_PHY_ERR_MASK_1, AR_PHY_ERR_OFDM_TIMING);
        REG_WRITE(ah, AR_PHY_ERR_MASK_2, AR_PHY_ERR_CCK_TIMING);
 
@@ -154,129 +139,23 @@ static void ath9k_ani_restart(struct ath_hw *ah)
        aniState->cckPhyErrCount = 0;
 }
 
-static void ath9k_hw_ani_ofdm_err_trigger_old(struct ath_hw *ah)
-{
-       struct ieee80211_conf *conf = &ath9k_hw_common(ah)->hw->conf;
-       struct ar5416AniState *aniState;
-       int32_t rssi;
-
-       aniState = &ah->curchan->ani;
-
-       if (aniState->noiseImmunityLevel < HAL_NOISE_IMMUNE_MAX) {
-               if (ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL,
-                                        aniState->noiseImmunityLevel + 1)) {
-                       return;
-               }
-       }
-
-       if (aniState->spurImmunityLevel < HAL_SPUR_IMMUNE_MAX) {
-               if (ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL,
-                                        aniState->spurImmunityLevel + 1)) {
-                       return;
-               }
-       }
-
-       if (ah->opmode == NL80211_IFTYPE_AP) {
-               if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) {
-                       ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
-                                            aniState->firstepLevel + 1);
-               }
-               return;
-       }
-       rssi = BEACON_RSSI(ah);
-       if (rssi > aniState->rssiThrHigh) {
-               if (!aniState->ofdmWeakSigDetectOff) {
-                       if (ath9k_hw_ani_control(ah,
-                                        ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
-                                        false)) {
-                               ath9k_hw_ani_control(ah,
-                                       ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0);
-                               return;
-                       }
-               }
-               if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) {
-                       ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
-                                            aniState->firstepLevel + 1);
-                       return;
-               }
-       } else if (rssi > aniState->rssiThrLow) {
-               if (aniState->ofdmWeakSigDetectOff)
-                       ath9k_hw_ani_control(ah,
-                                    ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
-                                    true);
-               if (aniState->firstepLevel < HAL_FIRST_STEP_MAX)
-                       ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
-                                            aniState->firstepLevel + 1);
-               return;
-       } else {
-               if ((conf->channel->band == IEEE80211_BAND_2GHZ) &&
-                   !conf_is_ht(conf)) {
-                       if (!aniState->ofdmWeakSigDetectOff)
-                               ath9k_hw_ani_control(ah,
-                                    ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
-                                    false);
-                       if (aniState->firstepLevel > 0)
-                               ath9k_hw_ani_control(ah,
-                                            ATH9K_ANI_FIRSTEP_LEVEL, 0);
-                       return;
-               }
-       }
-}
-
-static void ath9k_hw_ani_cck_err_trigger_old(struct ath_hw *ah)
-{
-       struct ieee80211_conf *conf = &ath9k_hw_common(ah)->hw->conf;
-       struct ar5416AniState *aniState;
-       int32_t rssi;
-
-       aniState = &ah->curchan->ani;
-       if (aniState->noiseImmunityLevel < HAL_NOISE_IMMUNE_MAX) {
-               if (ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL,
-                                        aniState->noiseImmunityLevel + 1)) {
-                       return;
-               }
-       }
-       if (ah->opmode == NL80211_IFTYPE_AP) {
-               if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) {
-                       ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
-                                            aniState->firstepLevel + 1);
-               }
-               return;
-       }
-       rssi = BEACON_RSSI(ah);
-       if (rssi > aniState->rssiThrLow) {
-               if (aniState->firstepLevel < HAL_FIRST_STEP_MAX)
-                       ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
-                                            aniState->firstepLevel + 1);
-       } else {
-               if ((conf->channel->band == IEEE80211_BAND_2GHZ) &&
-                   !conf_is_ht(conf)) {
-                       if (aniState->firstepLevel > 0)
-                               ath9k_hw_ani_control(ah,
-                                            ATH9K_ANI_FIRSTEP_LEVEL, 0);
-               }
-       }
-}
-
 /* Adjust the OFDM Noise Immunity Level */
-static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel)
+static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel,
+                                 bool scan)
 {
        struct ar5416AniState *aniState = &ah->curchan->ani;
        struct ath_common *common = ath9k_hw_common(ah);
        const struct ani_ofdm_level_entry *entry_ofdm;
        const struct ani_cck_level_entry *entry_cck;
-
-       aniState->noiseFloor = BEACON_RSSI(ah);
+       bool weak_sig;
 
        ath_dbg(common, ANI, "**** ofdmlevel %d=>%d, rssi=%d[lo=%d hi=%d]\n",
                aniState->ofdmNoiseImmunityLevel,
-               immunityLevel, aniState->noiseFloor,
+               immunityLevel, BEACON_RSSI(ah),
                aniState->rssiThrLow, aniState->rssiThrHigh);
 
-       if (aniState->update_ani)
-               aniState->ofdmNoiseImmunityLevel =
-                       (immunityLevel > ATH9K_ANI_OFDM_DEF_LEVEL) ?
-                       immunityLevel : ATH9K_ANI_OFDM_DEF_LEVEL;
+       if (!scan)
+               aniState->ofdmNoiseImmunityLevel = immunityLevel;
 
        entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel];
        entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel];
@@ -292,12 +171,22 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel)
                                     ATH9K_ANI_FIRSTEP_LEVEL,
                                     entry_ofdm->fir_step_level);
 
-       if ((aniState->noiseFloor >= aniState->rssiThrHigh) &&
-           (!aniState->ofdmWeakSigDetectOff !=
-            entry_ofdm->ofdm_weak_signal_on)) {
+       weak_sig = entry_ofdm->ofdm_weak_signal_on;
+       if (ah->opmode == NL80211_IFTYPE_STATION &&
+           BEACON_RSSI(ah) <= aniState->rssiThrHigh)
+               weak_sig = true;
+
+       if (aniState->ofdmWeakSigDetect != weak_sig)
                        ath9k_hw_ani_control(ah,
                                ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
                                entry_ofdm->ofdm_weak_signal_on);
+
+       if (aniState->ofdmNoiseImmunityLevel >= ATH9K_ANI_OFDM_DEF_LEVEL) {
+               ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH;
+               ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI;
+       } else {
+               ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH_BELOW_INI;
+               ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW;
        }
 }
 
@@ -308,43 +197,35 @@ static void ath9k_hw_ani_ofdm_err_trigger(struct ath_hw *ah)
        if (!DO_ANI(ah))
                return;
 
-       if (!use_new_ani(ah)) {
-               ath9k_hw_ani_ofdm_err_trigger_old(ah);
-               return;
-       }
-
        aniState = &ah->curchan->ani;
 
        if (aniState->ofdmNoiseImmunityLevel < ATH9K_ANI_OFDM_MAX_LEVEL)
-               ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel + 1);
+               ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel + 1, false);
 }
 
 /*
  * Set the ANI settings to match an CCK level.
  */
-static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel)
+static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel,
+                                bool scan)
 {
        struct ar5416AniState *aniState = &ah->curchan->ani;
        struct ath_common *common = ath9k_hw_common(ah);
        const struct ani_ofdm_level_entry *entry_ofdm;
        const struct ani_cck_level_entry *entry_cck;
 
-       aniState->noiseFloor = BEACON_RSSI(ah);
        ath_dbg(common, ANI, "**** ccklevel %d=>%d, rssi=%d[lo=%d hi=%d]\n",
                aniState->cckNoiseImmunityLevel, immunityLevel,
-               aniState->noiseFloor, aniState->rssiThrLow,
+               BEACON_RSSI(ah), aniState->rssiThrLow,
                aniState->rssiThrHigh);
 
-       if ((ah->opmode == NL80211_IFTYPE_STATION ||
-            ah->opmode == NL80211_IFTYPE_ADHOC) &&
-           aniState->noiseFloor <= aniState->rssiThrLow &&
+       if (ah->opmode == NL80211_IFTYPE_STATION &&
+           BEACON_RSSI(ah) <= aniState->rssiThrLow &&
            immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI)
                immunityLevel = ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI;
 
-       if (aniState->update_ani)
-               aniState->cckNoiseImmunityLevel =
-                       (immunityLevel > ATH9K_ANI_CCK_DEF_LEVEL) ?
-                       immunityLevel : ATH9K_ANI_CCK_DEF_LEVEL;
+       if (!scan)
+               aniState->cckNoiseImmunityLevel = immunityLevel;
 
        entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel];
        entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel];
@@ -359,7 +240,7 @@ static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel)
        if (!AR_SREV_9300_20_OR_LATER(ah) || AR_SREV_9485(ah))
                return;
 
-       if (aniState->mrcCCKOff == entry_cck->mrc_cck_on)
+       if (aniState->mrcCCK != entry_cck->mrc_cck_on)
                ath9k_hw_ani_control(ah,
                                     ATH9K_ANI_MRC_CCK,
                                     entry_cck->mrc_cck_on);
@@ -372,68 +253,11 @@ static void ath9k_hw_ani_cck_err_trigger(struct ath_hw *ah)
        if (!DO_ANI(ah))
                return;
 
-       if (!use_new_ani(ah)) {
-               ath9k_hw_ani_cck_err_trigger_old(ah);
-               return;
-       }
-
        aniState = &ah->curchan->ani;
 
        if (aniState->cckNoiseImmunityLevel < ATH9K_ANI_CCK_MAX_LEVEL)
-               ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel + 1);
-}
-
-static void ath9k_hw_ani_lower_immunity_old(struct ath_hw *ah)
-{
-       struct ar5416AniState *aniState;
-       int32_t rssi;
-
-       aniState = &ah->curchan->ani;
-
-       if (ah->opmode == NL80211_IFTYPE_AP) {
-               if (aniState->firstepLevel > 0) {
-                       if (ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
-                                                aniState->firstepLevel - 1))
-                               return;
-               }
-       } else {
-               rssi = BEACON_RSSI(ah);
-               if (rssi > aniState->rssiThrHigh) {
-                       /* XXX: Handle me */
-               } else if (rssi > aniState->rssiThrLow) {
-                       if (aniState->ofdmWeakSigDetectOff) {
-                               if (ath9k_hw_ani_control(ah,
-                                        ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
-                                        true))
-                                       return;
-                       }
-                       if (aniState->firstepLevel > 0) {
-                               if (ath9k_hw_ani_control(ah,
-                                        ATH9K_ANI_FIRSTEP_LEVEL,
-                                        aniState->firstepLevel - 1))
-                                       return;
-                       }
-               } else {
-                       if (aniState->firstepLevel > 0) {
-                               if (ath9k_hw_ani_control(ah,
-                                        ATH9K_ANI_FIRSTEP_LEVEL,
-                                        aniState->firstepLevel - 1))
-                                       return;
-                       }
-               }
-       }
-
-       if (aniState->spurImmunityLevel > 0) {
-               if (ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL,
-                                        aniState->spurImmunityLevel - 1))
-                       return;
-       }
-
-       if (aniState->noiseImmunityLevel > 0) {
-               ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL,
-                                    aniState->noiseImmunityLevel - 1);
-               return;
-       }
+               ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel + 1,
+                                    false);
 }
 
 /*
@@ -446,87 +270,18 @@ static void ath9k_hw_ani_lower_immunity(struct ath_hw *ah)
 
        aniState = &ah->curchan->ani;
 
-       if (!use_new_ani(ah)) {
-               ath9k_hw_ani_lower_immunity_old(ah);
-               return;
-       }
-
        /* lower OFDM noise immunity */
        if (aniState->ofdmNoiseImmunityLevel > 0 &&
            (aniState->ofdmsTurn || aniState->cckNoiseImmunityLevel == 0)) {
-               ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel - 1);
+               ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel - 1,
+                                     false);
                return;
        }
 
        /* lower CCK noise immunity */
        if (aniState->cckNoiseImmunityLevel > 0)
-               ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel - 1);
-}
-
-static void ath9k_ani_reset_old(struct ath_hw *ah, bool is_scanning)
-{
-       struct ar5416AniState *aniState;
-       struct ath9k_channel *chan = ah->curchan;
-       struct ath_common *common = ath9k_hw_common(ah);
-
-       if (!DO_ANI(ah))
-               return;
-
-       aniState = &ah->curchan->ani;
-
-       if (ah->opmode != NL80211_IFTYPE_STATION
-           && ah->opmode != NL80211_IFTYPE_ADHOC) {
-               ath_dbg(common, ANI, "Reset ANI state opmode %u\n", ah->opmode);
-               ah->stats.ast_ani_reset++;
-
-               if (ah->opmode == NL80211_IFTYPE_AP) {
-                       /*
-                        * ath9k_hw_ani_control() will only process items set on
-                        * ah->ani_function
-                        */
-                       if (IS_CHAN_2GHZ(chan))
-                               ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
-                                                   ATH9K_ANI_FIRSTEP_LEVEL);
-                       else
-                               ah->ani_function = 0;
-               }
-
-               ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, 0);
-               ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0);
-               ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0);
-               ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
-                                    !ATH9K_ANI_USE_OFDM_WEAK_SIG);
-               ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR,
-                                    ATH9K_ANI_CCK_WEAK_SIG_THR);
-
-               ath9k_ani_restart(ah);
-               return;
-       }
-
-       if (aniState->noiseImmunityLevel != 0)
-               ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL,
-                                    aniState->noiseImmunityLevel);
-       if (aniState->spurImmunityLevel != 0)
-               ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL,
-                                    aniState->spurImmunityLevel);
-       if (aniState->ofdmWeakSigDetectOff)
-               ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
-                                    !aniState->ofdmWeakSigDetectOff);
-       if (aniState->cckWeakSigThreshold)
-               ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR,
-                                    aniState->cckWeakSigThreshold);
-       if (aniState->firstepLevel != 0)
-               ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
-                                    aniState->firstepLevel);
-
-       ath9k_ani_restart(ah);
-
-       ENABLE_REGWRITE_BUFFER(ah);
-
-       REG_WRITE(ah, AR_PHY_ERR_MASK_1, AR_PHY_ERR_OFDM_TIMING);
-       REG_WRITE(ah, AR_PHY_ERR_MASK_2, AR_PHY_ERR_CCK_TIMING);
-
-       REGWRITE_BUFFER_FLUSH(ah);
+               ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel - 1,
+                                    false);
 }
 
 /*
@@ -539,13 +294,11 @@ void ath9k_ani_reset(struct ath_hw *ah, bool is_scanning)
        struct ar5416AniState *aniState = &ah->curchan->ani;
        struct ath9k_channel *chan = ah->curchan;
        struct ath_common *common = ath9k_hw_common(ah);
+       int ofdm_nil, cck_nil;
 
        if (!DO_ANI(ah))
                return;
 
-       if (!use_new_ani(ah))
-               return ath9k_ani_reset_old(ah, is_scanning);
-
        BUG_ON(aniState == NULL);
        ah->stats.ast_ani_reset++;
 
@@ -563,6 +316,11 @@ void ath9k_ani_reset(struct ath_hw *ah, bool is_scanning)
        /* always allow mode (on/off) to be controlled */
        ah->ani_function |= ATH9K_ANI_MODE;
 
+       ofdm_nil = max_t(int, ATH9K_ANI_OFDM_DEF_LEVEL,
+                        aniState->ofdmNoiseImmunityLevel);
+       cck_nil = max_t(int, ATH9K_ANI_CCK_DEF_LEVEL,
+                        aniState->cckNoiseImmunityLevel);
+
        if (is_scanning ||
            (ah->opmode != NL80211_IFTYPE_STATION &&
             ah->opmode != NL80211_IFTYPE_ADHOC)) {
@@ -585,9 +343,8 @@ void ath9k_ani_reset(struct ath_hw *ah, bool is_scanning)
                                aniState->ofdmNoiseImmunityLevel,
                                aniState->cckNoiseImmunityLevel);
 
-                       aniState->update_ani = false;
-                       ath9k_hw_set_ofdm_nil(ah, ATH9K_ANI_OFDM_DEF_LEVEL);
-                       ath9k_hw_set_cck_nil(ah, ATH9K_ANI_CCK_DEF_LEVEL);
+                       ofdm_nil = ATH9K_ANI_OFDM_DEF_LEVEL;
+                       cck_nil = ATH9K_ANI_CCK_DEF_LEVEL;
                }
        } else {
                /*
@@ -601,13 +358,9 @@ void ath9k_ani_reset(struct ath_hw *ah, bool is_scanning)
                        is_scanning,
                        aniState->ofdmNoiseImmunityLevel,
                        aniState->cckNoiseImmunityLevel);
-
-                       aniState->update_ani = true;
-                       ath9k_hw_set_ofdm_nil(ah,
-                                             aniState->ofdmNoiseImmunityLevel);
-                       ath9k_hw_set_cck_nil(ah,
-                                            aniState->cckNoiseImmunityLevel);
        }
+       ath9k_hw_set_ofdm_nil(ah, ofdm_nil, is_scanning);
+       ath9k_hw_set_cck_nil(ah, cck_nil, is_scanning);
 
        /*
         * enable phy counters if hw supports or if not, enable phy
@@ -627,9 +380,6 @@ static bool ath9k_hw_ani_read_counters(struct ath_hw *ah)
 {
        struct ath_common *common = ath9k_hw_common(ah);
        struct ar5416AniState *aniState = &ah->curchan->ani;
-       u32 ofdm_base = 0;
-       u32 cck_base = 0;
-       u32 ofdmPhyErrCnt, cckPhyErrCnt;
        u32 phyCnt1, phyCnt2;
        int32_t listenTime;
 
@@ -642,11 +392,6 @@ static bool ath9k_hw_ani_read_counters(struct ath_hw *ah)
                return false;
        }
 
-       if (!use_new_ani(ah)) {
-               ofdm_base = AR_PHY_COUNTMAX - ah->config.ofdm_trig_high;
-               cck_base = AR_PHY_COUNTMAX - ah->config.cck_trig_high;
-       }
-
        aniState->listenTime += listenTime;
 
        ath9k_hw_update_mibstats(ah, &ah->ah_mibStats);
@@ -654,35 +399,12 @@ static bool ath9k_hw_ani_read_counters(struct ath_hw *ah)
        phyCnt1 = REG_READ(ah, AR_PHY_ERR_1);
        phyCnt2 = REG_READ(ah, AR_PHY_ERR_2);
 
-       if (!use_new_ani(ah) && (phyCnt1 < ofdm_base || phyCnt2 < cck_base)) {
-               if (phyCnt1 < ofdm_base) {
-                       ath_dbg(common, ANI,
-                               "phyCnt1 0x%x, resetting counter value to 0x%x\n",
-                               phyCnt1, ofdm_base);
-                       REG_WRITE(ah, AR_PHY_ERR_1, ofdm_base);
-                       REG_WRITE(ah, AR_PHY_ERR_MASK_1,
-                                 AR_PHY_ERR_OFDM_TIMING);
-               }
-               if (phyCnt2 < cck_base) {
-                       ath_dbg(common, ANI,
-                               "phyCnt2 0x%x, resetting counter value to 0x%x\n",
-                               phyCnt2, cck_base);
-                       REG_WRITE(ah, AR_PHY_ERR_2, cck_base);
-                       REG_WRITE(ah, AR_PHY_ERR_MASK_2,
-                                 AR_PHY_ERR_CCK_TIMING);
-               }
-               return false;
-       }
+       ah->stats.ast_ani_ofdmerrs += phyCnt1 - aniState->ofdmPhyErrCount;
+       aniState->ofdmPhyErrCount = phyCnt1;
 
-       ofdmPhyErrCnt = phyCnt1 - ofdm_base;
-       ah->stats.ast_ani_ofdmerrs +=
-               ofdmPhyErrCnt - aniState->ofdmPhyErrCount;
-       aniState->ofdmPhyErrCount = ofdmPhyErrCnt;
+       ah->stats.ast_ani_cckerrs += phyCnt2 - aniState->cckPhyErrCount;
+       aniState->cckPhyErrCount = phyCnt2;
 
-       cckPhyErrCnt = phyCnt2 - cck_base;
-       ah->stats.ast_ani_cckerrs +=
-               cckPhyErrCnt - aniState->cckPhyErrCount;
-       aniState->cckPhyErrCount = cckPhyErrCnt;
        return true;
 }
 
@@ -716,21 +438,10 @@ void ath9k_hw_ani_monitor(struct ath_hw *ah, struct ath9k_channel *chan)
 
        if (aniState->listenTime > ah->aniperiod) {
                if (cckPhyErrRate < ah->config.cck_trig_low &&
-                   ((ofdmPhyErrRate < ah->config.ofdm_trig_low &&
-                     aniState->ofdmNoiseImmunityLevel <
-                     ATH9K_ANI_OFDM_DEF_LEVEL) ||
-                    (ofdmPhyErrRate < ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI &&
-                     aniState->ofdmNoiseImmunityLevel >=
-                     ATH9K_ANI_OFDM_DEF_LEVEL))) {
+                   ofdmPhyErrRate < ah->config.ofdm_trig_low) {
                        ath9k_hw_ani_lower_immunity(ah);
                        aniState->ofdmsTurn = !aniState->ofdmsTurn;
-               } else if ((ofdmPhyErrRate > ah->config.ofdm_trig_high &&
-                           aniState->ofdmNoiseImmunityLevel >=
-                           ATH9K_ANI_OFDM_DEF_LEVEL) ||
-                          (ofdmPhyErrRate >
-                           ATH9K_ANI_OFDM_TRIG_HIGH_BELOW_INI &&
-                           aniState->ofdmNoiseImmunityLevel <
-                           ATH9K_ANI_OFDM_DEF_LEVEL)) {
+               } else if (ofdmPhyErrRate > ah->config.ofdm_trig_high) {
                        ath9k_hw_ani_ofdm_err_trigger(ah);
                        aniState->ofdmsTurn = false;
                } else if (cckPhyErrRate > ah->config.cck_trig_high) {
@@ -778,49 +489,6 @@ void ath9k_hw_disable_mib_counters(struct ath_hw *ah)
 }
 EXPORT_SYMBOL(ath9k_hw_disable_mib_counters);
 
-/*
- * Process a MIB interrupt.  We may potentially be invoked because
- * any of the MIB counters overflow/trigger so don't assume we're
- * here because a PHY error counter triggered.
- */
-void ath9k_hw_proc_mib_event(struct ath_hw *ah)
-{
-       u32 phyCnt1, phyCnt2;
-
-       /* Reset these counters regardless */
-       REG_WRITE(ah, AR_FILT_OFDM, 0);
-       REG_WRITE(ah, AR_FILT_CCK, 0);
-       if (!(REG_READ(ah, AR_SLP_MIB_CTRL) & AR_SLP_MIB_PENDING))
-               REG_WRITE(ah, AR_SLP_MIB_CTRL, AR_SLP_MIB_CLEAR);
-
-       /* Clear the mib counters and save them in the stats */
-       ath9k_hw_update_mibstats(ah, &ah->ah_mibStats);
-
-       if (!DO_ANI(ah)) {
-               /*
-                * We must always clear the interrupt cause by
-                * resetting the phy error regs.
-                */
-               REG_WRITE(ah, AR_PHY_ERR_1, 0);
-               REG_WRITE(ah, AR_PHY_ERR_2, 0);
-               return;
-       }
-
-       /* NB: these are not reset-on-read */
-       phyCnt1 = REG_READ(ah, AR_PHY_ERR_1);
-       phyCnt2 = REG_READ(ah, AR_PHY_ERR_2);
-       if (((phyCnt1 & AR_MIBCNT_INTRMASK) == AR_MIBCNT_INTRMASK) ||
-           ((phyCnt2 & AR_MIBCNT_INTRMASK) == AR_MIBCNT_INTRMASK)) {
-
-               if (!use_new_ani(ah))
-                       ath9k_hw_ani_read_counters(ah);
-
-               /* NB: always restart to insure the h/w counters are reset */
-               ath9k_ani_restart(ah);
-       }
-}
-EXPORT_SYMBOL(ath9k_hw_proc_mib_event);
-
 void ath9k_hw_ani_setup(struct ath_hw *ah)
 {
        int i;
@@ -845,66 +513,37 @@ void ath9k_hw_ani_init(struct ath_hw *ah)
 
        ath_dbg(common, ANI, "Initialize ANI\n");
 
-       if (use_new_ani(ah)) {
-               ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH_NEW;
-               ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_NEW;
+       ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH;
+       ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW;
 
-               ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH_NEW;
-               ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW_NEW;
-       } else {
-               ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH_OLD;
-               ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_OLD;
-
-               ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH_OLD;
-               ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW_OLD;
-       }
+       ah->config.cck_trig_high = ATH9K_ANI_CCK_TRIG_HIGH;
+       ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW;
 
        for (i = 0; i < ARRAY_SIZE(ah->channels); i++) {
                struct ath9k_channel *chan = &ah->channels[i];
                struct ar5416AniState *ani = &chan->ani;
 
-               if (use_new_ani(ah)) {
-                       ani->spurImmunityLevel =
-                               ATH9K_ANI_SPUR_IMMUNE_LVL_NEW;
+               ani->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL;
 
-                       ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_NEW;
+               ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL;
 
-                       if (AR_SREV_9300_20_OR_LATER(ah))
-                               ani->mrcCCKOff =
-                                       !ATH9K_ANI_ENABLE_MRC_CCK;
-                       else
-                               ani->mrcCCKOff = true;
-
-                       ani->ofdmsTurn = true;
-               } else {
-                       ani->spurImmunityLevel =
-                               ATH9K_ANI_SPUR_IMMUNE_LVL_OLD;
-                       ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL_OLD;
-
-                       ani->cckWeakSigThreshold =
-                               ATH9K_ANI_CCK_WEAK_SIG_THR;
-               }
+               ani->mrcCCK = AR_SREV_9300_20_OR_LATER(ah) ? true : false;
+
+               ani->ofdmsTurn = true;
 
                ani->rssiThrHigh = ATH9K_ANI_RSSI_THR_HIGH;
                ani->rssiThrLow = ATH9K_ANI_RSSI_THR_LOW;
-               ani->ofdmWeakSigDetectOff =
-                       !ATH9K_ANI_USE_OFDM_WEAK_SIG;
+               ani->ofdmWeakSigDetect = ATH9K_ANI_USE_OFDM_WEAK_SIG;
                ani->cckNoiseImmunityLevel = ATH9K_ANI_CCK_DEF_LEVEL;
                ani->ofdmNoiseImmunityLevel = ATH9K_ANI_OFDM_DEF_LEVEL;
-               ani->update_ani = false;
        }
 
        /*
         * since we expect some ongoing maintenance on the tables, let's sanity
         * check here default level should not modify INI setting.
         */
-       if (use_new_ani(ah)) {
-               ah->aniperiod = ATH9K_ANI_PERIOD_NEW;
-               ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL_NEW;
-       } else {
-               ah->aniperiod = ATH9K_ANI_PERIOD_OLD;
-               ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL_OLD;
-       }
+       ah->aniperiod = ATH9K_ANI_PERIOD;
+       ah->config.ani_poll_interval = ATH9K_ANI_POLLINTERVAL;
 
        if (ah->config.enable_ani)
                ah->proc_phyerr |= HAL_PROCESS_ANI;