]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: rtw89: fix BSSID comparison for non-transmitted BSSID
authorKuan-Chung Chen <damon.chen@realtek.com>
Mon, 11 Aug 2025 12:39:50 +0000 (20:39 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:34:13 +0000 (15:34 -0500)
[ Upstream commit c4c16c88e78417424b4e3f33177e84baf0bc9a99 ]

For non-transmitted connections, beacons are received from the
transmitted BSSID. Fix this to avoid missing beacon statistics.

Signed-off-by: Kuan-Chung Chen <damon.chen@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20250811123950.15697-1-pkshih@realtek.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/realtek/rtw89/core.c

index df8fad7a2aea63e5524d588e8b65d2b7c44e8710..1147abf77154730ab3218938cafe05d71e509aad 100644 (file)
@@ -2074,6 +2074,7 @@ static void rtw89_vif_rx_stats_iter(void *data, u8 *mac,
        struct ieee80211_bss_conf *bss_conf;
        struct rtw89_vif_link *rtwvif_link;
        const u8 *bssid = iter_data->bssid;
+       const u8 *target_bssid;
 
        if (rtwdev->scanning &&
            (ieee80211_is_beacon(hdr->frame_control) ||
@@ -2098,7 +2099,10 @@ static void rtw89_vif_rx_stats_iter(void *data, u8 *mac,
                goto out;
        }
 
-       if (!ether_addr_equal(bss_conf->bssid, bssid))
+       target_bssid = ieee80211_is_beacon(hdr->frame_control) &&
+                      bss_conf->nontransmitted ?
+                      bss_conf->transmitter_bssid : bss_conf->bssid;
+       if (!ether_addr_equal(target_bssid, bssid))
                goto out;
 
        if (ieee80211_is_beacon(hdr->frame_control)) {