As per IEEE 802.11be-2024 - 9.4.2.321, EHT operation element contains MCS15 Disable subfield as the sixth bit, which is set when MCS15 support is not enabled. Get MCS15 support from EHT operation params and add it in link_conf so that driver can use this value to know if EHT-MCS 15 reception is enabled. Co-developed-by: Dhanavandhana Kannan <quic_dhanavan1@xxxxxxxxxxx> Signed-off-by: Dhanavandhana Kannan <quic_dhanavan1@xxxxxxxxxxx> Signed-off-by: Mohan Kumar G <quic_mkumarg@xxxxxxxxxxx> --- NOTE: An upcoming ath12k patch will utilize this change. --- include/linux/ieee80211.h | 1 + include/net/mac80211.h | 2 ++ net/mac80211/cfg.c | 3 +++ 3 files changed, 6 insertions(+) diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 15a87f522017..fd26930a26f8 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -2325,6 +2325,7 @@ struct ieee80211_eht_cap_elem { #define IEEE80211_EHT_OPER_EHT_DEF_PE_DURATION 0x04 #define IEEE80211_EHT_OPER_GROUP_ADDRESSED_BU_IND_LIMIT 0x08 #define IEEE80211_EHT_OPER_GROUP_ADDRESSED_BU_IND_EXP_MASK 0x30 +#define IEEE80211_EHT_OPER_MCS15_DISABLE 0x40 /** * struct ieee80211_eht_operation - eht operation element diff --git a/include/net/mac80211.h b/include/net/mac80211.h index fdafc37d17cc..bdddca284208 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -707,6 +707,7 @@ struct ieee80211_parsed_tpe { * @eht_support: does this BSS support EHT * @epcs_support: does this BSS support EPCS * @csa_active: marks whether a channel switch is going on. + * @disable_mcs15: disable EHT-MCS 15 reception capability. * @mu_mimo_owner: indicates interface owns MU-MIMO capability * @chanctx_conf: The channel context this interface is assigned to, or %NULL * when it is not assigned. This pointer is RCU-protected due to the TX @@ -830,6 +831,7 @@ struct ieee80211_bss_conf { bool eht_support; bool epcs_support; bool csa_active; + bool disable_mcs15; bool mu_mimo_owner; struct ieee80211_chanctx_conf __rcu *chanctx_conf; diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 9017b98fea04..e521eafc69e5 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1421,6 +1421,9 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev, (IEEE80211_EHT_PHY_CAP7_NON_OFDMA_UL_MU_MIMO_80MHZ | IEEE80211_EHT_PHY_CAP7_NON_OFDMA_UL_MU_MIMO_160MHZ | IEEE80211_EHT_PHY_CAP7_NON_OFDMA_UL_MU_MIMO_320MHZ); + link_conf->disable_mcs15 = + !!(u8_get_bits(params->eht_oper->params, + IEEE80211_EHT_OPER_MCS15_DISABLE)); } else { link_conf->eht_su_beamformer = false; link_conf->eht_su_beamformee = false; base-commit: f600832794c91d7021d7337104734246b02a2b86 -- 2.34.1