wifi: rtw89: leave idle mode when setting WEP encryption for AP mode
authorDian-Syuan Yang <dian_syuan0116@realtek.com>
Wed, 7 May 2025 03:12:03 +0000 (11:12 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Fri, 16 May 2025 00:29:30 +0000 (08:29 +0800)
Due to mac80211 triggering the hardware to enter idle mode, it fails
to install WEP key causing connected station can't ping successfully.
Currently, it forces the hardware to leave idle mode before driver
adding WEP keys.

Signed-off-by: Dian-Syuan Yang <dian_syuan0116@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20250507031203.8256-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/cam.c

index 34316e64b777715227f6a82a80f9c4bf2089a1ea..385a238fe5cc2a77a31b7108f735068ee4f43c8c 100644 (file)
@@ -6,6 +6,7 @@
 #include "debug.h"
 #include "fw.h"
 #include "mac.h"
+#include "ps.h"
 
 static struct sk_buff *
 rtw89_cam_get_sec_key_cmd(struct rtw89_dev *rtwdev,
@@ -475,9 +476,11 @@ int rtw89_cam_sec_key_add(struct rtw89_dev *rtwdev,
 
        switch (key->cipher) {
        case WLAN_CIPHER_SUITE_WEP40:
+               rtw89_leave_ips_by_hwflags(rtwdev);
                hw_key_type = RTW89_SEC_KEY_TYPE_WEP40;
                break;
        case WLAN_CIPHER_SUITE_WEP104:
+               rtw89_leave_ips_by_hwflags(rtwdev);
                hw_key_type = RTW89_SEC_KEY_TYPE_WEP104;
                break;
        case WLAN_CIPHER_SUITE_TKIP: