mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-07-21 15:10:18 +00:00
74 lines
2.5 KiB
Diff
74 lines
2.5 KiB
Diff
From 14482a0c7b998d383feccecea57ec4b5725dfbd8 Mon Sep 17 00:00:00 2001
|
|
From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
|
Date: Sun, 26 Jan 2025 16:03:11 +0200
|
|
Subject: [PATCH 42/43] wifi: rtw88: Don't use static local variable in
|
|
rtw8822b_set_tx_power_index_by_rate
|
|
|
|
Some users want to plug two identical USB devices at the same time.
|
|
This static variable could theoretically cause them to use incorrect
|
|
TX power values.
|
|
|
|
Move the variable to the caller and pass a pointer to it to
|
|
rtw8822b_set_tx_power_index_by_rate().
|
|
|
|
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
|
|
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
|
Link: https://patch.msgid.link/8a60f581-0ab5-4d98-a97d-dd83b605008f@gmail.com
|
|
---
|
|
drivers/net/wireless/realtek/rtw88/rtw8822b.c | 14 ++++++++------
|
|
1 file changed, 8 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
|
index 7f03903ddf4b..23a29019752d 100644
|
|
--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
|
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
|
@@ -935,11 +935,11 @@ static void query_phy_status(struct rtw_dev *rtwdev, u8 *phy_status,
|
|
}
|
|
|
|
static void
|
|
-rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
|
|
+rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path,
|
|
+ u8 rs, u32 *phy_pwr_idx)
|
|
{
|
|
struct rtw_hal *hal = &rtwdev->hal;
|
|
static const u32 offset_txagc[2] = {0x1d00, 0x1d80};
|
|
- static u32 phy_pwr_idx;
|
|
u8 rate, rate_idx, pwr_index, shift;
|
|
int j;
|
|
|
|
@@ -947,12 +947,12 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
|
|
rate = rtw_rate_section[rs][j];
|
|
pwr_index = hal->tx_pwr_tbl[path][rate];
|
|
shift = rate & 0x3;
|
|
- phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
|
|
+ *phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
|
|
if (shift == 0x3) {
|
|
rate_idx = rate & 0xfc;
|
|
rtw_write32(rtwdev, offset_txagc[path] + rate_idx,
|
|
- phy_pwr_idx);
|
|
- phy_pwr_idx = 0;
|
|
+ *phy_pwr_idx);
|
|
+ *phy_pwr_idx = 0;
|
|
}
|
|
}
|
|
}
|
|
@@ -960,11 +960,13 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
|
|
static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev)
|
|
{
|
|
struct rtw_hal *hal = &rtwdev->hal;
|
|
+ u32 phy_pwr_idx = 0;
|
|
int rs, path;
|
|
|
|
for (path = 0; path < hal->rf_path_num; path++) {
|
|
for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++)
|
|
- rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs);
|
|
+ rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs,
|
|
+ &phy_pwr_idx);
|
|
}
|
|
}
|
|
|
|
--
|
|
2.43.0
|
|
|