]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211: don't perform DA check on S1G beacon
authorLachlan Hodges <lachlan.hodges@morsemicro.com>
Tue, 20 Jan 2026 03:11:21 +0000 (14:11 +1100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 20 Jan 2026 09:01:02 +0000 (10:01 +0100)
S1G beacons don't contain the DA field as per IEEE80211-2024 9.3.4.3,
so the DA broadcast check reads the SA address of the S1G beacon which
will subsequently lead to the beacon being dropped. As a result, passive
scanning is not possible. Fix this by only performing the check on
non-S1G beacons to allow S1G long beacons to be processed during a
passive scan.

Fixes: ddf82e752f8a ("wifi: mac80211: Allow beacons to update BSS table regardless of scan")
Signed-off-by: Lachlan Hodges <lachlan.hodges@morsemicro.com>
Link: https://patch.msgid.link/20260120031122.309942-1-lachlan.hodges@morsemicro.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/scan.c

index 5ef315ed3b0fa2f9677430207739db6e5e94846c..4823c8d4563992790dfae861795e09ac7f3f5c97 100644 (file)
@@ -347,8 +347,13 @@ void ieee80211_scan_rx(struct ieee80211_local *local, struct sk_buff *skb)
                                                 mgmt->da))
                        return;
        } else {
-               /* Beacons are expected only with broadcast address */
-               if (!is_broadcast_ether_addr(mgmt->da))
+               /*
+                * Non-S1G beacons are expected only with broadcast address.
+                * S1G beacons only carry the SA so no DA check is required
+                * nor possible.
+                */
+               if (!ieee80211_is_s1g_beacon(mgmt->frame_control) &&
+                   !is_broadcast_ether_addr(mgmt->da))
                        return;
        }