linux/net/mac80211
Lachlan Hodges 4f0fcdb835 wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements
[ Upstream commit 1e1f706fc2 ]

S1G beacons are not traditional beacons but a type of extension frame.
Extension frames contain the frame control and duration fields, followed
by zero or more optional fields before the frame body. These optional
fields are distinct from the variable length elements.

The presence of optional fields is indicated in the frame control field.
To correctly locate the elements offset, the frame control must be parsed
to identify which optional fields are present. Currently, mac80211 parses
S1G beacons based on fixed assumptions about the frame layout, without
inspecting the frame control field. This can result in incorrect offsets
to the "variable" portion of the frame.

Properly parse S1G beacon frames by using the field lengths defined in
IEEE 802.11-2024, section 9.3.4.3, ensuring that the elements offset is
calculated accurately.

Fixes: 9eaffe5078 ("cfg80211: convert S1G beacon to scan results")
Fixes: cd418ba63f ("mac80211: convert S1G beacon to scan results")
Signed-off-by: Lachlan Hodges <lachlan.hodges@morsemicro.com>
Link: https://patch.msgid.link/20250603053538.468562-1-lachlan.hodges@morsemicro.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-06-19 15:32:19 +02:00
..
tests wifi: mac80211: pass parsed TPE data to drivers 2024-05-23 10:35:04 +02:00
aead_api.c mac80211: Check crypto_aead_encrypt for errors 2021-03-16 21:20:41 +01:00
aead_api.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
aes_ccm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
aes_cmac.c mac80211: aes_cmac: check crypto_shash_setkey() return value 2021-04-19 12:01:40 +02:00
aes_cmac.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
aes_gcm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
aes_gmac.c mac80211: Check crypto_aead_encrypt for errors 2021-03-16 21:20:41 +01:00
aes_gmac.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
agg-rx.c wifi: mac80211: refactor block ack management code 2024-08-27 10:12:50 +02:00
agg-tx.c wifi: mac80211: refactor block ack management code 2024-08-27 10:12:50 +02:00
airtime.c wifi: mac80211: introduce EHT rate support in AQL airtime 2024-09-06 12:58:36 +02:00
cfg.c wifi: cfg80211: clear link ID from bitmap during link delete after clean up 2025-01-09 13:33:43 +01:00
chan.c wifi: mac80211: handle ieee80211_radar_detected() for MLO 2024-09-06 13:01:05 +02:00
debug.h wifi: mac80211: fix mlme_link_id_dbg() 2024-03-25 15:22:53 +01:00
debugfs.c wifi: mac80211: add strict mode disabling workarounds 2025-04-20 10:15:17 +02:00
debugfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
debugfs_key.c wifi: mac80211: remove key_mtx 2023-09-11 11:27:22 +02:00
debugfs_key.h mac80211: Support BIGTK configuration for Beacon protection 2020-02-24 10:35:57 +01:00
debugfs_netdev.c wifi: mac80211: prohibit deactivating all links 2025-02-08 09:57:14 +01:00
debugfs_netdev.h wifi: mac80211: fix driver debugfs for vif type change 2024-02-02 13:09:55 +01:00
debugfs_sta.c wifi: mac80211: fix spelling typo in comment 2024-01-03 15:34:56 +01:00
debugfs_sta.h wifi: mac80211: add API to show the link STAs in debugfs 2022-10-07 15:23:41 +02:00
driver-ops.c wifi: mac80211: Fix sparse warning for monitor_sdata 2025-04-10 14:39:36 +02:00
driver-ops.h wifi: mac80211: set ieee80211_prep_tx_info::link_id upon Auth Rx 2025-05-29 11:02:56 +02:00
drop.h wifi: mac80211: improve drop for action frame return 2024-03-25 15:39:28 +01:00
eht.c wifi: mac80211: add helpers to access sband iftype data 2023-06-14 11:57:29 +02:00
ethtool.c wifi: mac80211: ethtool: always hold wiphy mutex 2023-09-25 09:00:39 +02:00
fils_aead.c wifi: mac80211: Do not include crypto/algapi.h 2023-08-24 08:42:36 +02:00
fils_aead.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
he.c wifi: mac80211: correctly parse Spatial Reuse Parameter Set element 2024-05-29 15:35:12 +02:00
ht.c wifi: mac80211: refactor block ack management code 2024-08-27 10:12:50 +02:00
ibss.c wifi: mac80211: extend ifcomb check functions for multi-radio 2024-07-09 11:36:12 +02:00
ieee80211_i.h wifi: mac80211: Support parsing EPCS ML element 2025-03-13 13:02:02 +01:00
iface.c wifi: mac80211: Purge vif txq in ieee80211_do_stop() 2025-04-25 10:47:37 +02:00
Kconfig mac80211: MAC80211_MESSAGE_TRACING should depend on TRACING 2024-10-08 21:14:57 +02:00
key.c wireless fixes for v6.12-rc5 2024-10-25 10:44:41 +01:00
key.h wifi: mac80211: remove key_mtx 2023-09-11 11:27:22 +02:00
led.c leds: Change led_trigger_blink[_oneshot]() delay parameters to pass-by-value 2023-05-25 12:16:27 +01:00
led.h leds: Change led_trigger_blink[_oneshot]() delay parameters to pass-by-value 2023-05-25 12:16:27 +01:00
link.c wifi: mac80211: Convert color collision detection to wiphy work 2024-10-08 21:24:19 +02:00
main.c wifi: mac80211: Set n_channels after allocating struct cfg80211_scan_request 2025-05-22 14:29:43 +02:00
Makefile wifi: mac80211: move element parsing to a new file 2024-02-08 15:00:43 +01:00
mesh.c wifi: mac80211: fix mbss changed flags corruption on 32 bit systems 2025-01-09 13:33:43 +01:00
mesh.h wifi: mac80211: split mesh fast tx cache into local/proxied/forwarded 2024-04-17 09:21:32 +02:00
mesh_hwmp.c wifi: mac80211: fix integer overflow in hwmp_route_info_get() 2025-04-20 10:15:39 +02:00
mesh_pathtbl.c wifi: mac80211: remove redundant unlikely() around IS_ERR() 2024-08-27 10:28:55 +02:00
mesh_plink.c wifi: mac80211: simplify adding supported rates 2024-02-08 15:00:43 +01:00
mesh_ps.c wifi: mac80211: mesh: fix some kdoc warnings 2023-10-23 11:43:27 +02:00
mesh_sync.c wifi: mac80211: mesh: fix some kdoc warnings 2023-10-23 11:43:27 +02:00
michael.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
michael.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
mlme.c wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements 2025-06-19 15:32:19 +02:00
ocb.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
offchannel.c wifi: mac80211: don't use rate mask for offchannel TX either 2024-08-27 10:13:23 +02:00
parse.c wifi: mac80211: fix vendor-specific inheritance 2025-03-13 13:02:02 +01:00
pm.c wifi: mac80211: handle ieee80211_radar_detected() for MLO 2024-09-06 13:01:05 +02:00
rate.c wifi: mac80211: don't use rate mask for offchannel TX either 2024-08-27 10:13:23 +02:00
rate.h wifi: mac80211: make ieee80211_check_rate_mask() link-aware 2022-07-15 11:43:21 +02:00
rc80211_minstrel_ht.c wifi: mac80211: remove shifted rate support 2023-09-13 11:22:16 +02:00
rc80211_minstrel_ht.h wifi: mac80211: minstrel_ht: remove unused has_mrr member from struct minstrel_priv 2022-10-07 15:25:05 +02:00
rc80211_minstrel_ht_debugfs.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
rx.c wifi: mac80211: fix SA Query processing in MLO 2025-04-10 14:39:30 +02:00
s1g.c wifi: mac80211: remove sta_mtx 2023-09-11 11:27:22 +02:00
scan.c wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements 2025-06-19 15:32:19 +02:00
spectmgmt.c wifi: mac80211: fix AP chandef capturing in CSA 2024-07-10 12:35:58 +02:00
sta_info.c wifi: mac80211: flush the station before moving it to UN-AUTHORIZED state 2025-04-10 14:39:30 +02:00
sta_info.h wifi: mac80211: add ieee80211_tdls_sta_link_id() 2024-06-26 10:22:04 +02:00
status.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
tdls.c wifi: mac80211: remove TDLS peers only on affected link 2024-03-04 14:34:03 +01:00
tkip.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
tkip.h Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2019-07-08 20:57:08 -07:00
trace.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace.h wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-06-26 10:25:46 +02:00
trace_msg.h wifi: mac80211: remove unused MAX_MSG_LEN define 2024-02-08 12:50:09 +01:00
tx.c Revert "wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue()" 2025-04-25 10:47:41 +02:00
util.c wifi: mac80211: Cleanup sta TXQs on flush 2025-04-10 14:39:28 +02:00
vht.c wifi: mac80211: optionally pass chandef to ieee80211_sta_cur_vht_bw() 2024-06-26 10:21:54 +02:00
wbrf.c wifi: mac80211: Drop WBRF debugging statements 2024-01-26 10:43:33 +01:00
wep.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
wep.h mac80211: make ieee80211_wep_init() return void 2020-02-07 12:40:34 +01:00
wme.c wifi: mac80211: fix qos on mesh interfaces 2023-03-22 13:46:38 +01:00
wme.h wifi: mac80211: Drop support for TX push path 2022-10-10 11:06:14 +02:00
wpa.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
wpa.h wifi: mac80211: remove cipher scheme support 2022-06-10 15:35:53 +02:00