diff mbox series

[v2,1/3] nl80211: retrieve EHT capabilities in AP mode

Message ID 20220323225443.13947-1-quic_alokad@quicinc.com (mailing list archive)
State Changes Requested
Delegated to: Johannes Berg
Headers show
Series [v2,1/3] nl80211: retrieve EHT capabilities in AP mode | expand

Commit Message

Aloka Dixit March 23, 2022, 10:54 p.m. UTC
From: Vikram Kandukuri <quic_vikram@quicinc.com>

Add support to retrieve the EHT capabilities element passed by
the userspace in the beacon template and store the pointer in
struct cfg80211_ap_settings to be used by MAC80211.

Signed-off-by: Vikram Kandukuri <quic_vikram@quicinc.com>
Co-developed-by: Aloka Dixit <quic_alokad@quicinc.com>
Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
Co-developed-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
---
v2: Rebased on top of wireless-next git repository

 include/net/cfg80211.h | 2 ++
 net/wireless/nl80211.c | 3 +++
 2 files changed, 5 insertions(+)


base-commit: f5ba9781dde28f87d1e6db580ab63b308b5b5e1b

Comments

Johannes Berg May 4, 2022, 11:34 a.m. UTC | #1
On Wed, 2022-03-23 at 15:54 -0700, Aloka Dixit wrote:
> From: Vikram Kandukuri <quic_vikram@quicinc.com>
> 
> Add support to retrieve the EHT capabilities element passed by
> the userspace in the beacon template and store the pointer in
> struct cfg80211_ap_settings to be used by MAC80211.


s/MAC80211/drivers/ I guess

> +	cap = cfg80211_find_ext_elem(WLAN_EID_EXT_EHT_CAPABILITY, ies, ies_len);
> +	if (cap && cap->datalen >= sizeof(*params->eht_cap) + 1)
> +		params->eht_cap = (void *)(cap->data + 1);
> 

Feels like this should be using ieee80211_eht_capa_size_ok() in some
way, since drivers would probably use it? Maybe even returning an error
to userspace if it's not OK?

johannes
diff mbox series

Patch

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 68713388b617..845db70a9473 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1285,6 +1285,7 @@  struct cfg80211_unsol_bcast_probe_resp {
  * @ht_cap: HT capabilities (or %NULL if HT isn't enabled)
  * @vht_cap: VHT capabilities (or %NULL if VHT isn't enabled)
  * @he_cap: HE capabilities (or %NULL if HE isn't enabled)
+ * @eht_cap: EHT capabilities (or %NULL if EHT isn't enabled)
  * @ht_required: stations must support HT
  * @vht_required: stations must support VHT
  * @twt_responder: Enable Target Wait Time
@@ -1322,6 +1323,7 @@  struct cfg80211_ap_settings {
 	const struct ieee80211_vht_cap *vht_cap;
 	const struct ieee80211_he_cap_elem *he_cap;
 	const struct ieee80211_he_operation *he_oper;
+	const struct ieee80211_eht_cap_elem *eht_cap;
 	bool ht_required, vht_required, he_required, sae_h2e_required;
 	bool twt_responder;
 	u32 flags;
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index ee1c2b6b6971..71946ad89059 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5442,6 +5442,9 @@  static void nl80211_calculate_ap_params(struct cfg80211_ap_settings *params)
 	cap = cfg80211_find_ext_elem(WLAN_EID_EXT_HE_OPERATION, ies, ies_len);
 	if (cap && cap->datalen >= sizeof(*params->he_oper) + 1)
 		params->he_oper = (void *)(cap->data + 1);
+	cap = cfg80211_find_ext_elem(WLAN_EID_EXT_EHT_CAPABILITY, ies, ies_len);
+	if (cap && cap->datalen >= sizeof(*params->eht_cap) + 1)
+		params->eht_cap = (void *)(cap->data + 1);
 }
 
 static bool nl80211_get_ap_channel(struct cfg80211_registered_device *rdev,