|
@@ -185,10 +185,18 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel,
|
|
ah->opmode != NL80211_IFTYPE_STATION)
|
|
ah->opmode != NL80211_IFTYPE_STATION)
|
|
weak_sig = true;
|
|
weak_sig = true;
|
|
|
|
|
|
|
|
+ /* Older chipsets are more sensitive to high PHY error counts */
|
|
|
|
+ else if (!AR_SREV_9300_20_OR_LATER(ah) &&
|
|
|
|
+ aniState->ofdmNoiseImmunityLevel >= 8)
|
|
|
|
+ weak_sig = false;
|
|
|
|
+
|
|
if (aniState->ofdmWeakSigDetect != weak_sig)
|
|
if (aniState->ofdmWeakSigDetect != weak_sig)
|
|
ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
|
|
ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
|
|
weak_sig);
|
|
weak_sig);
|
|
|
|
|
|
|
|
+ if (!AR_SREV_9300_20_OR_LATER(ah))
|
|
|
|
+ return;
|
|
|
|
+
|
|
if (aniState->ofdmNoiseImmunityLevel >= ATH9K_ANI_OFDM_DEF_LEVEL) {
|
|
if (aniState->ofdmNoiseImmunityLevel >= ATH9K_ANI_OFDM_DEF_LEVEL) {
|
|
ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH;
|
|
ah->config.ofdm_trig_high = ATH9K_ANI_OFDM_TRIG_HIGH;
|
|
ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI;
|
|
ah->config.ofdm_trig_low = ATH9K_ANI_OFDM_TRIG_LOW_ABOVE_INI;
|
|
@@ -485,10 +493,17 @@ void ath9k_hw_ani_init(struct ath_hw *ah)
|
|
|
|
|
|
ath_dbg(common, ANI, "Initialize ANI\n");
|
|
ath_dbg(common, ANI, "Initialize ANI\n");
|
|
|
|
|
|
- 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;
|
|
|
|
- ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW;
|
|
|
|
|
|
+ if (AR_SREV_9300_20_OR_LATER(ah)) {
|
|
|
|
+ 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;
|
|
|
|
+ ah->config.cck_trig_low = ATH9K_ANI_CCK_TRIG_LOW;
|
|
|
|
+ } 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;
|
|
|
|
+ }
|
|
|
|
|
|
ani->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL;
|
|
ani->spurImmunityLevel = ATH9K_ANI_SPUR_IMMUNE_LVL;
|
|
ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL;
|
|
ani->firstepLevel = ATH9K_ANI_FIRSTEP_LVL;
|