ath9k: more ani fixes
authorFelix Fietkau <nbd@openwrt.org>
Wed, 27 Jun 2012 02:15:25 +0000 (02:15 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 27 Jun 2012 02:15:25 +0000 (02:15 +0000)
SVN-Revision: 32510

package/mac80211/patches/562-ath9k_reduce_ani_interval.patch [new file with mode: 0644]
package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch [new file with mode: 0644]
package/mac80211/patches/564-ath9k_fix_ani_update.patch [new file with mode: 0644]

diff --git a/package/mac80211/patches/562-ath9k_reduce_ani_interval.patch b/package/mac80211/patches/562-ath9k_reduce_ani_interval.patch
new file mode 100644 (file)
index 0000000..e2a0d12
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath9k/ani.h
++++ b/drivers/net/wireless/ath/ath9k/ani.h
+@@ -51,7 +51,7 @@
+ #define ATH9K_ANI_PERIOD                  300
+ /* in ms */
+-#define ATH9K_ANI_POLLINTERVAL            1000
++#define ATH9K_ANI_POLLINTERVAL            100
+ #define HAL_NOISE_IMMUNE_MAX              4
+ #define HAL_SPUR_IMMUNE_MAX               7
diff --git a/package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch b/package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch
new file mode 100644 (file)
index 0000000..7503634
--- /dev/null
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath9k/hw.c
++++ b/drivers/net/wireless/ath/ath9k/hw.c
+@@ -676,10 +676,6 @@ static int __ath9k_hw_init(struct ath_hw
+       if (!AR_SREV_9300_20_OR_LATER(ah))
+               ah->ani_function &= ~ATH9K_ANI_MRC_CCK;
+-      /* disable ANI for 9340 */
+-      if (AR_SREV_9340(ah))
+-              ah->config.enable_ani = false;
+-
+       ath9k_hw_init_mode_regs(ah);
+       if (!ah->is_pciexpress)
diff --git a/package/mac80211/patches/564-ath9k_fix_ani_update.patch b/package/mac80211/patches/564-ath9k_fix_ani_update.patch
new file mode 100644 (file)
index 0000000..91ba67d
--- /dev/null
@@ -0,0 +1,59 @@
+--- a/drivers/net/wireless/ath/ath9k/ani.c
++++ b/drivers/net/wireless/ath/ath9k/ani.c
+@@ -153,9 +153,7 @@ static void ath9k_hw_set_ofdm_nil(struct
+               immunityLevel, BEACON_RSSI(ah),
+               aniState->rssiThrLow, aniState->rssiThrHigh);
+-      if (aniState->update_ani)
+-              aniState->ofdmNoiseImmunityLevel = immunityLevel;
+-
++      aniState->ofdmNoiseImmunityLevel = immunityLevel;
+       entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel];
+       entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel];
+@@ -222,9 +220,7 @@ static void ath9k_hw_set_cck_nil(struct 
+           immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI)
+               immunityLevel = ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI;
+-      if (aniState->update_ani)
+-              aniState->cckNoiseImmunityLevel = immunityLevel;
+-
++      aniState->cckNoiseImmunityLevel = immunityLevel;
+       entry_ofdm = &ofdm_level_table[aniState->ofdmNoiseImmunityLevel];
+       entry_cck = &cck_level_table[aniState->cckNoiseImmunityLevel];
+@@ -338,7 +334,6 @@ void ath9k_ani_reset(struct ath_hw *ah, 
+                               aniState->ofdmNoiseImmunityLevel,
+                               aniState->cckNoiseImmunityLevel);
+-                      aniState->update_ani = false;
+                       ofdm_nil = ATH9K_ANI_OFDM_DEF_LEVEL;
+                       cck_nil = ATH9K_ANI_CCK_DEF_LEVEL;
+               }
+@@ -354,8 +349,6 @@ void ath9k_ani_reset(struct ath_hw *ah, 
+                       is_scanning,
+                       aniState->ofdmNoiseImmunityLevel,
+                       aniState->cckNoiseImmunityLevel);
+-
+-                      aniState->update_ani = true;
+       }
+       ath9k_hw_set_ofdm_nil(ah, ofdm_nil);
+       ath9k_hw_set_cck_nil(ah, cck_nil);
+@@ -538,7 +531,6 @@ void ath9k_hw_ani_init(struct ath_hw *ah
+               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;
+       }
+       /*
+--- a/drivers/net/wireless/ath/ath9k/ani.h
++++ b/drivers/net/wireless/ath/ath9k/ani.h
+@@ -116,7 +116,6 @@ struct ar5416AniState {
+       u8 firstepLevel;
+       u8 ofdmWeakSigDetect;
+       u8 cckWeakSigThreshold;
+-      bool update_ani;
+       u32 listenTime;
+       int32_t rssiThrLow;
+       int32_t rssiThrHigh;