linux/net/mac80211
Michael-CY Lee 21c3f8f955 wifi: mac80211: refactor STA CSA parsing flows
The new Wi-Fi Standard (IEEE Std 802.11-2020 9.4.2.160) specifies that
the Wide Bandwidth Channel Switch (WBCS) Element subfields have the same
definitions as VHT operation information if the operating band is not
S1G.

The problem comes when the BSS is in 6 GHz band, the STA parses the WBCS
Element by ieee80211_chandef_vht_oper(), which checks the capabilities for
HT/VHT mode, not HE/EHT mode.

This patch refactors STA CSA parsing flow so that the corresponding
capabilities can be checked. Also, it adds the way to use op_class in ECSA
Element to build a new chandef.

In summary, the new steps for STA to handle CSA event are:
1. build the new chandef from one of the CSA-related (Sub)Elements in
   following order,
   - Bandwidth Indication (Sub)Element
   - Wide Bandwidth Channel Switch (Sub)Element
   - Operating class in Extended Channel Switch Announcement Element
   - Channel Switch Announcement Element
2. convert the new chandef into operation information according to the
   operating band in order to check if the new chandef fits STA's
   capabilities.
3. downgrade the bandwidth until current bandwidth is not disabled.

Co-developed-by: Money Wang <money.wang@mediatek.com>
Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com>
Link: https://msgid.link/20231222010914.6521-3-michael-cy.lee@mediatek.com
[rebase on top of the changes with struct ieee80211_conn_settings,
 prefer leXY_encode_bits()]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2024-02-08 15:00:45 +01:00
..
tests wifi: mac80211: clean up connection process 2024-02-08 12:58:26 +01:00
aead_api.c mac80211: Check crypto_aead_encrypt for errors 2021-03-16 21:20:41 +01:00
aead_api.h
aes_ccm.h
aes_cmac.c mac80211: aes_cmac: check crypto_shash_setkey() return value 2021-04-19 12:01:40 +02:00
aes_cmac.h
aes_gcm.h
aes_gmac.c mac80211: Check crypto_aead_encrypt for errors 2021-03-16 21:20:41 +01:00
aes_gmac.h
agg-rx.c wifi: mac80211: remove ampdu_mlme.mtx 2023-09-11 11:27:22 +02:00
agg-tx.c wifi: mac80211: introduce 'channel request' 2024-02-08 13:07:34 +01:00
airtime.c wifi: mac80211: Sanity check tx bitrate if not provided by driver 2023-09-13 16:24:05 +02:00
cfg.c wifi: mac80211: allow CSA to same channel 2024-02-08 15:00:44 +01:00
chan.c wifi: cfg80211/mac80211: move puncturing into chandef 2024-02-08 15:00:39 +01:00
debug.h wifi: mac80211: clean up connection process 2024-02-08 12:58:26 +01:00
debugfs.c wifi: mac80211: add a flag to disallow puncturing 2023-12-12 10:37:00 +01:00
debugfs.h
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: fix driver debugfs for vif type change 2024-02-02 13:09:55 +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: add/remove driver debugfs entries as appropriate 2023-12-19 13:08:00 +01:00
driver-ops.h wifi: mac80211: process and save negotiated TID to Link mapping request 2024-01-26 09:39:48 +01:00
drop.h wifi: mac80211: expand __ieee80211_data_to_8023() status 2023-09-26 09:16:47 +02: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
he.c wifi: mac80211: add helpers to access sband iftype data 2023-06-14 11:57:29 +02:00
ht.c wifi: mac80211: introduce 'channel request' 2024-02-08 13:07:34 +01:00
ibss.c wifi: mac80211: introduce 'channel request' 2024-02-08 13:07:34 +01:00
ieee80211_i.h wifi: mac80211: convert ieee80211_ie_build_eht_cap() to SKB use 2024-02-08 15:00:44 +01:00
iface.c wifi: mac80211: introduce 'channel request' 2024-02-08 13:07:34 +01:00
Kconfig wifi: cfg80211/mac80211: remove dependency on non-existing option 2024-01-18 14:50:01 +01:00
key.c wifi: mac80211: add support for SPP A-MSDUs 2024-01-26 09:39:49 +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: cfg80211/mac80211: move puncturing into chandef 2024-02-08 15:00:39 +01:00
main.c wifi: mac80211: don't use sband->band early 2024-02-08 15:00:44 +01:00
Makefile wifi: mac80211: move element parsing to a new file 2024-02-08 15:00:43 +01:00
mesh.c wifi: mac80211: convert ieee80211_ie_build_eht_cap() to SKB use 2024-02-08 15:00:44 +01:00
mesh.h wifi: mac80211: add missing kernel-doc for fast_tx_check 2024-02-08 15:00:44 +01:00
mesh_hwmp.c wifi: mac80211: Replace ENOTSUPP with EOPNOTSUPP 2023-12-12 10:37:01 +01:00
mesh_pathtbl.c wifi: mac80211: Replace ENOTSUPP with EOPNOTSUPP 2023-12-12 10:37:01 +01: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
michael.h
mlme.c wifi: mac80211: convert ieee80211_ie_build_eht_cap() to SKB use 2024-02-08 15:00:44 +01:00
ocb.c wifi: mac80211: introduce 'channel request' 2024-02-08 13:07:34 +01:00
offchannel.c wifi: mac80211: simplify non-chanctx drivers 2024-02-08 12:58:32 +01:00
parse.c wifi: mac80211: move element parsing to a new file 2024-02-08 15:00:43 +01:00
pm.c wifi: mac80211: remove sta_mtx 2023-09-11 11:27:22 +02:00
rate.c wifi: mac80211: introduce 'channel request' 2024-02-08 13:07:34 +01: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 mac80211: minstrel_ht: show sampling rates in debugfs 2021-02-12 08:58:11 +01:00
rx.c wifi: mac80211: implement MLO multicast deduplication 2024-02-08 15:00:42 +01:00
s1g.c wifi: mac80211: remove sta_mtx 2023-09-11 11:27:22 +02:00
scan.c wifi: mac80211: start building elements in SKBs 2024-02-08 15:00:43 +01:00
spectmgmt.c wifi: mac80211: refactor STA CSA parsing flows 2024-02-08 15:00:45 +01:00
sta_info.c wireless fixes for v6.8-rc2 2024-01-23 08:38:13 -08:00
sta_info.h wifi: mac80211: cleanup airtime arithmetic with ieee80211_sta_keep_active() 2023-12-12 10:36:59 +01:00
status.c wifi: mac80211: rename ieee80211_tx_status() to ieee80211_tx_status_skb() 2023-10-23 12:26:51 +02:00
tdls.c wifi: mac80211: convert ieee80211_ie_build_eht_cap() to SKB use 2024-02-08 15:00:44 +01:00
tkip.c mac80211: Fix TKIP replay protection immediately after key setup 2020-01-15 09:52:12 +01:00
tkip.h
trace.c
trace.h wifi: mac80211: support wider bandwidth OFDMA config 2024-02-08 13:07:37 +01:00
trace_msg.h wifi: mac80211: remove unused MAX_MSG_LEN define 2024-02-08 12:50:09 +01:00
tx.c wifi: mac80211: clarify vif handling in TX dequeue 2024-02-08 15:00:44 +01:00
util.c wifi: mac80211: convert ieee80211_ie_build_eht_cap() to SKB use 2024-02-08 15:00:44 +01:00
vht.c wifi: mac80211: introduce 'channel request' 2024-02-08 13:07:34 +01:00
wbrf.c wifi: mac80211: Drop WBRF debugging statements 2024-01-26 10:43:33 +01:00
wep.c wifi: mac80211: remove RX_DROP_UNUSABLE 2023-09-26 09:16:42 +02: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 wifi: mac80211: add support for SPP A-MSDUs 2024-01-26 09:39:49 +01:00
wpa.h wifi: mac80211: remove cipher scheme support 2022-06-10 15:35:53 +02:00