nl80211: advertise supported channel width in S1G
S1G supports 5 channel widths: 1, 2, 4, 8, and 16. One channel width is allowed per frequency in each operating class, so it makes more sense to advertise the specific channel width allowed. Signed-off-by: Thomas Pedersen <thomas@adapt-ip.com> Link: https://lore.kernel.org/r/20200908190323.15814-3-thomas@adapt-ip.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
37050e3ab0
commit
d65a977087
|
@ -96,6 +96,16 @@ struct wiphy;
|
||||||
* @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.
|
* @IEEE80211_CHAN_NO_HE: HE operation is not permitted on this channel.
|
||||||
|
* @IEEE80211_CHAN_1MHZ: 1 MHz bandwidth is permitted
|
||||||
|
* on this channel.
|
||||||
|
* @IEEE80211_CHAN_2MHZ: 2 MHz bandwidth is permitted
|
||||||
|
* on this channel.
|
||||||
|
* @IEEE80211_CHAN_4MHZ: 4 MHz bandwidth is permitted
|
||||||
|
* on this channel.
|
||||||
|
* @IEEE80211_CHAN_8MHZ: 8 MHz bandwidth is permitted
|
||||||
|
* on this channel.
|
||||||
|
* @IEEE80211_CHAN_16MHZ: 16 MHz bandwidth is permitted
|
||||||
|
* on this channel.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
enum ieee80211_channel_flags {
|
enum ieee80211_channel_flags {
|
||||||
|
@ -113,6 +123,11 @@ enum ieee80211_channel_flags {
|
||||||
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,
|
IEEE80211_CHAN_NO_HE = 1<<13,
|
||||||
|
IEEE80211_CHAN_1MHZ = 1<<14,
|
||||||
|
IEEE80211_CHAN_2MHZ = 1<<15,
|
||||||
|
IEEE80211_CHAN_4MHZ = 1<<16,
|
||||||
|
IEEE80211_CHAN_8MHZ = 1<<17,
|
||||||
|
IEEE80211_CHAN_16MHZ = 1<<18,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IEEE80211_CHAN_NO_HT40 \
|
#define IEEE80211_CHAN_NO_HT40 \
|
||||||
|
|
|
@ -3737,6 +3737,16 @@ enum nl80211_wmm_rule {
|
||||||
* @NL80211_FREQUENCY_ATTR_NO_HE: HE operation is not allowed on this channel
|
* @NL80211_FREQUENCY_ATTR_NO_HE: HE operation is not allowed on this channel
|
||||||
* in current regulatory domain.
|
* in current regulatory domain.
|
||||||
* @NL80211_FREQUENCY_ATTR_OFFSET: frequency offset in KHz
|
* @NL80211_FREQUENCY_ATTR_OFFSET: frequency offset in KHz
|
||||||
|
* @NL80211_FREQUENCY_ATTR_1MHZ: 1 MHz operation is allowed
|
||||||
|
* on this channel in current regulatory domain.
|
||||||
|
* @NL80211_FREQUENCY_ATTR_2MHZ: 2 MHz operation is allowed
|
||||||
|
* on this channel in current regulatory domain.
|
||||||
|
* @NL80211_FREQUENCY_ATTR_4MHZ: 4 MHz operation is allowed
|
||||||
|
* on this channel in current regulatory domain.
|
||||||
|
* @NL80211_FREQUENCY_ATTR_8MHZ: 8 MHz operation is allowed
|
||||||
|
* 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_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
|
||||||
|
@ -3768,6 +3778,11 @@ enum nl80211_frequency_attr {
|
||||||
NL80211_FREQUENCY_ATTR_WMM,
|
NL80211_FREQUENCY_ATTR_WMM,
|
||||||
NL80211_FREQUENCY_ATTR_NO_HE,
|
NL80211_FREQUENCY_ATTR_NO_HE,
|
||||||
NL80211_FREQUENCY_ATTR_OFFSET,
|
NL80211_FREQUENCY_ATTR_OFFSET,
|
||||||
|
NL80211_FREQUENCY_ATTR_1MHZ,
|
||||||
|
NL80211_FREQUENCY_ATTR_2MHZ,
|
||||||
|
NL80211_FREQUENCY_ATTR_4MHZ,
|
||||||
|
NL80211_FREQUENCY_ATTR_8MHZ,
|
||||||
|
NL80211_FREQUENCY_ATTR_16MHZ,
|
||||||
|
|
||||||
/* keep last */
|
/* keep last */
|
||||||
__NL80211_FREQUENCY_ATTR_AFTER_LAST,
|
__NL80211_FREQUENCY_ATTR_AFTER_LAST,
|
||||||
|
|
|
@ -1010,6 +1010,21 @@ static int nl80211_msg_put_channel(struct sk_buff *msg, struct wiphy *wiphy,
|
||||||
if ((chan->flags & IEEE80211_CHAN_NO_HE) &&
|
if ((chan->flags & IEEE80211_CHAN_NO_HE) &&
|
||||||
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_HE))
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_HE))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_1MHZ) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_1MHZ))
|
||||||
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_2MHZ) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_2MHZ))
|
||||||
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_4MHZ) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_4MHZ))
|
||||||
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_8MHZ) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_8MHZ))
|
||||||
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_16MHZ) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_16MHZ))
|
||||||
|
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,
|
||||||
|
|
Loading…
Reference in a new issue