Commit 058a6385 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville
Browse files

ath9k_hw: clean up ANI OFDM trigger handling



Adjust ah->config.ofdm_trig_{high,low} when setting noise immunity values
to simplify threshold checks in ath9k_hw_ani_monitor

Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 1e8f0a31
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -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) {