mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 20:33:58 -04:00
BACKPORT: cfg80211: add and expose HE 6 GHz band capabilities
These capabilities cover what would otherwise be transported in HT/VHT capabilities, but only a subset thereof that is actually needed on 6 GHz with HE already present. Expose the capabilities to userspace, drivers are expected to set them as using the 6 GHz band (currently) requires HE capability. Bug: 163110886 Link: https://lore.kernel.org/r/20200528213443.244cd5cb9db8.Icd8c773277a88c837e7e3af1d4d1013cc3b66543@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com> Change-Id: I08e42cb07c3cb1faacb325888ca77bcd2c91507b (cherry picked from commit 223952177296c34d9c8de9cde33204caffe55725) Signed-off-by: Vamsi Krishna <vamsin@codeaurora.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
9e4ff996eb
commit
9a579df196
3 changed files with 14 additions and 1 deletions
|
|
@ -339,10 +339,13 @@ struct ieee80211_sta_he_cap {
|
|||
*
|
||||
* @types_mask: interface types mask
|
||||
* @he_cap: holds the HE capabilities
|
||||
* @he_6ghz_capa: HE 6 GHz capabilities, must be filled in for a
|
||||
* 6 GHz band channel (and 0 may be valid value).
|
||||
*/
|
||||
struct ieee80211_sband_iftype_data {
|
||||
u16 types_mask;
|
||||
struct ieee80211_sta_he_cap he_cap;
|
||||
struct ieee80211_he_6ghz_capa he_6ghz_capa;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -3520,6 +3520,8 @@ enum nl80211_mpath_info {
|
|||
* defined in HE capabilities IE
|
||||
* @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently
|
||||
* defined
|
||||
* @NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA: HE 6GHz band capabilities (__le16),
|
||||
* given for all 6 GHz band channels
|
||||
* @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_band_iftype_attr {
|
||||
|
|
@ -3530,6 +3532,7 @@ enum nl80211_band_iftype_attr {
|
|||
NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
|
||||
|
|
|
|||
|
|
@ -1574,6 +1574,7 @@ static int nl80211_send_coalesce(struct sk_buff *msg,
|
|||
|
||||
static int
|
||||
nl80211_send_iftype_data(struct sk_buff *msg,
|
||||
const struct ieee80211_supported_band *sband,
|
||||
const struct ieee80211_sband_iftype_data *iftdata)
|
||||
{
|
||||
const struct ieee80211_sta_he_cap *he_cap = &iftdata->he_cap;
|
||||
|
|
@ -1597,6 +1598,12 @@ nl80211_send_iftype_data(struct sk_buff *msg,
|
|||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
if (sband->band == NL80211_BAND_6GHZ &&
|
||||
nla_put(msg, NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
|
||||
sizeof(iftdata->he_6ghz_capa),
|
||||
&iftdata->he_6ghz_capa))
|
||||
return -ENOBUFS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1645,7 +1652,7 @@ static int nl80211_send_band_rateinfo(struct sk_buff *msg,
|
|||
if (!iftdata)
|
||||
return -ENOBUFS;
|
||||
|
||||
err = nl80211_send_iftype_data(msg,
|
||||
err = nl80211_send_iftype_data(msg, sband,
|
||||
&sband->iftype_data[i]);
|
||||
if (err)
|
||||
return err;
|
||||
|
|
|
|||
Loading…
Reference in a new issue