cfg80211: add no HE indication to the channel flag
The regulatory domain might forbid HE operation. Certain regulatory domains may restrict it for specific channels whereas others may do it for the whole regulatory domain. Add an option to indicate it in the channel flag. Signed-off-by: Haim Dreyfuss <haim.dreyfuss@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/20200121081213.733757-1-luca@coelho.fi Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
3c706b973b
commit
1e61d82cca
|
@ -95,6 +95,7 @@ struct wiphy;
|
||||||
* on this channel.
|
* on this channel.
|
||||||
* @IEEE80211_CHAN_NO_10MHZ: 10 MHz bandwidth is not permitted
|
* @IEEE80211_CHAN_NO_10MHZ: 10 MHz bandwidth is not permitted
|
||||||
* on this channel.
|
* on this channel.
|
||||||
|
* @IEEE80211_CHAN_NO_HE: HE operation is not permitted on this channel.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
enum ieee80211_channel_flags {
|
enum ieee80211_channel_flags {
|
||||||
|
@ -111,6 +112,7 @@ enum ieee80211_channel_flags {
|
||||||
IEEE80211_CHAN_IR_CONCURRENT = 1<<10,
|
IEEE80211_CHAN_IR_CONCURRENT = 1<<10,
|
||||||
IEEE80211_CHAN_NO_20MHZ = 1<<11,
|
IEEE80211_CHAN_NO_20MHZ = 1<<11,
|
||||||
IEEE80211_CHAN_NO_10MHZ = 1<<12,
|
IEEE80211_CHAN_NO_10MHZ = 1<<12,
|
||||||
|
IEEE80211_CHAN_NO_HE = 1<<13,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IEEE80211_CHAN_NO_HT40 \
|
#define IEEE80211_CHAN_NO_HT40 \
|
||||||
|
|
|
@ -3587,6 +3587,8 @@ enum nl80211_wmm_rule {
|
||||||
* @NL80211_FREQUENCY_ATTR_WMM: this channel has wmm limitations.
|
* @NL80211_FREQUENCY_ATTR_WMM: this channel has wmm limitations.
|
||||||
* This is a nested attribute that contains the wmm limitation per AC.
|
* This is a nested attribute that contains the wmm limitation per AC.
|
||||||
* (see &enum nl80211_wmm_rule)
|
* (see &enum nl80211_wmm_rule)
|
||||||
|
* @NL80211_FREQUENCY_ATTR_NO_HE: HE operation is not allowed on this channel
|
||||||
|
* in current regulatory domain.
|
||||||
* @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
|
* @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
|
||||||
* currently defined
|
* currently defined
|
||||||
* @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
|
* @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
|
||||||
|
@ -3616,6 +3618,7 @@ enum nl80211_frequency_attr {
|
||||||
NL80211_FREQUENCY_ATTR_NO_20MHZ,
|
NL80211_FREQUENCY_ATTR_NO_20MHZ,
|
||||||
NL80211_FREQUENCY_ATTR_NO_10MHZ,
|
NL80211_FREQUENCY_ATTR_NO_10MHZ,
|
||||||
NL80211_FREQUENCY_ATTR_WMM,
|
NL80211_FREQUENCY_ATTR_WMM,
|
||||||
|
NL80211_FREQUENCY_ATTR_NO_HE,
|
||||||
|
|
||||||
/* keep last */
|
/* keep last */
|
||||||
__NL80211_FREQUENCY_ATTR_AFTER_LAST,
|
__NL80211_FREQUENCY_ATTR_AFTER_LAST,
|
||||||
|
@ -3813,6 +3816,7 @@ enum nl80211_sched_scan_match_attr {
|
||||||
* @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation
|
* @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation
|
||||||
* @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
|
* @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
|
||||||
* @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
|
* @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
|
||||||
|
* @NL80211_RRF_NO_HE: HE operation not allowed
|
||||||
*/
|
*/
|
||||||
enum nl80211_reg_rule_flags {
|
enum nl80211_reg_rule_flags {
|
||||||
NL80211_RRF_NO_OFDM = 1<<0,
|
NL80211_RRF_NO_OFDM = 1<<0,
|
||||||
|
@ -3830,6 +3834,7 @@ enum nl80211_reg_rule_flags {
|
||||||
NL80211_RRF_NO_HT40PLUS = 1<<14,
|
NL80211_RRF_NO_HT40PLUS = 1<<14,
|
||||||
NL80211_RRF_NO_80MHZ = 1<<15,
|
NL80211_RRF_NO_80MHZ = 1<<15,
|
||||||
NL80211_RRF_NO_160MHZ = 1<<16,
|
NL80211_RRF_NO_160MHZ = 1<<16,
|
||||||
|
NL80211_RRF_NO_HE = 1<<17,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
|
#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
|
||||||
|
|
|
@ -972,6 +972,9 @@ static int nl80211_msg_put_channel(struct sk_buff *msg, struct wiphy *wiphy,
|
||||||
if ((chan->flags & IEEE80211_CHAN_NO_10MHZ) &&
|
if ((chan->flags & IEEE80211_CHAN_NO_10MHZ) &&
|
||||||
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_10MHZ))
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_10MHZ))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_NO_HE) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_HE))
|
||||||
|
goto nla_put_failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
|
if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
|
||||||
|
|
|
@ -1569,6 +1569,8 @@ static u32 map_regdom_flags(u32 rd_flags)
|
||||||
channel_flags |= IEEE80211_CHAN_NO_80MHZ;
|
channel_flags |= IEEE80211_CHAN_NO_80MHZ;
|
||||||
if (rd_flags & NL80211_RRF_NO_160MHZ)
|
if (rd_flags & NL80211_RRF_NO_160MHZ)
|
||||||
channel_flags |= IEEE80211_CHAN_NO_160MHZ;
|
channel_flags |= IEEE80211_CHAN_NO_160MHZ;
|
||||||
|
if (rd_flags & NL80211_RRF_NO_HE)
|
||||||
|
channel_flags |= IEEE80211_CHAN_NO_HE;
|
||||||
return channel_flags;
|
return channel_flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue