From 38fddf0082f7d5f90c59333cf2d760025c97d552 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 10 Jun 2012 12:03:33 +0000 Subject: ath9k: add some more ani fixes git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32159 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/577-ath9k_fix_noise_immunity.patch | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 package/mac80211/patches/577-ath9k_fix_noise_immunity.patch (limited to 'package/mac80211/patches/577-ath9k_fix_noise_immunity.patch') diff --git a/package/mac80211/patches/577-ath9k_fix_noise_immunity.patch b/package/mac80211/patches/577-ath9k_fix_noise_immunity.patch new file mode 100644 index 0000000000..d6ef678261 --- /dev/null +++ b/package/mac80211/patches/577-ath9k_fix_noise_immunity.patch @@ -0,0 +1,69 @@ +--- a/drivers/net/wireless/ath/ath9k/ani.c ++++ b/drivers/net/wireless/ath/ath9k/ani.c +@@ -154,9 +154,7 @@ static void ath9k_hw_set_ofdm_nil(struct + aniState->rssiThrLow, aniState->rssiThrHigh); + + if (aniState->update_ani) +- aniState->ofdmNoiseImmunityLevel = +- (immunityLevel > ATH9K_ANI_OFDM_DEF_LEVEL) ? +- immunityLevel : ATH9K_ANI_OFDM_DEF_LEVEL; ++ aniState->ofdmNoiseImmunityLevel = immunityLevel; + + entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel]; + entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel]; +@@ -217,9 +215,7 @@ static void ath9k_hw_set_cck_nil(struct + 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; ++ aniState->cckNoiseImmunityLevel = immunityLevel; + + entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel]; + entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel]; +@@ -285,6 +281,7 @@ void ath9k_ani_reset(struct ath_hw *ah, + 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; +@@ -306,6 +303,11 @@ void ath9k_ani_reset(struct ath_hw *ah, + /* 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)) { +@@ -329,8 +331,8 @@ void ath9k_ani_reset(struct ath_hw *ah, + 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 { + /* +@@ -346,11 +348,9 @@ void ath9k_ani_reset(struct ath_hw *ah, + 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); ++ ath9k_hw_set_cck_nil(ah, cck_nil); + + /* + * enable phy counters if hw supports or if not, enable phy -- cgit v1.2.3