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>
This commit is contained in:
parent
e832bf1032
commit
071bfefd68
|
@ -4922,25 +4922,7 @@ static void ath9k_hw_ar9300_set_txpower(struct ath_hw *ah,
|
|||
"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);
|
||||
|
|
|
@ -607,15 +607,6 @@ static void ath9k_hw_4k_set_txpower(struct ath_hw *ah,
|
|||
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;
|
||||
|
|
|
@ -746,13 +746,6 @@ static void ath9k_hw_ar9287_set_txpower(struct ath_hw *ah,
|
|||
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;
|
||||
|
|
|
@ -1167,17 +1167,6 @@ static void ath9k_hw_def_set_txpower(struct ath_hw *ah,
|
|||
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;
|
||||
|
|
Loading…
Reference in a new issue