]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: ser: Wi-Fi 7 reset HALT C2H after reading it
authorZong-Zhe Yang <kevin_yang@realtek.com>
Fri, 13 Feb 2026 06:15:51 +0000 (14:15 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 3 Mar 2026 02:40:12 +0000 (10:40 +0800)
When a SER (system error recovery) interrupt happens, driver reads HALT C2H
register to get the error status via MAC. For Wi-Fi 7 chipset, driver needs
to reset HALT C2H register after reading it to make FW aware that.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260213061552.29997-12-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac.c

index 04ef4bae18529a46aee8a3a2c9236dfe02a67a16..e1cea0f884063f638adfcfd7195ae64ab8afa82a 100644 (file)
@@ -814,6 +814,7 @@ static bool rtw89_mac_suppress_log(struct rtw89_dev *rtwdev, u32 err)
 u32 rtw89_mac_get_err_status(struct rtw89_dev *rtwdev)
 {
        const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
+       const struct rtw89_chip_info *chip = rtwdev->chip;
        u32 err, err_scnr;
        int ret;
 
@@ -836,11 +837,15 @@ u32 rtw89_mac_get_err_status(struct rtw89_dev *rtwdev)
                err = MAC_AX_ERR_RXI300;
 
        if (rtw89_mac_suppress_log(rtwdev, err))
-               return err;
+               goto bottom;
 
        rtw89_fw_st_dbg_dump(rtwdev);
        mac->dump_err_status(rtwdev, err);
 
+bottom:
+       if (chip->chip_gen != RTW89_CHIP_AX)
+               rtw89_write32(rtwdev, R_AX_HALT_C2H, 0);
+
        return err;
 }
 EXPORT_SYMBOL(rtw89_mac_get_err_status);