From d4c6868027273aee151dcc201cea4aba2ac172d0 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Wed, 27 Jun 2012 02:15:25 +0000
Subject: [PATCH] ath9k: more ani fixes

SVN-Revision: 32510
---
 .../562-ath9k_reduce_ani_interval.patch       | 11 ++++
 .../patches/563-ath9k_enable_ar9340_ani.patch | 13 ++++
 .../patches/564-ath9k_fix_ani_update.patch    | 59 +++++++++++++++++++
 3 files changed, 83 insertions(+)
 create mode 100644 package/mac80211/patches/562-ath9k_reduce_ani_interval.patch
 create mode 100644 package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch
 create mode 100644 package/mac80211/patches/564-ath9k_fix_ani_update.patch

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
index 000000000000..e2a0d124a38f
--- /dev/null
+++ b/package/mac80211/patches/562-ath9k_reduce_ani_interval.patch
@@ -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
index 000000000000..7503634776fb
--- /dev/null
+++ b/package/mac80211/patches/563-ath9k_enable_ar9340_ani.patch
@@ -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
index 000000000000..91ba67db7bc2
--- /dev/null
+++ b/package/mac80211/patches/564-ath9k_fix_ani_update.patch
@@ -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;
-- 
2.30.2