Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76403816 authored by Yan-Hsuan Chuang's avatar Yan-Hsuan Chuang Committed by Kalle Valo
Browse files

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: default avatarYan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 52280149
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -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;