cfg80211: allow advertising VHT capabilities
Allow drivers to advertise their VHT capabilities and export them to userspace via nl80211. Signed-off-by: Mahesh Palivela <maheshp@posedge.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
ce0e169529
commit
bf0c111ec8
|
@ -1813,6 +1813,9 @@ enum nl80211_mpath_info {
|
||||||
* @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE
|
* @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE
|
||||||
* @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n
|
* @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n
|
||||||
* @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n
|
* @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n
|
||||||
|
* @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as
|
||||||
|
* defined in 802.11ac
|
||||||
|
* @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE
|
||||||
* @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
|
* @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
|
||||||
* @__NL80211_BAND_ATTR_AFTER_LAST: internal use
|
* @__NL80211_BAND_ATTR_AFTER_LAST: internal use
|
||||||
*/
|
*/
|
||||||
|
@ -1826,6 +1829,9 @@ enum nl80211_band_attr {
|
||||||
NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
|
NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
|
||||||
NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
|
NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
|
||||||
|
|
||||||
|
NL80211_BAND_ATTR_VHT_MCS_SET,
|
||||||
|
NL80211_BAND_ATTR_VHT_CAPA,
|
||||||
|
|
||||||
/* keep last */
|
/* keep last */
|
||||||
__NL80211_BAND_ATTR_AFTER_LAST,
|
__NL80211_BAND_ATTR_AFTER_LAST,
|
||||||
NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
|
NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
|
||||||
|
|
|
@ -210,6 +210,22 @@ struct ieee80211_sta_ht_cap {
|
||||||
struct ieee80211_mcs_info mcs;
|
struct ieee80211_mcs_info mcs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct ieee80211_sta_vht_cap - STA's VHT capabilities
|
||||||
|
*
|
||||||
|
* This structure describes most essential parameters needed
|
||||||
|
* to describe 802.11ac VHT capabilities for an STA.
|
||||||
|
*
|
||||||
|
* @vht_supported: is VHT supported by the STA
|
||||||
|
* @cap: VHT capabilities map as described in 802.11ac spec
|
||||||
|
* @vht_mcs: Supported VHT MCS rates
|
||||||
|
*/
|
||||||
|
struct ieee80211_sta_vht_cap {
|
||||||
|
bool vht_supported;
|
||||||
|
u32 cap; /* use IEEE80211_VHT_CAP_ */
|
||||||
|
struct ieee80211_vht_mcs_info vht_mcs;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ieee80211_supported_band - frequency band definition
|
* struct ieee80211_supported_band - frequency band definition
|
||||||
*
|
*
|
||||||
|
@ -233,6 +249,7 @@ struct ieee80211_supported_band {
|
||||||
int n_channels;
|
int n_channels;
|
||||||
int n_bitrates;
|
int n_bitrates;
|
||||||
struct ieee80211_sta_ht_cap ht_cap;
|
struct ieee80211_sta_ht_cap ht_cap;
|
||||||
|
struct ieee80211_sta_vht_cap vht_cap;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -921,6 +921,15 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
|
||||||
dev->wiphy.bands[band]->ht_cap.ampdu_density)))
|
dev->wiphy.bands[band]->ht_cap.ampdu_density)))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
|
/* add VHT info */
|
||||||
|
if (dev->wiphy.bands[band]->vht_cap.vht_supported &&
|
||||||
|
(nla_put(msg, NL80211_BAND_ATTR_VHT_MCS_SET,
|
||||||
|
sizeof(dev->wiphy.bands[band]->vht_cap.vht_mcs),
|
||||||
|
&dev->wiphy.bands[band]->vht_cap.vht_mcs) ||
|
||||||
|
nla_put_u32(msg, NL80211_BAND_ATTR_VHT_CAPA,
|
||||||
|
dev->wiphy.bands[band]->vht_cap.cap)))
|
||||||
|
goto nla_put_failure;
|
||||||
|
|
||||||
/* add frequencies */
|
/* add frequencies */
|
||||||
nl_freqs = nla_nest_start(msg, NL80211_BAND_ATTR_FREQS);
|
nl_freqs = nla_nest_start(msg, NL80211_BAND_ATTR_FREQS);
|
||||||
if (!nl_freqs)
|
if (!nl_freqs)
|
||||||
|
|
Loading…
Reference in New Issue