aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-07-22 22:07:48 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-07-26 15:32:42 -0400
commit866b7780fce95989dfc85f3e372635f5147e0d90 (patch)
tree795a2705b44be3f60f3d4a0ff46fddbee0337197 /drivers/net/wireless/ath
parent4cee78614cfa046a26c4fbf313d5bbacb3ad8efc (diff)
ath9k_hw: fix invalid extension channel noisefloor readings in HT20
When the hardware is configured in HT20 mode, noise floor readings for the extension channel often return invalid values, which keep the values in the NF history buffer at the hardware-specific maximum limit. Fix this by discarding the extension channel values when in HT20 mode. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r--drivers/net/wireless/ath/ath9k/ar5008_phy.c3
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9002_phy.c6
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_phy.c3
3 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar5008_phy.c b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
index 4a910b78de52..3d2c8679bc85 100644
--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
@@ -1506,6 +1506,9 @@ static void ar5008_hw_do_getnf(struct ath_hw *ah,
1506 nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); 1506 nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR);
1507 nfarray[2] = sign_extend(nf, 9); 1507 nfarray[2] = sign_extend(nf, 9);
1508 1508
1509 if (!IS_CHAN_HT40(ah->curchan))
1510 return;
1511
1509 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); 1512 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
1510 nfarray[3] = sign_extend(nf, 9); 1513 nfarray[3] = sign_extend(nf, 9);
1511 1514
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_phy.c b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
index 4922b8d4a938..adbf031fbc5a 100644
--- 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 ath_hw *ah,
477 nfarray[0] = sign_extend(nf, 9); 477 nfarray[0] = sign_extend(nf, 9);
478 478
479 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR); 479 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR);
480 nfarray[3] = sign_extend(nf, 9); 480 if (IS_CHAN_HT40(ah->curchan))
481 nfarray[3] = sign_extend(nf, 9);
481 482
482 if (AR_SREV_9285(ah) || AR_SREV_9271(ah)) 483 if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
483 return; 484 return;
@@ -486,7 +487,8 @@ static void ar9002_hw_do_getnf(struct ath_hw *ah,
486 nfarray[1] = sign_extend(nf, 9); 487 nfarray[1] = sign_extend(nf, 9);
487 488
488 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR); 489 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR);
489 nfarray[4] = sign_extend(nf, 9); 490 if (IS_CHAN_HT40(ah->curchan))
491 nfarray[4] = sign_extend(nf, 9);
490} 492}
491 493
492static void ar9002_hw_set_nf_limits(struct ath_hw *ah) 494static void ar9002_hw_set_nf_limits(struct ath_hw *ah)
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
index 7c93338540ae..a753a431bb13 100644
--- 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 ath_hw *ah,
1029 nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR); 1029 nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR);
1030 nfarray[2] = sign_extend(nf, 9); 1030 nfarray[2] = sign_extend(nf, 9);
1031 1031
1032 if (!IS_CHAN_HT40(ah->curchan))
1033 return;
1034
1032 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); 1035 nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
1033 nfarray[3] = sign_extend(nf, 9); 1036 nfarray[3] = sign_extend(nf, 9);
1034 1037