summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZong-Zhe Yang <kevin_yang@realtek.com>2023-09-08 11:11:39 +0800
committerKalle Valo <kvalo@kernel.org>2023-09-18 17:28:44 +0300
commitc83ff9a3a2ca1146dae0fdcb2e518ea83fc0e42d (patch)
tree27636464f7583066c05383d1dd17ea5797e89bbd
parent74b45618f5342ce519ec39659b217a22570420dd (diff)
wifi: rtw89: rfk: disable driver tracking during MCC
After MCC (multi-channel concurrency) is started, FW will control channel changes and use the corresponding backup of RF calibration result. And, driver RF calibration (RF-K) won't be able to keep up with the speed at which the channels are changing. So, even if we keep tracking it in driver, the RF-K result might not be good either. To save these unnecessary things, we disable driver RF-K tracking during MCC. Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20230908031145.20931-3-pkshih@realtek.com
-rw-r--r--drivers/net/wireless/realtek/rtw89/core.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
index fc686954b3dd..cb2f4e59187b 100644
--- a/drivers/net/wireless/realtek/rtw89/core.c
+++ b/drivers/net/wireless/realtek/rtw89/core.c
@@ -2662,6 +2662,17 @@ static void rtw89_enter_lps_track(struct rtw89_dev *rtwdev)
rtw89_vif_enter_lps(rtwdev, rtwvif);
}
+static void rtw89_core_rfk_track(struct rtw89_dev *rtwdev)
+{
+ enum rtw89_entity_mode mode;
+
+ mode = rtw89_get_entity_mode(rtwdev);
+ if (mode == RTW89_ENTITY_MODE_MCC)
+ return;
+
+ rtw89_chip_rfk_track(rtwdev);
+}
+
void rtw89_traffic_stats_init(struct rtw89_dev *rtwdev,
struct rtw89_traffic_stats *stats)
{
@@ -2704,7 +2715,7 @@ static void rtw89_track_work(struct work_struct *work)
rtw89_phy_stat_track(rtwdev);
rtw89_phy_env_monitor_track(rtwdev);
rtw89_phy_dig(rtwdev);
- rtw89_chip_rfk_track(rtwdev);
+ rtw89_core_rfk_track(rtwdev);
rtw89_phy_ra_update(rtwdev);
rtw89_phy_cfo_track(rtwdev);
rtw89_phy_tx_path_div_track(rtwdev);