wifi: mt76: fix beacon monitor for MBSSID nontransmitted BSS

When associated with a nontransmitted BSS in an MBSSID set, the beacon
frame's BSSID (addr3) contains the transmitting AP's BSSID, not the
station's associated BSSID. The beacon matching in mt76_rx_beacon_iter()
only compared against link_conf->bssid, so beacons were never matched,
causing false beacon loss reports.

Add a fallback check against link_conf->transmitter_bssid when
link_conf->nontransmitted is set, mirroring mac80211's
ieee80211_rx_our_beacon() logic.

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2026-03-21 04:12:46 +00:00
parent 39c960c3ad
commit a665659dee
+7 -2
View File
@@ -2274,8 +2274,13 @@ static void mt76_rx_beacon_iter(void *_data, u8 *mac,
continue;
link_conf = rcu_dereference(vif->link_conf[link_id]);
if (!link_conf ||
!ether_addr_equal(link_conf->bssid, data->bssid))
if (!link_conf)
continue;
if (!ether_addr_equal(link_conf->bssid, data->bssid) &&
(!link_conf->nontransmitted ||
!ether_addr_equal(link_conf->transmitter_bssid,
data->bssid)))
continue;
WRITE_ONCE(mlink->beacon_mon_last, jiffies);