ath9k_hw: clean up ANI OFDM trigger handling
authorFelix Fietkau <nbd@openwrt.org>
Fri, 15 Jun 2012 13:25:27 +0000 (15:25 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 20 Jun 2012 18:44:44 +0000 (14:44 -0400)
Adjust ah->config.ofdm_trig_{high,low} when setting noise immunity values
to simplify threshold checks in ath9k_hw_ani_monitor

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ani.c

index 6ee0875df469f1980a5e28d9202de7c9dd85eaff..a90aa0b4c8f1a9f718c1c44eda1eff73f770d5c8 100644 (file)
@@ -179,6 +179,14 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel)
                        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;
+       }
 }
 
 static void ath9k_hw_ani_ofdm_err_trigger(struct ath_hw *ah)
@@ -428,21 +436,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) {