mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
ath9k: rework tx power handling - display the correct *current* tx power, and also fix tx power limits with ATH_USER_REGD set
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27788 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
83
package/mac80211/patches/593-ath9k_fix_rate_power.patch
Normal file
83
package/mac80211/patches/593-ath9k_fix_rate_power.patch
Normal file
@@ -0,0 +1,83 @@
|
||||
--- 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(
|
||||
"TPC[%02d] 0x%08x\n", i, targetPowerValT2[i]);
|
||||
}
|
||||
|
||||
- /*
|
||||
- * This is the TX power we send back to driver core,
|
||||
- * and it can use to pass to userspace to display our
|
||||
- * currently configured TX power setting.
|
||||
- *
|
||||
- * Since power is rate dependent, use one of the indices
|
||||
- * from the AR9300_Rates enum to select an entry from
|
||||
- * targetPowerValT2[] to report. Currently returns the
|
||||
- * power for HT40 MCS 0, HT20 MCS 0, or OFDM 6 Mbps
|
||||
- * as CCK power is less interesting (?).
|
||||
- */
|
||||
- i = ALL_TARGET_LEGACY_6_24; /* legacy */
|
||||
- if (IS_CHAN_HT40(chan))
|
||||
- i = ALL_TARGET_HT40_0_8_16; /* ht40 */
|
||||
- else if (IS_CHAN_HT20(chan))
|
||||
- i = ALL_TARGET_HT20_0_8_16; /* ht20 */
|
||||
-
|
||||
- ah->txpower_limit = targetPowerValT2[i];
|
||||
- regulatory->max_power_level = targetPowerValT2[i];
|
||||
+ ah->txpower_limit = regulatory->max_power_level;
|
||||
|
||||
/* Write target power array to registers */
|
||||
ar9003_hw_tx_power_regwrite(ah, targetPowerValT2);
|
||||
--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
|
||||
@@ -609,15 +609,6 @@ static void ath9k_hw_4k_set_txpower(stru
|
||||
if (test)
|
||||
return;
|
||||
|
||||
- /* Update regulatory */
|
||||
- i = rate6mb;
|
||||
- if (IS_CHAN_HT40(chan))
|
||||
- i = rateHt40_0;
|
||||
- else if (IS_CHAN_HT20(chan))
|
||||
- i = rateHt20_0;
|
||||
-
|
||||
- regulatory->max_power_level = ratesArray[i];
|
||||
-
|
||||
if (AR_SREV_9280_20_OR_LATER(ah)) {
|
||||
for (i = 0; i < Ar5416RateSize; i++)
|
||||
ratesArray[i] -= AR5416_PWR_TABLE_OFFSET_DB * 2;
|
||||
--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
|
||||
@@ -748,13 +748,6 @@ static void ath9k_hw_ar9287_set_txpower(
|
||||
if (test)
|
||||
return;
|
||||
|
||||
- if (IS_CHAN_2GHZ(chan))
|
||||
- i = rate1l;
|
||||
- else
|
||||
- i = rate6mb;
|
||||
-
|
||||
- regulatory->max_power_level = ratesArray[i];
|
||||
-
|
||||
if (AR_SREV_9280_20_OR_LATER(ah)) {
|
||||
for (i = 0; i < Ar5416RateSize; i++)
|
||||
ratesArray[i] -= AR9287_PWR_TABLE_OFFSET_DB * 2;
|
||||
--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
|
||||
@@ -1169,17 +1169,6 @@ static void ath9k_hw_def_set_txpower(str
|
||||
regulatory->max_power_level = ratesArray[i];
|
||||
}
|
||||
|
||||
- if (!test) {
|
||||
- i = rate6mb;
|
||||
-
|
||||
- if (IS_CHAN_HT40(chan))
|
||||
- i = rateHt40_0;
|
||||
- else if (IS_CHAN_HT20(chan))
|
||||
- i = rateHt20_0;
|
||||
-
|
||||
- regulatory->max_power_level = ratesArray[i];
|
||||
- }
|
||||
-
|
||||
switch(ar5416_get_ntxchains(ah->txchainmask)) {
|
||||
case 1:
|
||||
break;
|
||||
Reference in New Issue
Block a user