From f4331b40a41627abae335bc43627d43d0d2bcb3e Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Fri, 23 Jul 2010 02:08:24 +0000
Subject: [PATCH] ath9k: fix invalid noisefloor measurement values in ht20 mode

SVN-Revision: 22361
---
 .../mac80211/patches/530-ath9k_nf_fix.patch   | 46 +++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 package/mac80211/patches/530-ath9k_nf_fix.patch

diff --git a/package/mac80211/patches/530-ath9k_nf_fix.patch b/package/mac80211/patches/530-ath9k_nf_fix.patch
new file mode 100644
index 0000000000..081c2ab74b
--- /dev/null
+++ b/package/mac80211/patches/530-ath9k_nf_fix.patch
@@ -0,0 +1,46 @@
+--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
+@@ -1508,6 +1508,9 @@ static void ar5008_hw_do_getnf(struct at
+ 	nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR);
+ 	nfarray[2] = sign_extend(nf, 9);
+ 
++	if (!IS_CHAN_HT40(ah->curchan))
++		return;
++
+ 	nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
+ 	nfarray[3] = sign_extend(nf, 9);
+ 
+--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c
++++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
+@@ -477,7 +477,8 @@ static void ar9002_hw_do_getnf(struct at
+ 	nfarray[0] = sign_extend(nf, 9);
+ 
+ 	nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR);
+-	nfarray[3] = sign_extend(nf, 9);
++	if (IS_CHAN_HT40(ah->curchan))
++		nfarray[3] = sign_extend(nf, 9);
+ 
+ 	if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
+ 		return;
+@@ -486,7 +487,8 @@ static void ar9002_hw_do_getnf(struct at
+ 	nfarray[1] = sign_extend(nf, 9);
+ 
+ 	nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR);
+-	nfarray[4] = sign_extend(nf, 9);
++	if (IS_CHAN_HT40(ah->curchan))
++		nfarray[4] = sign_extend(nf, 9);
+ }
+ 
+ static void ar9002_hw_set_nf_limits(struct ath_hw *ah)
+--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+@@ -1029,6 +1029,9 @@ static void ar9003_hw_do_getnf(struct at
+ 	nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR);
+ 	nfarray[2] = sign_extend(nf, 9);
+ 
++	if (!IS_CHAN_HT40(ah->curchan))
++		return;
++
+ 	nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
+ 	nfarray[3] = sign_extend(nf, 9);
+ 
-- 
2.30.2