mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
wifi: rtw89: ser: enable error IMR after recovering from L1
After recovering from L1, explicitly enable error IMR to ensure next L1 SER (system error recovery) can work normally. Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20251223030651.480633-6-pkshih@realtek.com
This commit is contained in:
parent
b0f1289fd6
commit
f4de946bdb
|
|
@ -7204,6 +7204,7 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_ax = {
|
|||
.check_mac_en = rtw89_mac_check_mac_en_ax,
|
||||
.sys_init = sys_init_ax,
|
||||
.trx_init = trx_init_ax,
|
||||
.err_imr_ctrl = err_imr_ctrl_ax,
|
||||
.hci_func_en = rtw89_mac_hci_func_en_ax,
|
||||
.dmac_func_pre_en = rtw89_mac_dmac_func_pre_en_ax,
|
||||
.dle_func_en = dle_func_en_ax,
|
||||
|
|
|
|||
|
|
@ -1019,6 +1019,7 @@ struct rtw89_mac_gen_def {
|
|||
enum rtw89_mac_hwmod_sel sel);
|
||||
int (*sys_init)(struct rtw89_dev *rtwdev);
|
||||
int (*trx_init)(struct rtw89_dev *rtwdev);
|
||||
void (*err_imr_ctrl)(struct rtw89_dev *rtwdev, bool en);
|
||||
void (*hci_func_en)(struct rtw89_dev *rtwdev);
|
||||
void (*dmac_func_pre_en)(struct rtw89_dev *rtwdev);
|
||||
void (*dle_func_en)(struct rtw89_dev *rtwdev, bool enable);
|
||||
|
|
|
|||
|
|
@ -2730,6 +2730,7 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_be = {
|
|||
.check_mac_en = rtw89_mac_check_mac_en_be,
|
||||
.sys_init = sys_init_be,
|
||||
.trx_init = trx_init_be,
|
||||
.err_imr_ctrl = err_imr_ctrl_be,
|
||||
.hci_func_en = rtw89_mac_hci_func_en_be,
|
||||
.dmac_func_pre_en = rtw89_mac_dmac_func_pre_en_be,
|
||||
.dle_func_en = dle_func_en_be,
|
||||
|
|
|
|||
|
|
@ -431,6 +431,14 @@ static void hal_send_m4_event(struct rtw89_ser *ser)
|
|||
rtw89_mac_set_err_status(rtwdev, MAC_AX_ERR_L1_RCVY_EN);
|
||||
}
|
||||
|
||||
static void hal_enable_err_imr(struct rtw89_ser *ser)
|
||||
{
|
||||
struct rtw89_dev *rtwdev = container_of(ser, struct rtw89_dev, ser);
|
||||
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
|
||||
|
||||
mac->err_imr_ctrl(rtwdev, true);
|
||||
}
|
||||
|
||||
/* state handler */
|
||||
static void ser_idle_st_hdl(struct rtw89_ser *ser, u8 evt)
|
||||
{
|
||||
|
|
@ -552,6 +560,8 @@ static void ser_do_hci_st_hdl(struct rtw89_ser *ser, u8 evt)
|
|||
break;
|
||||
|
||||
case SER_EV_MAC_RESET_DONE:
|
||||
hal_enable_err_imr(ser);
|
||||
|
||||
ser_state_goto(ser, SER_IDLE_ST);
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user