*     on this channel in current regulatory domain.
  * @NL80211_FREQUENCY_ATTR_16MHZ: 16 MHz operation is allowed
  *     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_MAX: highest frequency attribute number
  *     currently defined
  * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
        NL80211_FREQUENCY_ATTR_4MHZ,
        NL80211_FREQUENCY_ATTR_8MHZ,
        NL80211_FREQUENCY_ATTR_16MHZ,
+       NL80211_FREQUENCY_ATTR_NO_320MHZ,
 
        /* keep last */
        __NL80211_FREQUENCY_ATTR_AFTER_LAST,
  * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
  * @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
  * @NL80211_RRF_NO_HE: HE operation not allowed
+ * @NL80211_RRF_NO_320MHZ: 320MHz operation not allowed
  */
 enum nl80211_reg_rule_flags {
        NL80211_RRF_NO_OFDM             = 1<<0,
        NL80211_RRF_NO_80MHZ            = 1<<15,
        NL80211_RRF_NO_160MHZ           = 1<<16,
        NL80211_RRF_NO_HE               = 1<<17,
+       NL80211_RRF_NO_320MHZ           = 1<<18,
 };
 
 #define NL80211_RRF_PASSIVE_SCAN       NL80211_RRF_NO_IR
 
                if ((chan->flags & IEEE80211_CHAN_16MHZ) &&
                    nla_put_flag(msg, NL80211_FREQUENCY_ATTR_16MHZ))
                        goto nla_put_failure;
+               if ((chan->flags & IEEE80211_CHAN_NO_320MHZ) &&
+                   nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_320MHZ))
+                       goto nla_put_failure;
        }
 
        if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
 
 {
        unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule);
 
+       if (rule->flags & NL80211_RRF_NO_320MHZ)
+               bw = min_t(unsigned int, bw, MHZ_TO_KHZ(160));
        if (rule->flags & NL80211_RRF_NO_160MHZ)
                bw = min_t(unsigned int, bw, MHZ_TO_KHZ(80));
        if (rule->flags & NL80211_RRF_NO_80MHZ)
                channel_flags |= IEEE80211_CHAN_NO_160MHZ;
        if (rd_flags & NL80211_RRF_NO_HE)
                channel_flags |= IEEE80211_CHAN_NO_HE;
+       if (rd_flags & NL80211_RRF_NO_320MHZ)
+               channel_flags |= IEEE80211_CHAN_NO_320MHZ;
        return channel_flags;
 }
 
                        bw_flags |= IEEE80211_CHAN_NO_80MHZ;
                if (max_bandwidth_khz < MHZ_TO_KHZ(160))
                        bw_flags |= IEEE80211_CHAN_NO_160MHZ;
+               if (max_bandwidth_khz < MHZ_TO_KHZ(320))
+                       bw_flags |= IEEE80211_CHAN_NO_320MHZ;
        }
        return bw_flags;
 }