]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw89: wow: enable MLD address for Magic packet wakeup
authorChin-Yen Lee <timlee@realtek.com>
Wed, 25 Mar 2026 07:21:24 +0000 (15:21 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 30 Mar 2026 02:24:34 +0000 (10:24 +0800)
Under MLO connections, the original Magic Packet configuration
only supported Link Addresses for wakeup. Update the setting
to support both MLD Address and Link Addresses for wakeup process.

Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260325072130.41751-3-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/fw.c
drivers/net/wireless/realtek/rtw89/fw.h

index 701cea9a771e5bb8110c8786a5d4c8ab6f042fca..13391ec9627cf3dd427ac945613b5b1e5f86e73b 100644 (file)
@@ -9709,6 +9709,7 @@ int rtw89_fw_h2c_wow_wakeup_ctrl(struct rtw89_dev *rtwdev,
                                 struct rtw89_vif_link *rtwvif_link,
                                 bool enable)
 {
+       struct ieee80211_vif *vif = rtwvif_link_to_vif(rtwvif_link);
        struct rtw89_wow_param *rtw_wow = &rtwdev->wow;
        struct rtw89_h2c_wow_wakeup_ctrl *h2c;
        struct sk_buff *skb;
@@ -9728,9 +9729,14 @@ int rtw89_fw_h2c_wow_wakeup_ctrl(struct rtw89_dev *rtwdev,
        if (rtw_wow->pattern_cnt)
                h2c->w0 |= le32_encode_bits(enable,
                                            RTW89_H2C_WOW_WAKEUP_CTRL_W0_PATTERN_MATCH_ENABLE);
-       if (test_bit(RTW89_WOW_FLAG_EN_MAGIC_PKT, rtw_wow->flags))
+       if (test_bit(RTW89_WOW_FLAG_EN_MAGIC_PKT, rtw_wow->flags)) {
                h2c->w0 |= le32_encode_bits(enable,
                                            RTW89_H2C_WOW_WAKEUP_CTRL_W0_MAGIC_ENABLE);
+               if (ieee80211_vif_is_mld(vif))
+                       h2c->w0 |= le32_encode_bits(enable,
+                                                   RTW89_H2C_WOW_WAKEUP_CTRL_W0_MAGIC_MLD_ENABLE);
+       }
+
        if (test_bit(RTW89_WOW_FLAG_EN_DISCONNECT, rtw_wow->flags))
                h2c->w0 |= le32_encode_bits(enable,
                                            RTW89_H2C_WOW_WAKEUP_CTRL_W0_DEAUTH_ENABLE);
index cf86fade84a295db7da903e05af497be2a8d063b..4574a281d352e80512a9fe2b82fa265fbaf4d43d 100644 (file)
@@ -2231,6 +2231,7 @@ struct rtw89_h2c_wow_wakeup_ctrl {
 #define RTW89_H2C_WOW_WAKEUP_CTRL_W0_REKEYP_ENABLE BIT(5)
 #define RTW89_H2C_WOW_WAKEUP_CTRL_W0_EAP_ENABLE BIT(6)
 #define RTW89_H2C_WOW_WAKEUP_CTRL_W0_ALL_DATA_ENABLE BIT(7)
+#define RTW89_H2C_WOW_WAKEUP_CTRL_W0_MAGIC_MLD_ENABLE BIT(8)
 #define RTW89_H2C_WOW_WAKEUP_CTRL_W0_MAC_ID_EXT GENMASK(23, 16)
 #define RTW89_H2C_WOW_WAKEUP_CTRL_W0_MAC_ID GENMASK(31, 24)