mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-21 03:13:17 +00:00
49 lines
1.9 KiB
Diff
49 lines
1.9 KiB
Diff
From 55051ffe7f3d44875fb90d8fe9601ea0604c0186 Mon Sep 17 00:00:00 2001
|
|
From: Mordechay Goodstein <mordechay.goodstein@intel.com>
|
|
Date: Sat, 30 Jul 2022 03:51:08 +0300
|
|
Subject: [PATCH] wifi: mac80211: mlme: don't add empty EML capabilities
|
|
|
|
Draft P802.11be_D2.1, section 35.3.17 states that the EML Capabilities
|
|
Field shouldn't be included in case the device doesn't have support for
|
|
EMLSR or EMLMR.
|
|
|
|
Fixes: 81151ce462e5 ("wifi: mac80211: support MLO authentication/association with one link")
|
|
Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
|
|
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|
---
|
|
net/mac80211/mlme.c | 13 ++++++++++---
|
|
1 file changed, 10 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
|
|
index 0093977..5b5892b 100644
|
|
--- a/net/mac80211/mlme.c
|
|
+++ b/net/mac80211/mlme.c
|
|
@@ -1222,14 +1222,21 @@ static void ieee80211_assoc_add_ml_elem(struct ieee80211_sub_if_data *sdata,
|
|
ml_elem = skb_put(skb, sizeof(*ml_elem));
|
|
ml_elem->control =
|
|
cpu_to_le16(IEEE80211_ML_CONTROL_TYPE_BASIC |
|
|
- IEEE80211_MLC_BASIC_PRES_EML_CAPA |
|
|
IEEE80211_MLC_BASIC_PRES_MLD_CAPA_OP);
|
|
common = skb_put(skb, sizeof(*common));
|
|
common->len = sizeof(*common) +
|
|
- 2 + /* EML capabilities */
|
|
2; /* MLD capa/ops */
|
|
memcpy(common->mld_mac_addr, sdata->vif.addr, ETH_ALEN);
|
|
- skb_put_data(skb, &eml_capa, sizeof(eml_capa));
|
|
+
|
|
+ /* add EML_CAPA only if needed, see Draft P802.11be_D2.1, 35.3.17 */
|
|
+ if (eml_capa &
|
|
+ cpu_to_le16((IEEE80211_EML_CAP_EMLSR_SUPP |
|
|
+ IEEE80211_EML_CAP_EMLMR_SUPPORT))) {
|
|
+ common->len += 2; /* EML capabilities */
|
|
+ ml_elem->control |=
|
|
+ cpu_to_le16(IEEE80211_MLC_BASIC_PRES_EML_CAPA);
|
|
+ skb_put_data(skb, &eml_capa, sizeof(eml_capa));
|
|
+ }
|
|
/* need indication from userspace to support this */
|
|
mld_capa_ops &= ~cpu_to_le16(IEEE80211_MLD_CAP_OP_TID_TO_LINK_MAP_NEG_SUPP);
|
|
skb_put_data(skb, &mld_capa_ops, sizeof(mld_capa_ops));
|
|
--
|
|
2.17.1
|
|
|