* [PATCH v5 1/3] nl80211: Add support for beacon tx mode
@ 2021-08-10 8:56 ` Maharaja Kennadyrajan
0 siblings, 0 replies; 24+ messages in thread
From: Maharaja Kennadyrajan @ 2021-08-10 8:56 UTC (permalink / raw)
To: ath11k, linux-wireless; +Cc: Maharaja Kennadyrajan
User can configure the below beacon tx mode
1. Staggered mode and 2. Burst mode while bring-up the AP
or MESH.
Beacons can be sent out in burst(continuously in a single shot
one after another) or staggered (equally spread out over beacon
interval) mode.
Set the beacon_tx_mode as 1 for Staggered mode and 2 for
burst mode.
Hence, added the support in the nl80211/cfg80211
layer to honour the beacon tx mode configuration and pass
this value to the driver.
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-00630-QCAHKSWPL_SILICONZ-2
Signed-off-by: Maharaja Kennadyrajan <mkenna@codeaurora.org>
---
V5: Addressed Johannes's & Felix's comments on v4 patch.
V4: Rebases on latest ath.git TOT.
V3: Addressed Johnson's comment on v2 patch.
V2: Addressed Johannes's comment on v1 patch.
include/net/cfg80211.h | 4 ++++
include/uapi/linux/nl80211.h | 20 ++++++++++++++++++++
net/wireless/nl80211.c | 11 +++++++++++
3 files changed, 35 insertions(+)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 161cdf7..8c3777b 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1189,6 +1189,7 @@ enum cfg80211_ap_settings_flags {
* @he_oper: HE operation IE (or %NULL if HE isn't enabled)
* @fils_discovery: FILS discovery transmission parameters
* @unsol_bcast_probe_resp: Unsolicited broadcast probe response parameters
+ * @beacon_tx_mode: Beacon Tx Mode setting
*/
struct cfg80211_ap_settings {
struct cfg80211_chan_def chandef;
@@ -1221,6 +1222,7 @@ struct cfg80211_ap_settings {
struct cfg80211_he_bss_color he_bss_color;
struct cfg80211_fils_discovery fils_discovery;
struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp;
+ enum nl80211_beacon_tx_mode beacon_tx_mode;
};
/**
@@ -2066,6 +2068,7 @@ struct mesh_config {
* to operate on DFS channels.
* @control_port_over_nl80211: TRUE if userspace expects to exchange control
* port frames over NL80211 instead of the network interface.
+ * @beacon_tx_mode: Beacon Tx Mode setting.
*
* These parameters are fixed when the mesh is created.
*/
@@ -2089,6 +2092,7 @@ struct mesh_setup {
struct cfg80211_bitrate_mask beacon_rate;
bool userspace_handles_dfs;
bool control_port_over_nl80211;
+ enum nl80211_beacon_tx_mode beacon_tx_mode;
};
/**
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index db47499..29c6429 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -2560,6 +2560,13 @@ enum nl80211_commands {
* disassoc events to indicate that an immediate reconnect to the AP
* is desired.
*
+ * @NL80211_ATTR_BEACON_TX_MODE: used to configure the beacon tx mode (u32),
+ * as specified in the &enum nl80211_beacon_tx_mode. The user-space
+ * shall use this attribute to configure the tx mode of beacons.
+ * Beacons can be sent out in burst(continuously in a single shot
+ * one after another) or staggered (equally spread out over beacon
+ * interval) mode.
+ *
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3057,6 +3064,8 @@ enum nl80211_attrs {
NL80211_ATTR_DISABLE_HE,
+ NL80211_ATTR_BEACON_TX_MODE,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
@@ -7306,4 +7315,15 @@ enum nl80211_sar_specs_attrs {
NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
};
+/**
+ * enum nl80211_beacon_tx_mode - Beacon Tx Mode enum.
+ * @NL80211_BEACON_STAGGERED_MODE: Used to configure beacon tx mode as
+ * staggered mode. This is the default beacon tx mode.
+ * @NL80211_BEACON_BURST_MODE: Used to configure beacon tx mode as burst mode.
+ */
+enum nl80211_beacon_tx_mode {
+ NL80211_BEACON_STAGGERED_MODE = 1,
+ NL80211_BEACON_BURST_MODE = 2,
+};
+
#endif /* __LINUX_NL80211_H */
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 50eb405..c00e326 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -759,6 +759,9 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
[NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
[NL80211_ATTR_SAR_SPEC] = NLA_POLICY_NESTED(sar_policy),
[NL80211_ATTR_DISABLE_HE] = { .type = NLA_FLAG },
+ [NL80211_ATTR_BEACON_TX_MODE] =
+ NLA_POLICY_RANGE(NLA_U32, NL80211_BEACON_STAGGERED_MODE,
+ NL80211_BEACON_BURST_MODE),
};
/* policy for the key attributes */
@@ -5346,6 +5349,10 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
params.dtim_period =
nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]);
+ if (info->attrs[NL80211_ATTR_BEACON_TX_MODE])
+ params.beacon_tx_mode =
+ nla_get_u32(info->attrs[NL80211_ATTR_BEACON_TX_MODE]);
+
err = cfg80211_validate_beacon_int(rdev, dev->ieee80211_ptr->iftype,
params.beacon_interval);
if (err)
@@ -11900,6 +11907,10 @@ static int nl80211_join_mesh(struct sk_buff *skb, struct genl_info *info)
return -EINVAL;
}
+ if (info->attrs[NL80211_ATTR_BEACON_TX_MODE])
+ setup.beacon_tx_mode =
+ nla_get_u32(info->attrs[NL80211_ATTR_BEACON_TX_MODE]);
+
if (info->attrs[NL80211_ATTR_MESH_SETUP]) {
/* parse additional setup parameters if given */
err = nl80211_parse_mesh_setup(info, &setup);
--
2.7.4
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
2021-08-10 8:56 ` Maharaja Kennadyrajan
@ 2021-08-10 10:14 ` Felix Fietkau
-1 siblings, 0 replies; 24+ messages in thread
From: Felix Fietkau @ 2021-08-10 10:14 UTC (permalink / raw)
To: Maharaja Kennadyrajan, ath11k, linux-wireless
On 2021-08-10 10:56, Maharaja Kennadyrajan wrote:
> User can configure the below beacon tx mode
> 1. Staggered mode and 2. Burst mode while bring-up the AP
> or MESH.
>
> Beacons can be sent out in burst(continuously in a single shot
> one after another) or staggered (equally spread out over beacon
> interval) mode.
>
> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
> burst mode.
What's the advantage of one over the other? When and why would the user
choose a different mode other than the default?
- Felix
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
@ 2021-08-10 10:14 ` Felix Fietkau
0 siblings, 0 replies; 24+ messages in thread
From: Felix Fietkau @ 2021-08-10 10:14 UTC (permalink / raw)
To: Maharaja Kennadyrajan, ath11k, linux-wireless
On 2021-08-10 10:56, Maharaja Kennadyrajan wrote:
> User can configure the below beacon tx mode
> 1. Staggered mode and 2. Burst mode while bring-up the AP
> or MESH.
>
> Beacons can be sent out in burst(continuously in a single shot
> one after another) or staggered (equally spread out over beacon
> interval) mode.
>
> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
> burst mode.
What's the advantage of one over the other? When and why would the user
choose a different mode other than the default?
- Felix
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
2021-08-10 10:14 ` Felix Fietkau
@ 2021-08-10 12:02 ` Maharaja Kennadyrajan
-1 siblings, 0 replies; 24+ messages in thread
From: Maharaja Kennadyrajan @ 2021-08-10 12:02 UTC (permalink / raw)
To: Felix Fietkau; +Cc: ath11k, linux-wireless
On 2021-08-10 15:44, Felix Fietkau wrote:
> On 2021-08-10 10:56, Maharaja Kennadyrajan wrote:
>> User can configure the below beacon tx mode
>> 1. Staggered mode and 2. Burst mode while bring-up the AP
>> or MESH.
>>
>> Beacons can be sent out in burst(continuously in a single shot
>> one after another) or staggered (equally spread out over beacon
>> interval) mode.
>>
>> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
>> burst mode.
> What's the advantage of one over the other? When and why would the user
> choose a different mode other than the default?
>
[Maha]: In the multi-vap scenario and default or staggered mode,
tx failure of the packets will happen if the packets duration
is greater than the beacon interval between the two vaps.
In case of burst mode it works, where during retry it transmits
the packet.
> - Felix
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
@ 2021-08-10 12:02 ` Maharaja Kennadyrajan
0 siblings, 0 replies; 24+ messages in thread
From: Maharaja Kennadyrajan @ 2021-08-10 12:02 UTC (permalink / raw)
To: Felix Fietkau; +Cc: ath11k, linux-wireless
On 2021-08-10 15:44, Felix Fietkau wrote:
> On 2021-08-10 10:56, Maharaja Kennadyrajan wrote:
>> User can configure the below beacon tx mode
>> 1. Staggered mode and 2. Burst mode while bring-up the AP
>> or MESH.
>>
>> Beacons can be sent out in burst(continuously in a single shot
>> one after another) or staggered (equally spread out over beacon
>> interval) mode.
>>
>> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
>> burst mode.
> What's the advantage of one over the other? When and why would the user
> choose a different mode other than the default?
>
[Maha]: In the multi-vap scenario and default or staggered mode,
tx failure of the packets will happen if the packets duration
is greater than the beacon interval between the two vaps.
In case of burst mode it works, where during retry it transmits
the packet.
> - Felix
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
2021-08-10 12:02 ` Maharaja Kennadyrajan
@ 2021-08-10 14:33 ` Felix Fietkau
-1 siblings, 0 replies; 24+ messages in thread
From: Felix Fietkau @ 2021-08-10 14:33 UTC (permalink / raw)
To: Maharaja Kennadyrajan; +Cc: ath11k, linux-wireless
On 2021-08-10 14:02, Maharaja Kennadyrajan wrote:
> On 2021-08-10 15:44, Felix Fietkau wrote:
>> On 2021-08-10 10:56, Maharaja Kennadyrajan wrote:
>>> User can configure the below beacon tx mode
>>> 1. Staggered mode and 2. Burst mode while bring-up the AP
>>> or MESH.
>>>
>>> Beacons can be sent out in burst(continuously in a single shot
>>> one after another) or staggered (equally spread out over beacon
>>> interval) mode.
>>>
>>> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
>>> burst mode.
>> What's the advantage of one over the other? When and why would the user
>> choose a different mode other than the default?
>>
> [Maha]: In the multi-vap scenario and default or staggered mode,
> tx failure of the packets will happen if the packets duration
> is greater than the beacon interval between the two vaps.
> In case of burst mode it works, where during retry it transmits
> the packet.
It still seems to me like something that the driver should detect and
handle internally without user configuration, based on number of VAPs
and maybe multicast/beacon rate (since the packet duration issue will be
worse with CCK rates).
- Felix
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
@ 2021-08-10 14:33 ` Felix Fietkau
0 siblings, 0 replies; 24+ messages in thread
From: Felix Fietkau @ 2021-08-10 14:33 UTC (permalink / raw)
To: Maharaja Kennadyrajan; +Cc: ath11k, linux-wireless
On 2021-08-10 14:02, Maharaja Kennadyrajan wrote:
> On 2021-08-10 15:44, Felix Fietkau wrote:
>> On 2021-08-10 10:56, Maharaja Kennadyrajan wrote:
>>> User can configure the below beacon tx mode
>>> 1. Staggered mode and 2. Burst mode while bring-up the AP
>>> or MESH.
>>>
>>> Beacons can be sent out in burst(continuously in a single shot
>>> one after another) or staggered (equally spread out over beacon
>>> interval) mode.
>>>
>>> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
>>> burst mode.
>> What's the advantage of one over the other? When and why would the user
>> choose a different mode other than the default?
>>
> [Maha]: In the multi-vap scenario and default or staggered mode,
> tx failure of the packets will happen if the packets duration
> is greater than the beacon interval between the two vaps.
> In case of burst mode it works, where during retry it transmits
> the packet.
It still seems to me like something that the driver should detect and
handle internally without user configuration, based on number of VAPs
and maybe multicast/beacon rate (since the packet duration issue will be
worse with CCK rates).
- Felix
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
2021-08-10 8:56 ` Maharaja Kennadyrajan
@ 2021-08-10 10:52 ` Sven Eckelmann
-1 siblings, 0 replies; 24+ messages in thread
From: Sven Eckelmann @ 2021-08-10 10:52 UTC (permalink / raw)
To: ath11k, linux-wireless, Maharaja Kennadyrajan
[-- Attachment #1: Type: text/plain, Size: 254 bytes --]
On Tuesday, 10 August 2021 10:56:21 CEST Maharaja Kennadyrajan wrote:
> 1. Staggered mode and 2. Burst mode while bring-up the AP
> or MESH.
Why when you bring up mesh or AP when it is actually a global setting for this
radio/PHY?
Kind regards,
Sven
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
@ 2021-08-10 10:52 ` Sven Eckelmann
0 siblings, 0 replies; 24+ messages in thread
From: Sven Eckelmann @ 2021-08-10 10:52 UTC (permalink / raw)
To: ath11k, linux-wireless, Maharaja Kennadyrajan
[-- Attachment #1.1: Type: text/plain, Size: 254 bytes --]
On Tuesday, 10 August 2021 10:56:21 CEST Maharaja Kennadyrajan wrote:
> 1. Staggered mode and 2. Burst mode while bring-up the AP
> or MESH.
Why when you bring up mesh or AP when it is actually a global setting for this
radio/PHY?
Kind regards,
Sven
[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 102 bytes --]
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
2021-08-10 10:52 ` Sven Eckelmann
@ 2022-03-24 18:10 ` Maharaja Kennadyrajan
-1 siblings, 0 replies; 24+ messages in thread
From: Maharaja Kennadyrajan @ 2022-03-24 18:10 UTC (permalink / raw)
To: Sven Eckelmann; +Cc: ath11k, linux-wireless
On 2021-08-10 16:22, Sven Eckelmann wrote:
> On Tuesday, 10 August 2021 10:56:21 CEST Maharaja Kennadyrajan wrote:
>> 1. Staggered mode and 2. Burst mode while bring-up the AP
>> or MESH.
>
> Why when you bring up mesh or AP when it is actually a global setting
> for this
> radio/PHY?
[Maha]: yes, it is radio/PHY setting only and it is supported for AP and
MESH mode now.
>
> Kind regards,
> Sven
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
@ 2022-03-24 18:10 ` Maharaja Kennadyrajan
0 siblings, 0 replies; 24+ messages in thread
From: Maharaja Kennadyrajan @ 2022-03-24 18:10 UTC (permalink / raw)
To: Sven Eckelmann; +Cc: ath11k, linux-wireless
On 2021-08-10 16:22, Sven Eckelmann wrote:
> On Tuesday, 10 August 2021 10:56:21 CEST Maharaja Kennadyrajan wrote:
>> 1. Staggered mode and 2. Burst mode while bring-up the AP
>> or MESH.
>
> Why when you bring up mesh or AP when it is actually a global setting
> for this
> radio/PHY?
[Maha]: yes, it is radio/PHY setting only and it is supported for AP and
MESH mode now.
>
> Kind regards,
> Sven
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
2022-03-24 18:10 ` Maharaja Kennadyrajan
@ 2022-03-25 7:26 ` Sven Eckelmann
-1 siblings, 0 replies; 24+ messages in thread
From: Sven Eckelmann @ 2022-03-25 7:26 UTC (permalink / raw)
To: Maharaja Kennadyrajan; +Cc: ath11k, linux-wireless
[-- Attachment #1: Type: text/plain, Size: 252 bytes --]
On Thursday, 24 March 2022 19:10:20 CET Maharaja Kennadyrajan wrote:
> [Maha]: yes, it is radio/PHY setting only and it is supported for AP and
> MESH mode now.
But why are you setting it by vif when it is actually a PHY setting?
Kind regards,
Sven
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
2021-08-10 8:56 ` Maharaja Kennadyrajan
@ 2021-08-10 15:43 ` Jeff Johnson
-1 siblings, 0 replies; 24+ messages in thread
From: Jeff Johnson @ 2021-08-10 15:43 UTC (permalink / raw)
To: Maharaja Kennadyrajan; +Cc: ath11k, linux-wireless, ath11k
On 2021-08-10 01:56, Maharaja Kennadyrajan wrote:
> User can configure the below beacon tx mode
> 1. Staggered mode and 2. Burst mode while bring-up the AP
> or MESH.
>
> Beacons can be sent out in burst(continuously in a single shot
> one after another) or staggered (equally spread out over beacon
> interval) mode.
>
> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
> burst mode.
>
> Hence, added the support in the nl80211/cfg80211
> layer to honour the beacon tx mode configuration and pass
> this value to the driver.
>
> Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-00630-QCAHKSWPL_SILICONZ-2
>
> Signed-off-by: Maharaja Kennadyrajan <mkenna@codeaurora.org>
> ---
>
> V5: Addressed Johannes's & Felix's comments on v4 patch.
>
> V4: Rebases on latest ath.git TOT.
>
> V3: Addressed Johnson's comment on v2 patch.
>
> V2: Addressed Johannes's comment on v1 patch.
>
> include/net/cfg80211.h | 4 ++++
> include/uapi/linux/nl80211.h | 20 ++++++++++++++++++++
> net/wireless/nl80211.c | 11 +++++++++++
> 3 files changed, 35 insertions(+)
>
> diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
> index 161cdf7..8c3777b 100644
> --- a/include/net/cfg80211.h
> +++ b/include/net/cfg80211.h
> @@ -1189,6 +1189,7 @@ enum cfg80211_ap_settings_flags {
> * @he_oper: HE operation IE (or %NULL if HE isn't enabled)
> * @fils_discovery: FILS discovery transmission parameters
> * @unsol_bcast_probe_resp: Unsolicited broadcast probe response
> parameters
> + * @beacon_tx_mode: Beacon Tx Mode setting
> */
> struct cfg80211_ap_settings {
> struct cfg80211_chan_def chandef;
> @@ -1221,6 +1222,7 @@ struct cfg80211_ap_settings {
> struct cfg80211_he_bss_color he_bss_color;
> struct cfg80211_fils_discovery fils_discovery;
> struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp;
> + enum nl80211_beacon_tx_mode beacon_tx_mode;
> };
>
> /**
> @@ -2066,6 +2068,7 @@ struct mesh_config {
> * to operate on DFS channels.
> * @control_port_over_nl80211: TRUE if userspace expects to exchange
> control
> * port frames over NL80211 instead of the network interface.
> + * @beacon_tx_mode: Beacon Tx Mode setting.
> *
> * These parameters are fixed when the mesh is created.
> */
> @@ -2089,6 +2092,7 @@ struct mesh_setup {
> struct cfg80211_bitrate_mask beacon_rate;
> bool userspace_handles_dfs;
> bool control_port_over_nl80211;
> + enum nl80211_beacon_tx_mode beacon_tx_mode;
> };
>
> /**
> diff --git a/include/uapi/linux/nl80211.h
> b/include/uapi/linux/nl80211.h
> index db47499..29c6429 100644
> --- a/include/uapi/linux/nl80211.h
> +++ b/include/uapi/linux/nl80211.h
> @@ -2560,6 +2560,13 @@ enum nl80211_commands {
> * disassoc events to indicate that an immediate reconnect to the AP
> * is desired.
> *
> + * @NL80211_ATTR_BEACON_TX_MODE: used to configure the beacon tx mode
> (u32),
> + * as specified in the &enum nl80211_beacon_tx_mode. The user-space
> + * shall use this attribute to configure the tx mode of beacons.
s/shall/can/
'shall' implies a required action whereas 'can' implies an optional
action
> + * Beacons can be sent out in burst(continuously in a single shot
> + * one after another) or staggered (equally spread out over beacon
> + * interval) mode.
> + *
> * @NUM_NL80211_ATTR: total number of nl80211_attrs available
> * @NL80211_ATTR_MAX: highest attribute number currently defined
> * @__NL80211_ATTR_AFTER_LAST: internal use
> @@ -3057,6 +3064,8 @@ enum nl80211_attrs {
>
> NL80211_ATTR_DISABLE_HE,
>
> + NL80211_ATTR_BEACON_TX_MODE,
> +
> /* add attributes here, update the policy in nl80211.c */
>
> __NL80211_ATTR_AFTER_LAST,
> @@ -7306,4 +7315,15 @@ enum nl80211_sar_specs_attrs {
> NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
> };
>
> +/**
> + * enum nl80211_beacon_tx_mode - Beacon Tx Mode enum.
> + * @NL80211_BEACON_STAGGERED_MODE: Used to configure beacon tx mode as
> + * staggered mode. This is the default beacon tx mode.
> + * @NL80211_BEACON_BURST_MODE: Used to configure beacon tx mode as
> burst
> mode.
> + */
> +enum nl80211_beacon_tx_mode {
what happened to 0?
now we're back to the issue that I originally reported that if the
attribute is not present you send 0 to the driver which is not a valid
enumeration
See my additional comments further below
> + NL80211_BEACON_STAGGERED_MODE = 1,
> + NL80211_BEACON_BURST_MODE = 2,
> +};
> +
> #endif /* __LINUX_NL80211_H */
> diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
> index 50eb405..c00e326 100644
> --- a/net/wireless/nl80211.c
> +++ b/net/wireless/nl80211.c
> @@ -759,6 +759,9 @@ static const struct nla_policy
> nl80211_policy[NUM_NL80211_ATTR] = {
> [NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
> [NL80211_ATTR_SAR_SPEC] = NLA_POLICY_NESTED(sar_policy),
> [NL80211_ATTR_DISABLE_HE] = { .type = NLA_FLAG },
> + [NL80211_ATTR_BEACON_TX_MODE] =
> + NLA_POLICY_RANGE(NLA_U32, NL80211_BEACON_STAGGERED_MODE,
> + NL80211_BEACON_BURST_MODE),
> };
>
> /* policy for the key attributes */
> @@ -5346,6 +5349,10 @@ static int nl80211_start_ap(struct sk_buff *skb,
> struct genl_info *info)
> params.dtim_period =
> nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]);
>
> + if (info->attrs[NL80211_ATTR_BEACON_TX_MODE])
> + params.beacon_tx_mode =
> +
> nla_get_u32(info->attrs[NL80211_ATTR_BEACON_TX_MODE]);
> +
> err = cfg80211_validate_beacon_int(rdev,
> dev->ieee80211_ptr->iftype,
> params.beacon_interval);
> if (err)
> @@ -11900,6 +11907,10 @@ static int nl80211_join_mesh(struct sk_buff
> *skb,
> struct genl_info *info)
> return -EINVAL;
> }
>
> + if (info->attrs[NL80211_ATTR_BEACON_TX_MODE])
> + setup.beacon_tx_mode =
> +
> nla_get_u32(info->attrs[NL80211_ATTR_BEACON_TX_MODE]);
> +
if you are not going to have an enum for default = 0 then you need an
else to set
beacon_tx_mode = NL80211_BEACON_STAGGERED_MODE
> if (info->attrs[NL80211_ATTR_MESH_SETUP]) {
> /* parse additional setup parameters if given */
> err = nl80211_parse_mesh_setup(info, &setup);
> --
> 2.7.4
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v5 1/3] nl80211: Add support for beacon tx mode
@ 2021-08-10 15:43 ` Jeff Johnson
0 siblings, 0 replies; 24+ messages in thread
From: Jeff Johnson @ 2021-08-10 15:43 UTC (permalink / raw)
To: Maharaja Kennadyrajan; +Cc: ath11k, linux-wireless, ath11k
On 2021-08-10 01:56, Maharaja Kennadyrajan wrote:
> User can configure the below beacon tx mode
> 1. Staggered mode and 2. Burst mode while bring-up the AP
> or MESH.
>
> Beacons can be sent out in burst(continuously in a single shot
> one after another) or staggered (equally spread out over beacon
> interval) mode.
>
> Set the beacon_tx_mode as 1 for Staggered mode and 2 for
> burst mode.
>
> Hence, added the support in the nl80211/cfg80211
> layer to honour the beacon tx mode configuration and pass
> this value to the driver.
>
> Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-00630-QCAHKSWPL_SILICONZ-2
>
> Signed-off-by: Maharaja Kennadyrajan <mkenna@codeaurora.org>
> ---
>
> V5: Addressed Johannes's & Felix's comments on v4 patch.
>
> V4: Rebases on latest ath.git TOT.
>
> V3: Addressed Johnson's comment on v2 patch.
>
> V2: Addressed Johannes's comment on v1 patch.
>
> include/net/cfg80211.h | 4 ++++
> include/uapi/linux/nl80211.h | 20 ++++++++++++++++++++
> net/wireless/nl80211.c | 11 +++++++++++
> 3 files changed, 35 insertions(+)
>
> diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
> index 161cdf7..8c3777b 100644
> --- a/include/net/cfg80211.h
> +++ b/include/net/cfg80211.h
> @@ -1189,6 +1189,7 @@ enum cfg80211_ap_settings_flags {
> * @he_oper: HE operation IE (or %NULL if HE isn't enabled)
> * @fils_discovery: FILS discovery transmission parameters
> * @unsol_bcast_probe_resp: Unsolicited broadcast probe response
> parameters
> + * @beacon_tx_mode: Beacon Tx Mode setting
> */
> struct cfg80211_ap_settings {
> struct cfg80211_chan_def chandef;
> @@ -1221,6 +1222,7 @@ struct cfg80211_ap_settings {
> struct cfg80211_he_bss_color he_bss_color;
> struct cfg80211_fils_discovery fils_discovery;
> struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp;
> + enum nl80211_beacon_tx_mode beacon_tx_mode;
> };
>
> /**
> @@ -2066,6 +2068,7 @@ struct mesh_config {
> * to operate on DFS channels.
> * @control_port_over_nl80211: TRUE if userspace expects to exchange
> control
> * port frames over NL80211 instead of the network interface.
> + * @beacon_tx_mode: Beacon Tx Mode setting.
> *
> * These parameters are fixed when the mesh is created.
> */
> @@ -2089,6 +2092,7 @@ struct mesh_setup {
> struct cfg80211_bitrate_mask beacon_rate;
> bool userspace_handles_dfs;
> bool control_port_over_nl80211;
> + enum nl80211_beacon_tx_mode beacon_tx_mode;
> };
>
> /**
> diff --git a/include/uapi/linux/nl80211.h
> b/include/uapi/linux/nl80211.h
> index db47499..29c6429 100644
> --- a/include/uapi/linux/nl80211.h
> +++ b/include/uapi/linux/nl80211.h
> @@ -2560,6 +2560,13 @@ enum nl80211_commands {
> * disassoc events to indicate that an immediate reconnect to the AP
> * is desired.
> *
> + * @NL80211_ATTR_BEACON_TX_MODE: used to configure the beacon tx mode
> (u32),
> + * as specified in the &enum nl80211_beacon_tx_mode. The user-space
> + * shall use this attribute to configure the tx mode of beacons.
s/shall/can/
'shall' implies a required action whereas 'can' implies an optional
action
> + * Beacons can be sent out in burst(continuously in a single shot
> + * one after another) or staggered (equally spread out over beacon
> + * interval) mode.
> + *
> * @NUM_NL80211_ATTR: total number of nl80211_attrs available
> * @NL80211_ATTR_MAX: highest attribute number currently defined
> * @__NL80211_ATTR_AFTER_LAST: internal use
> @@ -3057,6 +3064,8 @@ enum nl80211_attrs {
>
> NL80211_ATTR_DISABLE_HE,
>
> + NL80211_ATTR_BEACON_TX_MODE,
> +
> /* add attributes here, update the policy in nl80211.c */
>
> __NL80211_ATTR_AFTER_LAST,
> @@ -7306,4 +7315,15 @@ enum nl80211_sar_specs_attrs {
> NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
> };
>
> +/**
> + * enum nl80211_beacon_tx_mode - Beacon Tx Mode enum.
> + * @NL80211_BEACON_STAGGERED_MODE: Used to configure beacon tx mode as
> + * staggered mode. This is the default beacon tx mode.
> + * @NL80211_BEACON_BURST_MODE: Used to configure beacon tx mode as
> burst
> mode.
> + */
> +enum nl80211_beacon_tx_mode {
what happened to 0?
now we're back to the issue that I originally reported that if the
attribute is not present you send 0 to the driver which is not a valid
enumeration
See my additional comments further below
> + NL80211_BEACON_STAGGERED_MODE = 1,
> + NL80211_BEACON_BURST_MODE = 2,
> +};
> +
> #endif /* __LINUX_NL80211_H */
> diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
> index 50eb405..c00e326 100644
> --- a/net/wireless/nl80211.c
> +++ b/net/wireless/nl80211.c
> @@ -759,6 +759,9 @@ static const struct nla_policy
> nl80211_policy[NUM_NL80211_ATTR] = {
> [NL80211_ATTR_RECONNECT_REQUESTED] = { .type = NLA_REJECT },
> [NL80211_ATTR_SAR_SPEC] = NLA_POLICY_NESTED(sar_policy),
> [NL80211_ATTR_DISABLE_HE] = { .type = NLA_FLAG },
> + [NL80211_ATTR_BEACON_TX_MODE] =
> + NLA_POLICY_RANGE(NLA_U32, NL80211_BEACON_STAGGERED_MODE,
> + NL80211_BEACON_BURST_MODE),
> };
>
> /* policy for the key attributes */
> @@ -5346,6 +5349,10 @@ static int nl80211_start_ap(struct sk_buff *skb,
> struct genl_info *info)
> params.dtim_period =
> nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]);
>
> + if (info->attrs[NL80211_ATTR_BEACON_TX_MODE])
> + params.beacon_tx_mode =
> +
> nla_get_u32(info->attrs[NL80211_ATTR_BEACON_TX_MODE]);
> +
> err = cfg80211_validate_beacon_int(rdev,
> dev->ieee80211_ptr->iftype,
> params.beacon_interval);
> if (err)
> @@ -11900,6 +11907,10 @@ static int nl80211_join_mesh(struct sk_buff
> *skb,
> struct genl_info *info)
> return -EINVAL;
> }
>
> + if (info->attrs[NL80211_ATTR_BEACON_TX_MODE])
> + setup.beacon_tx_mode =
> +
> nla_get_u32(info->attrs[NL80211_ATTR_BEACON_TX_MODE]);
> +
if you are not going to have an enum for default = 0 then you need an
else to set
beacon_tx_mode = NL80211_BEACON_STAGGERED_MODE
> if (info->attrs[NL80211_ATTR_MESH_SETUP]) {
> /* parse additional setup parameters if given */
> err = nl80211_parse_mesh_setup(info, &setup);
> --
> 2.7.4
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread