rtw88: fix incorrect tx power limit at 5G

Tx power limit is stored separately by 2G and 5G.
But driver did not get tx power limit from 5G and causes incorrect tx
power. Check if the channel is beyond 2G and get the corresponding tx
power limit.

Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Yan-Hsuan Chuang 2019-05-29 15:54:41 +08:00 committed by Kalle Valo
parent 522801493e
commit 764038160a
1 changed files with 7 additions and 10 deletions

View File

@ -1466,15 +1466,6 @@ static u8 rtw_phy_get_5g_tx_power_index(struct rtw_dev *rtwdev,
return tx_power;
}
static s8 __rtw_phy_get_tx_power_limit(struct rtw_hal *hal,
u8 bw, u8 rs, u8 ch, u8 regd)
{
if (regd > RTW_REGD_WW)
return RTW_MAX_POWER_INDEX;
return hal->tx_pwr_limit_2g[regd][bw][rs][ch];
}
static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band,
enum rtw_bandwidth bw, u8 rf_path,
u8 rate, u8 channel, u8 regd)
@ -1484,6 +1475,9 @@ static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band,
u8 rs;
int ch_idx;
if (regd > RTW_REGD_WW)
return RTW_MAX_POWER_INDEX;
if (rate >= DESC_RATE1M && rate <= DESC_RATE11M)
rs = RTW_RATE_SECTION_CCK;
else if (rate >= DESC_RATE6M && rate <= DESC_RATE54M)
@ -1503,7 +1497,10 @@ static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band,
if (ch_idx < 0)
goto err;
power_limit = __rtw_phy_get_tx_power_limit(hal, bw, rs, ch_idx, regd);
if (channel <= RTW_MAX_CHANNEL_NUM_2G)
power_limit = hal->tx_pwr_limit_2g[regd][bw][rs][ch_idx];
else
power_limit = hal->tx_pwr_limit_5g[regd][bw][rs][ch_idx];
return power_limit;