mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:30:58 +07:00
nl80211: re-add channel width and extended capa advertising
Add back the channel width and extended capability data to wiphy information if split information is supported. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
b8a31c9a5a
commit
fe1abafd94
@ -573,6 +573,21 @@ static int nl80211_msg_put_channel(struct sk_buff *msg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (large) {
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_NO_HT40MINUS) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_HT40_MINUS))
|
||||||
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_NO_HT40PLUS) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_HT40_PLUS))
|
||||||
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_NO_80MHZ) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_80MHZ))
|
||||||
|
goto nla_put_failure;
|
||||||
|
if ((chan->flags & IEEE80211_CHAN_NO_160MHZ) &&
|
||||||
|
nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_160MHZ))
|
||||||
|
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,
|
||||||
DBM_TO_MBM(chan->max_power)))
|
DBM_TO_MBM(chan->max_power)))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
@ -1137,6 +1152,7 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *dev,
|
|||||||
const struct ieee80211_txrx_stypes *mgmt_stypes =
|
const struct ieee80211_txrx_stypes *mgmt_stypes =
|
||||||
dev->wiphy.mgmt_stypes;
|
dev->wiphy.mgmt_stypes;
|
||||||
long start = 0, start_chan = 0, start_band = 0;
|
long start = 0, start_chan = 0, start_band = 0;
|
||||||
|
u32 features;
|
||||||
|
|
||||||
hdr = nl80211hdr_put(msg, portid, seq, flags, NL80211_CMD_NEW_WIPHY);
|
hdr = nl80211hdr_put(msg, portid, seq, flags, NL80211_CMD_NEW_WIPHY);
|
||||||
if (!hdr)
|
if (!hdr)
|
||||||
@ -1461,8 +1477,15 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *dev,
|
|||||||
dev->wiphy.ap_sme_capa))
|
dev->wiphy.ap_sme_capa))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
if (nla_put_u32(msg, NL80211_ATTR_FEATURE_FLAGS,
|
features = dev->wiphy.features;
|
||||||
dev->wiphy.features))
|
/*
|
||||||
|
* We can only add the per-channel limit information if the
|
||||||
|
* dump is split, otherwise it makes it too big. Therefore
|
||||||
|
* only advertise it in that case.
|
||||||
|
*/
|
||||||
|
if (split)
|
||||||
|
features |= NL80211_FEATURE_ADVERTISE_CHAN_LIMITS;
|
||||||
|
if (nla_put_u32(msg, NL80211_ATTR_FEATURE_FLAGS, features))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
if (dev->wiphy.ht_capa_mod_mask &&
|
if (dev->wiphy.ht_capa_mod_mask &&
|
||||||
@ -1490,7 +1513,14 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *dev,
|
|||||||
(*split_start)++;
|
(*split_start)++;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
/* placeholder */
|
if (dev->wiphy.extended_capabilities &&
|
||||||
|
(nla_put(msg, NL80211_ATTR_EXT_CAPA,
|
||||||
|
dev->wiphy.extended_capabilities_len,
|
||||||
|
dev->wiphy.extended_capabilities) ||
|
||||||
|
nla_put(msg, NL80211_ATTR_EXT_CAPA_MASK,
|
||||||
|
dev->wiphy.extended_capabilities_len,
|
||||||
|
dev->wiphy.extended_capabilities_mask)))
|
||||||
|
goto nla_put_failure;
|
||||||
|
|
||||||
/* done */
|
/* done */
|
||||||
*split_start = 0;
|
*split_start = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user