linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] cfg80211: Handle driver updated MU-EDCA params
@ 2021-08-11  5:45 Muna Sinada
  2021-08-17 13:54 ` Johannes Berg
  0 siblings, 1 reply; 3+ messages in thread
From: Muna Sinada @ 2021-08-11  5:45 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless, Muna Sinada

Add necessary functions and attributes to receive updated MU-EDCA
parameters from driver and send to user space, where management
frame are updated to reflect latest parameters.

Signed-off-by: Muna Sinada <msinada@codeaurora.org>
---
 include/net/cfg80211.h       | 12 ++++++++++++
 include/uapi/linux/nl80211.h | 13 +++++++++++++
 net/wireless/nl80211.c       | 36 ++++++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+)

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 161cdf7df1a0..52770f108131 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -8218,4 +8218,16 @@ void cfg80211_update_owe_info_event(struct net_device *netdev,
  */
 void cfg80211_bss_flush(struct wiphy *wiphy);
 
+/**
+ * cfg80211_update_muedca_params_event - Notify userspace about updated
+ *	MU-EDCA parameters
+ *
+ * @wiphy: the wiphy
+ * @params: Updated MU-EDCA parameters
+ * @gfp: allocation flags
+ */
+void cfg80211_update_muedca_params_event(struct wiphy *wiphy,
+					 struct ieee80211_mu_edca_param_set
+					 *params, gfp_t gfp);
+
 #endif /* __NET_CFG80211_H */
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index db474994fa73..c2d01881c324 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1185,6 +1185,11 @@
  *	passed using %NL80211_ATTR_SAR_SPEC. %NL80211_ATTR_WIPHY is used to
  *	specify the wiphy index to be applied to.
  *
+ * @NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS: Updated MU-EDCA parameters from
+ *	driver. This event is used to update dynamic MU-EDCA parameters in
+ *	management frames, coming from driver and now need to be reflected in
+ *	management frames.
+ *
  * @NL80211_CMD_MAX: highest used command number
  * @__NL80211_CMD_AFTER_LAST: internal use
  */
@@ -1417,6 +1422,8 @@ enum nl80211_commands {
 
 	NL80211_CMD_SET_SAR_SPECS,
 
+	NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS,
+
 	/* add new commands above here */
 
 	/* used to define NL80211_CMD_MAX below */
@@ -2560,6 +2567,10 @@ enum nl80211_commands {
  *	disassoc events to indicate that an immediate reconnect to the AP
  *	is desired.
  *
+ * @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
+ *	%NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command in format described in
+ *	P802.11ax_D4.0 section 9.4.2.245
+ *
  * @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 +3068,8 @@ enum nl80211_attrs {
 
 	NL80211_ATTR_DISABLE_HE,
 
+	NL80211_ATTR_HE_MUEDCA_PARAMS,
+
 	/* add attributes here, update the policy in nl80211.c */
 
 	__NL80211_ATTR_AFTER_LAST,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 50eb405b0690..9abe66cef566 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -18093,6 +18093,42 @@ void cfg80211_update_owe_info_event(struct net_device *netdev,
 }
 EXPORT_SYMBOL(cfg80211_update_owe_info_event);
 
+void cfg80211_update_muedca_params_event(struct wiphy *wiphy,
+					 struct ieee80211_mu_edca_param_set
+					 *params, gfp_t gfp)
+{
+	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
+	struct sk_buff *msg;
+	void *hdr;
+
+	msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp);
+	if (!msg)
+		return;
+
+	hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS);
+	if (!hdr)
+		goto nla_put_failure;
+
+	if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx))
+		goto nla_put_failure;
+
+	if (nla_put(msg, NL80211_ATTR_HE_MUEDCA_PARAMS,
+		    sizeof(struct ieee80211_mu_edca_param_set),
+		    (const void *)params))
+		goto nla_put_failure;
+
+	genlmsg_end(msg, hdr);
+
+	genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0,
+				NL80211_MCGRP_MLME, gfp);
+	return;
+
+nla_put_failure:
+	genlmsg_cancel(msg, hdr);
+	nlmsg_free(msg);
+}
+EXPORT_SYMBOL(cfg80211_update_muedca_params_event);
+
 /* initialisation/exit functions */
 
 int __init nl80211_init(void)
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] cfg80211: Handle driver updated MU-EDCA params
  2021-08-11  5:45 [PATCH v2] cfg80211: Handle driver updated MU-EDCA params Muna Sinada
@ 2021-08-17 13:54 ` Johannes Berg
  2021-08-26 23:18   ` Muna Sinada
  0 siblings, 1 reply; 3+ messages in thread
From: Johannes Berg @ 2021-08-17 13:54 UTC (permalink / raw)
  To: Muna Sinada; +Cc: linux-wireless

On Tue, 2021-08-10 at 22:45 -0700, Muna Sinada wrote:
> Add necessary functions and attributes to receive updated MU-EDCA
> parameters from driver and send to user space, where management
> frame are updated to reflect latest parameters.
> 

On second thought - this really could use some more explanation?

Why are MU-EDCA parameters determined by the driver? What does this
actually do? Is it meant for AP mode, or client mode? Any spec
references?

Mac80211 parses this coming from the AP, so probably this is meant for
AP mode, but why? Why wouldn't hostapd determine the correct parameters?

etc.

johannes


^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH v2] cfg80211: Handle driver updated MU-EDCA params
  2021-08-17 13:54 ` Johannes Berg
@ 2021-08-26 23:18   ` Muna Sinada
  0 siblings, 0 replies; 3+ messages in thread
From: Muna Sinada @ 2021-08-26 23:18 UTC (permalink / raw)
  To: 'Johannes Berg'; +Cc: linux-wireless

Hello Johannes,

The firmware algorithm determines better MU-EDCA parameters based on channel conditions. The updated parameters are used and reported to Hostapd to reflect in AP beacons. These dynamic parameter updates are offloaded to firmware for better user experience, and this would also mean that there are hardly any details on specifically how these parameters are determined but we know that the updated parameters need to be reflected in future beacons. This feature is meant for AP mode, and it is a ath11k feature, thus no spec references.

Thank you,
Muna

-----Original Message-----
From: Johannes Berg <johannes@sipsolutions.net> 
Sent: Tuesday, August 17, 2021 6:54 AM
To: Muna Sinada <msinada@codeaurora.org>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2] cfg80211: Handle driver updated MU-EDCA params

On Tue, 2021-08-10 at 22:45 -0700, Muna Sinada wrote:
> Add necessary functions and attributes to receive updated MU-EDCA 
> parameters from driver and send to user space, where management frame 
> are updated to reflect latest parameters.
> 

On second thought - this really could use some more explanation?

Why are MU-EDCA parameters determined by the driver? What does this actually do? Is it meant for AP mode, or client mode? Any spec references?

Mac80211 parses this coming from the AP, so probably this is meant for AP mode, but why? Why wouldn't hostapd determine the correct parameters?

etc.

johannes



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-08-26 23:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-11  5:45 [PATCH v2] cfg80211: Handle driver updated MU-EDCA params Muna Sinada
2021-08-17 13:54 ` Johannes Berg
2021-08-26 23:18   ` Muna Sinada

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).