]> git.ipfire.org Git - thirdparty/linux.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)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 19 Aug 2025 01:03:56 +0000 (09:03 +0800)
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
drivers/net/wireless/realtek/rtw89/core.c

index 7d522031dfa1e632b5e0761e79bd8a132eeb98bc..0ad7562632a588fd126f42c1c287fc6bb62c74d0 100644 (file)
@@ -2668,6 +2668,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) ||
@@ -2689,7 +2690,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 (is_mld) {