Search Linux Wireless

Re: [RFC 2/5] wifi: mac80211: support initialising an S1G short beaconing BSS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2025-07-14 at 15:14 +1000, Lachlan Hodges wrote:
> 
> @@ -758,6 +760,16 @@ struct ieee80211_parsed_tpe {
>   *	be updated to 1, even if bss_param_ch_cnt didn't change. This allows
>   *	the link to know that it heard the latest value from its own beacon
>   *	(as opposed to hearing its value from another link's beacon).
> + * @s1g_short_beaconing: determines if short beaconing is enabled for an S1G
> + *	BSS.
> + * @s1g_short_beacon_int: short beacon interval in TUs. When short beaconing is
> + *	enabled beacon transmission times are computed using this value as
> + *	opposed to beacon_int as per IEEE80211-2024 11.1.2.1.
> + * @s1g_short_beacon_dtim_period: number of short beacon intervals that elapse
> + *	between each beacon with a TIM element whose DTIM count is 0. When
> + *	short beaconing is enabled, this value is used as opposed to
> + *	dtim_period as per IEEE80211-2024 9.4.2.5.1.
> + * @s1g_short_beacon_period: number of short beacons sent per long beacon.
>   */
>  struct ieee80211_bss_conf {
>  	struct ieee80211_vif *vif;
> @@ -857,6 +869,11 @@ struct ieee80211_bss_conf {
>  
>  	u8 bss_param_ch_cnt;
>  	u8 bss_param_ch_cnt_link_id;
> +
> +	bool s1g_short_beaconing;
> +	u16 s1g_short_beacon_int;
> +	u8 s1g_short_beacon_dtim_period;
> +	u16 s1g_short_beacon_period;

Does the driver even need to know? For hwsim this is just additional
complexity - mac80211 could set the beacon interval to the short beacon
interval, and simply return the long beacon every
"s1g_short_beacon_period" (which perhaps should be called
"s1g_long_beacon_period")?

But depends on how your driver works I guess. Given these parameters
though, you can't really offload it entirely either since there's no way
to get a short beacon template now.


> +		if (params->s1g_short_beacon.short_interval) {
> +			/*
> +			 * IEEE80211-2024 11.1.3.10.2:
> +			 * beacon_int = n * short_beacon_int where n is a
> +			 * positive integer and represents the short beacon
> +			 * period which is the number of short beacons
> +			 * transmitted per long beacon.
> +			 */
> +			if (do_div(beacon_interval,
> +				   params->s1g_short_beacon.short_interval)) {

Again not sure I understand the use of do_div, and wouldn't it be enough
for cfg80211 to check?

johannes





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux