wifi: rtw89: wow: send RFK pre-nofity H2C command in WoWLAN mode
authorChin-Yen Lee <timlee@realtek.com>
Thu, 2 May 2024 02:24:54 +0000 (10:24 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Fri, 3 May 2024 23:54:19 +0000 (07:54 +0800)
802.11be WiFi chips need a RFK (RF calibration) notify H2C command after
downloading WoWLAN firmware to make sure RF TX/RX work fine when leaving
power save mode, so add it to correct RF TX/RX in WoWLAN mode.

Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://msgid.link/20240502022505.28966-2-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/wow.c

index ccad026..f7e96fc 100644 (file)
@@ -454,6 +454,7 @@ static int rtw89_wow_check_fw_status(struct rtw89_dev *rtwdev, bool wow_enable)
 static int rtw89_wow_swap_fw(struct rtw89_dev *rtwdev, bool wow)
 {
        enum rtw89_fw_type fw_type = wow ? RTW89_FW_WOWLAN : RTW89_FW_NORMAL;
+       enum rtw89_chip_gen chip_gen = rtwdev->chip->chip_gen;
        struct rtw89_wow_param *rtw_wow = &rtwdev->wow;
        struct ieee80211_vif *wow_vif = rtw_wow->wow_vif;
        struct rtw89_vif *rtwvif = (struct rtw89_vif *)wow_vif->drv_priv;
@@ -519,6 +520,9 @@ static int rtw89_wow_swap_fw(struct rtw89_dev *rtwdev, bool wow)
                rtw89_chip_cfg_txpwr_ul_tb_offset(rtwdev, wow_vif);
        }
 
+       if (chip_gen == RTW89_CHIP_BE)
+               rtw89_phy_rfk_pre_ntfy_and_wait(rtwdev, RTW89_PHY_0, 5);
+
        rtw89_mac_hw_mgnt_sec(rtwdev, wow);
        rtw89_hci_enable_intr(rtwdev);