cfg80211: add NO-EHT flag to regulatory
authorIlan Peer <ilan.peer@intel.com>
Mon, 14 Feb 2022 16:29:57 +0000 (17:29 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 16 Feb 2022 14:43:14 +0000 (15:43 +0100)
This may be necessary in some cases, add a flag and propagate
it, just like the NO-HE that already exists.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
[split off from a combined 320/no-EHT patch]
Link: https://lore.kernel.org/r/20220214173004.dbb85a7b86bb.Ifc1e2daac51c1cc5f895ccfb79faf5eaec3950ec@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/cfg80211.h
include/uapi/linux/nl80211.h
net/wireless/nl80211.c

index f35ffd8..5cfc483 100644 (file)
@@ -114,6 +114,7 @@ struct wiphy;
  *     channel as the control or any of the secondary channels.
  *     This may be due to the driver or due to regulatory bandwidth
  *     restrictions.
+ * @IEEE80211_CHAN_NO_EHT: EHT operation is not permitted on this channel.
  */
 enum ieee80211_channel_flags {
        IEEE80211_CHAN_DISABLED         = 1<<0,
@@ -136,6 +137,7 @@ enum ieee80211_channel_flags {
        IEEE80211_CHAN_8MHZ             = 1<<17,
        IEEE80211_CHAN_16MHZ            = 1<<18,
        IEEE80211_CHAN_NO_320MHZ        = 1<<19,
+       IEEE80211_CHAN_NO_EHT           = 1<<20,
 };
 
 #define IEEE80211_CHAN_NO_HT40 \
index 6a338da..baf6433 100644 (file)
@@ -3999,6 +3999,8 @@ enum nl80211_wmm_rule {
  *     on this channel in current regulatory domain.
  * @NL80211_FREQUENCY_ATTR_NO_320MHZ: any 320 MHz channel using this channel
  *     as the primary or any of the secondary channels isn't possible
+ * @NL80211_FREQUENCY_ATTR_NO_EHT: EHT operation is not allowed on this channel
+ *     in current regulatory domain.
  * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
  *     currently defined
  * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
@@ -4036,6 +4038,7 @@ enum nl80211_frequency_attr {
        NL80211_FREQUENCY_ATTR_8MHZ,
        NL80211_FREQUENCY_ATTR_16MHZ,
        NL80211_FREQUENCY_ATTR_NO_320MHZ,
+       NL80211_FREQUENCY_ATTR_NO_EHT,
 
        /* keep last */
        __NL80211_FREQUENCY_ATTR_AFTER_LAST,
index 7edf0bb..3e6809f 100644 (file)
@@ -1159,6 +1159,9 @@ static int nl80211_msg_put_channel(struct sk_buff *msg, struct wiphy *wiphy,
                if ((chan->flags & IEEE80211_CHAN_NO_320MHZ) &&
                    nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_320MHZ))
                        goto nla_put_failure;
+               if ((chan->flags & IEEE80211_CHAN_NO_EHT) &&
+                   nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_EHT))
+                       goto nla_put_failure;
        }
 
        if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER,