Commit 36f84235 authored by Muna Sinada's avatar Muna Sinada Committed by Johannes Berg
Browse files

cfg80211: support disabling EHT mode



Allow userspace to disable EHT mode during association.

Signed-off-by: default avatarMuna Sinada <quic_msinada@quicinc.com>
Signed-off-by: default avatarAloka Dixit <quic_alokad@quicinc.com>
Link: https://lore.kernel.org/r/20220323224636.20211-1-quic_alokad@quicinc.com


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent b041b7b9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2735,6 +2735,7 @@ struct cfg80211_auth_request {
 *	userspace if this flag is set. Only applicable for cfg80211_connect()
 *	request (connect callback).
 * @ASSOC_REQ_DISABLE_HE:  Disable HE
 * @ASSOC_REQ_DISABLE_EHT:  Disable EHT
 */
enum cfg80211_assoc_req_flags {
	ASSOC_REQ_DISABLE_HT			= BIT(0),
@@ -2742,6 +2743,7 @@ enum cfg80211_assoc_req_flags {
	ASSOC_REQ_USE_RRM			= BIT(2),
	CONNECT_REQ_EXTERNAL_AUTH_SUPPORT	= BIT(3),
	ASSOC_REQ_DISABLE_HE			= BIT(4),
	ASSOC_REQ_DISABLE_EHT			= BIT(5),
};

/**
+2 −0
Original line number Diff line number Diff line
@@ -3175,6 +3175,8 @@ enum nl80211_attrs {

	NL80211_ATTR_EHT_CAPABILITY,

	NL80211_ATTR_DISABLE_EHT,

	/* add attributes here, update the policy in nl80211.c */

	__NL80211_ATTR_AFTER_LAST,
+7 −0
Original line number Diff line number Diff line
@@ -791,6 +791,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
		NLA_POLICY_RANGE(NLA_BINARY,
				 NL80211_EHT_MIN_CAPABILITY_LEN,
				 NL80211_EHT_MAX_CAPABILITY_LEN),
	[NL80211_ATTR_DISABLE_EHT] = { .type = NLA_FLAG },
};

/* policy for the key attributes */
@@ -10378,6 +10379,9 @@ static int nl80211_associate(struct sk_buff *skb, struct genl_info *info)
	if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE]))
		req.flags |= ASSOC_REQ_DISABLE_HE;

	if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT]))
		req.flags |= ASSOC_REQ_DISABLE_EHT;

	if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK])
		memcpy(&req.vht_capa_mask,
		       nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]),
@@ -11166,6 +11170,9 @@ static int nl80211_connect(struct sk_buff *skb, struct genl_info *info)
	if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE]))
		connect.flags |= ASSOC_REQ_DISABLE_HE;

	if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT]))
		connect.flags |= ASSOC_REQ_DISABLE_EHT;

	if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK])
		memcpy(&connect.vht_capa_mask,
		       nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]),