diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-07-27 09:01:04 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-08-08 16:04:16 -0400 |
commit | 071bfefd6849e9acc12ca26f4f897cd907e81d1b (patch) | |
tree | b52b59ffbb65dd857161e248dcb8df47f5bf2471 /drivers/net/wireless | |
parent | e832bf1032f8279d7df712faa9aaab6ba897c2c5 (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.c | 20 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom_4k.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom_9287.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom_def.c | 11 |
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; |