2022-02-16 07:15:33

by Aloka Dixit

[permalink] [raw]
Subject: [PATCH 1/3] nl80211: retrieve EHT capabilities in AP mode

From: Vikram Kandukuri <[email protected]>

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 <[email protected]>
Co-developed-by: Aloka Dixit <[email protected]>
Signed-off-by: Aloka Dixit <[email protected]>
Co-developed-by: Veerendranath Jakkam <[email protected]>
Signed-off-by: Veerendranath Jakkam <[email protected]>
---
include/net/cfg80211.h | 2 ++
net/wireless/nl80211.c | 3 +++
2 files changed, 5 insertions(+)

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 136c0c537334..aaf25645aef3 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 1595e14fd678..03eb6870e60f 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5434,6 +5434,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,
--
2.31.1