]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: wow: disable interrupt before swapping FW for 8922D
authorChih-Kang Chang <gary.chang@realtek.com>
Tue, 27 Jan 2026 08:50:33 +0000 (16:50 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Fri, 30 Jan 2026 05:54:21 +0000 (13:54 +0800)
Except for the 8852A, 8852B, 8851B, 8852BT, all subsequent chips use
HAXIDMA. Therefore, interrupts need to be disabled before swapping
firmware to avoid unexpected SER.

Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260127085036.44060-4-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/wow.c

index 5d3227e2b3e422fb34ab06fc6a8d77f1e5079900..b67ceda59e9264d780378f999f9ec341e218c39e 100644 (file)
@@ -1267,15 +1267,15 @@ static int rtw89_wow_swap_fw(struct rtw89_dev *rtwdev, bool wow)
        enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
        const struct rtw89_chip_info *chip = rtwdev->chip;
        bool include_bb = !!chip->bbmcu_nr;
-       bool disable_intr_for_dlfw = false;
+       bool disable_intr_for_dlfw = true;
        struct ieee80211_sta *wow_sta;
        struct rtw89_sta_link *rtwsta_link = NULL;
        struct rtw89_sta *rtwsta;
        bool is_conn = true;
        int ret;
 
-       if (chip_id == RTL8852C || chip_id == RTL8922A)
-               disable_intr_for_dlfw = true;
+       if (chip->chip_gen == RTW89_CHIP_AX && chip_id != RTL8852C)
+               disable_intr_for_dlfw = false;
 
        wow_sta = ieee80211_find_sta(wow_vif, wow_vif->cfg.ap_addr);
        if (wow_sta) {