]> git.ipfire.org Git - thirdparty/kernel/linux.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)
committerPing-Ke Shih <pkshih@realtek.com>
Thu, 22 Jan 2026 01:43:19 +0000 (09:43 +0800)
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
drivers/net/wireless/realtek/rtw89/fw.c

index f09387e089a241268b3d72b1ffae22f8bb12633d..0691341b9c839684e33698d449905a63ff8a7f26 100644 (file)
@@ -8779,6 +8779,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,
@@ -8807,6 +8808,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);