{nl,cfg}80211: Peer STA VHT caps
To save STAs VHT caps in AP mode Signed-off-by: Mahesh Palivela <maheshp@posedge.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
818255ea47
commit
f461be3eff
4 changed files with 18 additions and 0 deletions
|
@ -498,6 +498,7 @@ enum station_parameters_apply_mask {
|
||||||
* @plink_action: plink action to take
|
* @plink_action: plink action to take
|
||||||
* @plink_state: set the peer link state for a station
|
* @plink_state: set the peer link state for a station
|
||||||
* @ht_capa: HT capabilities of station
|
* @ht_capa: HT capabilities of station
|
||||||
|
* @vht_capa: VHT capabilities of station
|
||||||
* @uapsd_queues: bitmap of queues configured for uapsd. same format
|
* @uapsd_queues: bitmap of queues configured for uapsd. same format
|
||||||
* as the AC bitmap in the QoS info field
|
* as the AC bitmap in the QoS info field
|
||||||
* @max_sp: max Service Period. same format as the MAX_SP in the
|
* @max_sp: max Service Period. same format as the MAX_SP in the
|
||||||
|
@ -517,6 +518,7 @@ struct station_parameters {
|
||||||
u8 plink_action;
|
u8 plink_action;
|
||||||
u8 plink_state;
|
u8 plink_state;
|
||||||
struct ieee80211_ht_cap *ht_capa;
|
struct ieee80211_ht_cap *ht_capa;
|
||||||
|
struct ieee80211_vht_cap *vht_capa;
|
||||||
u8 uapsd_queues;
|
u8 uapsd_queues;
|
||||||
u8 max_sp;
|
u8 max_sp;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1276,6 +1276,9 @@ enum nl80211_commands {
|
||||||
* @NL80211_ATTR_SAE_DATA: SAE elements in Authentication frames. This starts
|
* @NL80211_ATTR_SAE_DATA: SAE elements in Authentication frames. This starts
|
||||||
* with the Authentication transaction sequence number field.
|
* with the Authentication transaction sequence number field.
|
||||||
*
|
*
|
||||||
|
* @NL80211_ATTR_VHT_CAPABILITY: VHT Capability information element (from
|
||||||
|
* association request when used with NL80211_CMD_NEW_STATION)
|
||||||
|
*
|
||||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||||
*/
|
*/
|
||||||
|
@ -1535,6 +1538,8 @@ enum nl80211_attrs {
|
||||||
|
|
||||||
NL80211_ATTR_SAE_DATA,
|
NL80211_ATTR_SAE_DATA,
|
||||||
|
|
||||||
|
NL80211_ATTR_VHT_CAPABILITY,
|
||||||
|
|
||||||
/* add attributes here, update the policy in nl80211.c */
|
/* add attributes here, update the policy in nl80211.c */
|
||||||
|
|
||||||
__NL80211_ATTR_AFTER_LAST,
|
__NL80211_ATTR_AFTER_LAST,
|
||||||
|
@ -1578,6 +1583,7 @@ enum nl80211_attrs {
|
||||||
#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
|
#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
|
||||||
#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
|
#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
|
||||||
#define NL80211_HT_CAPABILITY_LEN 26
|
#define NL80211_HT_CAPABILITY_LEN 26
|
||||||
|
#define NL80211_VHT_CAPABILITY_LEN 12
|
||||||
|
|
||||||
#define NL80211_MAX_NR_CIPHER_SUITES 5
|
#define NL80211_MAX_NR_CIPHER_SUITES 5
|
||||||
#define NL80211_MAX_NR_AKM_SUITES 2
|
#define NL80211_MAX_NR_AKM_SUITES 2
|
||||||
|
|
|
@ -1157,6 +1157,11 @@ static int sta_apply_parameters(struct ieee80211_local *local,
|
||||||
params->ht_capa,
|
params->ht_capa,
|
||||||
&sta->sta.ht_cap);
|
&sta->sta.ht_cap);
|
||||||
|
|
||||||
|
if (params->vht_capa)
|
||||||
|
ieee80211_vht_cap_ie_to_sta_vht_cap(sdata, sband,
|
||||||
|
params->vht_capa,
|
||||||
|
&sta->sta.vht_cap);
|
||||||
|
|
||||||
if (ieee80211_vif_is_mesh(&sdata->vif)) {
|
if (ieee80211_vif_is_mesh(&sdata->vif)) {
|
||||||
#ifdef CONFIG_MAC80211_MESH
|
#ifdef CONFIG_MAC80211_MESH
|
||||||
if (sdata->u.mesh.security & IEEE80211_MESH_SEC_SECURED)
|
if (sdata->u.mesh.security & IEEE80211_MESH_SEC_SECURED)
|
||||||
|
|
|
@ -355,6 +355,7 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = {
|
||||||
[NL80211_ATTR_WDEV] = { .type = NLA_U64 },
|
[NL80211_ATTR_WDEV] = { .type = NLA_U64 },
|
||||||
[NL80211_ATTR_USER_REG_HINT_TYPE] = { .type = NLA_U32 },
|
[NL80211_ATTR_USER_REG_HINT_TYPE] = { .type = NLA_U32 },
|
||||||
[NL80211_ATTR_SAE_DATA] = { .type = NLA_BINARY, },
|
[NL80211_ATTR_SAE_DATA] = { .type = NLA_BINARY, },
|
||||||
|
[NL80211_ATTR_VHT_CAPABILITY] = { .len = NL80211_VHT_CAPABILITY_LEN },
|
||||||
};
|
};
|
||||||
|
|
||||||
/* policy for the key attributes */
|
/* policy for the key attributes */
|
||||||
|
@ -3223,6 +3224,10 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
|
||||||
params.ht_capa =
|
params.ht_capa =
|
||||||
nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]);
|
nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]);
|
||||||
|
|
||||||
|
if (info->attrs[NL80211_ATTR_VHT_CAPABILITY])
|
||||||
|
params.vht_capa =
|
||||||
|
nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]);
|
||||||
|
|
||||||
if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION])
|
if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION])
|
||||||
params.plink_action =
|
params.plink_action =
|
||||||
nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]);
|
nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]);
|
||||||
|
|
Loading…
Add table
Reference in a new issue