aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-07-27 09:01:04 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-08-08 16:04:16 -0400
commit071bfefd6849e9acc12ca26f4f897cd907e81d1b (patch)
treeb52b59ffbb65dd857161e248dcb8df47f5bf2471 /drivers/net/wireless
parente832bf1032f8279d7df712faa9aaab6ba897c2c5 (diff)
ath9k_hw: fix calculated runtime tx power limit
Use the previously calculated maximum of all rates instead of just the one from the lowest rate of the selected PHY mode. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/ath/ath9k/ar9003_eeprom.c20
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_4k.c9
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_9287.c7
-rw-r--r--drivers/net/wireless/ath/ath9k/eeprom_def.c11
4 files changed, 1 insertions, 46 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
index d109c25417f4..184abb6658e4 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
@@ -4922,25 +4922,7 @@ static void ath9k_hw_ar9300_set_txpower(struct ath_hw *ah,
4922 "TPC[%02d] 0x%08x\n", i, targetPowerValT2[i]); 4922 "TPC[%02d] 0x%08x\n", i, targetPowerValT2[i]);
4923 } 4923 }
4924 4924
4925 /* 4925 ah->txpower_limit = regulatory->max_power_level;
4926 * This is the TX power we send back to driver core,
4927 * and it can use to pass to userspace to display our
4928 * currently configured TX power setting.
4929 *
4930 * Since power is rate dependent, use one of the indices
4931 * from the AR9300_Rates enum to select an entry from
4932 * targetPowerValT2[] to report. Currently returns the
4933 * power for HT40 MCS 0, HT20 MCS 0, or OFDM 6 Mbps
4934 * as CCK power is less interesting (?).
4935 */
4936 i = ALL_TARGET_LEGACY_6_24; /* legacy */
4937 if (IS_CHAN_HT40(chan))
4938 i = ALL_TARGET_HT40_0_8_16; /* ht40 */
4939 else if (IS_CHAN_HT20(chan))
4940 i = ALL_TARGET_HT20_0_8_16; /* ht20 */
4941
4942 ah->txpower_limit = targetPowerValT2[i];
4943 regulatory->max_power_level = targetPowerValT2[i];
4944 4926
4945 /* Write target power array to registers */ 4927 /* Write target power array to registers */
4946 ar9003_hw_tx_power_regwrite(ah, targetPowerValT2); 4928 ar9003_hw_tx_power_regwrite(ah, targetPowerValT2);
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_4k.c b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
index bf64d67b44fe..abf40d3ed344 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
@@ -607,15 +607,6 @@ static void ath9k_hw_4k_set_txpower(struct ath_hw *ah,
607 if (test) 607 if (test)
608 return; 608 return;
609 609
610 /* Update regulatory */
611 i = rate6mb;
612 if (IS_CHAN_HT40(chan))
613 i = rateHt40_0;
614 else if (IS_CHAN_HT20(chan))
615 i = rateHt20_0;
616
617 regulatory->max_power_level = ratesArray[i];
618
619 if (AR_SREV_9280_20_OR_LATER(ah)) { 610 if (AR_SREV_9280_20_OR_LATER(ah)) {
620 for (i = 0; i < Ar5416RateSize; i++) 611 for (i = 0; i < Ar5416RateSize; i++)
621 ratesArray[i] -= AR5416_PWR_TABLE_OFFSET_DB * 2; 612 ratesArray[i] -= AR5416_PWR_TABLE_OFFSET_DB * 2;
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_9287.c b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
index a65d2a5deae1..604312cfe8cb 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
@@ -746,13 +746,6 @@ static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah,
746 if (test) 746 if (test)
747 return; 747 return;
748 748
749 if (IS_CHAN_2GHZ(chan))
750 i = rate1l;
751 else
752 i = rate6mb;
753
754 regulatory->max_power_level = ratesArray[i];
755
756 if (AR_SREV_9280_20_OR_LATER(ah)) { 749 if (AR_SREV_9280_20_OR_LATER(ah)) {
757 for (i = 0; i < Ar5416RateSize; i++) 750 for (i = 0; i < Ar5416RateSize; i++)
758 ratesArray[i] -= AR9287_PWR_TABLE_OFFSET_DB * 2; 751 ratesArray[i] -= AR9287_PWR_TABLE_OFFSET_DB * 2;
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_def.c b/drivers/net/wireless/ath/ath9k/eeprom_def.c
index b665837635fc..85057e074bfc 100644
--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
@@ -1167,17 +1167,6 @@ static void ath9k_hw_def_set_txpower(struct ath_hw *ah,
1167 regulatory->max_power_level = ratesArray[i]; 1167 regulatory->max_power_level = ratesArray[i];
1168 } 1168 }
1169 1169
1170 if (!test) {
1171 i = rate6mb;
1172
1173 if (IS_CHAN_HT40(chan))
1174 i = rateHt40_0;
1175 else if (IS_CHAN_HT20(chan))
1176 i = rateHt20_0;
1177
1178 regulatory->max_power_level = ratesArray[i];
1179 }
1180
1181 switch(ar5416_get_ntxchains(ah->txchainmask)) { 1170 switch(ar5416_get_ntxchains(ah->txchainmask)) {
1182 case 1: 1171 case 1:
1183 break; 1172 break;