]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: rtw89: fix unable to receive probe responses under MLO connection
authorPo-Hao Huang <phhuang@realtek.com>
Wed, 14 Jan 2026 01:39:50 +0000 (09:39 +0800)
committerSasha Levin <sashal@kernel.org>
Wed, 4 Mar 2026 12:20:28 +0000 (07:20 -0500)
[ Upstream commit 6f6d7a325fbde4f025ee1b1277f6f44727e21223 ]

During MLO connections, A1 of the probe responses we received are
in link address, these frames will then be dropped by mac80211 due to
not matching the MLD address in ieee80211_scan_accept_presp().
Fix this by using MLD address to scan when not using random MAC address.

Signed-off-by: Po-Hao Huang <phhuang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260114013950.19704-13-pkshih@realtek.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/realtek/rtw89/fw.c

index 7b9d9989e51706d252c65ec98f48078bc3d8933b..2f68a04cc028f414d3eae5b10ba7430a91171b73 100644 (file)
@@ -8114,6 +8114,7 @@ int rtw89_hw_scan_start(struct rtw89_dev *rtwdev,
        struct cfg80211_scan_request *req = &scan_req->req;
        const struct rtw89_chan *chan = rtw89_chan_get(rtwdev,
                                                       rtwvif_link->chanctx_idx);
+       struct ieee80211_vif *vif = rtwvif_link_to_vif(rtwvif_link);
        struct rtw89_vif *rtwvif = rtwvif_link->rtwvif;
        struct rtw89_chanctx_pause_parm pause_parm = {
                .rsn = RTW89_CHANCTX_PAUSE_REASON_HW_SCAN,
@@ -8142,6 +8143,8 @@ int rtw89_hw_scan_start(struct rtw89_dev *rtwdev,
        if (req->flags & NL80211_SCAN_FLAG_RANDOM_ADDR)
                get_random_mask_addr(mac_addr, req->mac_addr,
                                     req->mac_addr_mask);
+       else if (ieee80211_vif_is_mld(vif))
+               ether_addr_copy(mac_addr, vif->addr);
        else
                ether_addr_copy(mac_addr, rtwvif_link->mac_addr);