This patchset adds S1G short beaconing support to mac80211. v1: https://patchwork.kernel.org/project/linux-wireless/cover/20250714051403.597090-1-lachlan.hodges@xxxxxxxxxxxxxx/ v2: https://patchwork.kernel.org/project/linux-wireless/cover/20250716053254.439698-1-lachlan.hodges@xxxxxxxxxxxxxx/ As stated in the discussion on v2, a core idea here is that short beaconing as a feature cannot be enabled/disabled dynamically without tearing down the interface. The same applies to the long beacon period - which is a mandatory parameter when bringing up the interface (and is only set during bringup) as opposed to performing an update, which only updates the short beacon data assuming we have an existing short beacon (i.e the BSS has been configured to be short beaconing). Changes Since v2: (1) Removed the s1g_short_beaconing boolean from the BSS configuration as theres no need for drivers to be exposed to this and internally we can use the link->u.ap.s1g_short_beacon to make the same determination. (2) Refactored ieee80211_set_s1g_short_beacon() to now update the template if an update has been made, else we do nothing. Removed the use of the old template entirely as this made no sense (besides of course freeing it if it existed). (3) Assign link_conf->s1g_long_beacon_period without exception as for non-S1G BSSs this will always be 0, and for S1G BSSs will either be 0 or > 1. (4) When assigning the short beacon, we now just check if we are an S1G interface, as an S1G interface that has / will not be configured for short beaconing won't have the update flag set. I think this makes sense and keeps the validation simpler and more inline with how the configuration flow functions. (5) Removed the BSS update flag for changing the S1G short beacon as we always request the beacon each beacon interval, no templates are used nor is there support so it is redundant. This has then been removed from ieee80211_set_s1g_short_beacon(). (6) Minor code style cleanup when setting the vif.cfg.s1g (can be on a single line). (7) When returning the SKB, we just return the targeted function rather then setting a locally allocated SKB. This is purely visual and really depends how maintainers think looks the nicest. Thanks again for the quick review cycles and thorough feedback :) Lachlan Hodges (4): wifi: cfg80211: support configuring an S1G short beaconing BSS wifi: mac80211: support initialising an S1G short beaconing BSS wifi: mac80211: support initialising current S1G short beacon index wifi: mac80211: support returning the S1G short beacon skb include/net/cfg80211.h | 23 +++++++++ include/net/mac80211.h | 4 ++ include/uapi/linux/nl80211.h | 39 ++++++++++++++ net/mac80211/cfg.c | 74 +++++++++++++++++++++++++-- net/mac80211/debugfs_netdev.c | 2 +- net/mac80211/ieee80211_i.h | 15 ++++-- net/mac80211/mesh.c | 2 +- net/mac80211/tx.c | 95 +++++++++++++++++++++++++++++++---- net/mac80211/util.c | 31 ++++++++++-- net/wireless/nl80211.c | 72 ++++++++++++++++++++++++++ 10 files changed, 335 insertions(+), 22 deletions(-) -- 2.43.0