aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2013-05-27 11:24:02 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-06-11 08:36:43 -0400
commit3d124ea27ae2fc895f81725f0b4c7f3d9c733df4 (patch)
tree899b04aaf32468e0f3f52aa7339c608298a7728c /net/wireless/nl80211.c
parentffb3cf3000aa12facdccbdfcb10bfebda7199209 (diff)
cfg80211: fix VHT TDLS peer AID verification
I (Johannes) accidentally applied the first version of the patch ("Allow TDLS peer AID to be configured for VHT"). Now apply just the changes between v1 and v2 to get the AID verification and prefer the new attribute over the old one. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 687cb6497598..7183410fcd41 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -3972,10 +3972,10 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
3972 params.listen_interval = 3972 params.listen_interval =
3973 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); 3973 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]);
3974 3974
3975 if (info->attrs[NL80211_ATTR_STA_AID]) 3975 if (info->attrs[NL80211_ATTR_PEER_AID])
3976 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
3977 else
3978 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); 3976 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]);
3977 else
3978 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
3979 if (!params.aid || params.aid > IEEE80211_MAX_AID) 3979 if (!params.aid || params.aid > IEEE80211_MAX_AID)
3980 return -EINVAL; 3980 return -EINVAL;
3981 3981
@@ -4027,7 +4027,8 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
4027 params.sta_modify_mask &= ~STATION_PARAM_APPLY_UAPSD; 4027 params.sta_modify_mask &= ~STATION_PARAM_APPLY_UAPSD;
4028 4028
4029 /* TDLS peers cannot be added */ 4029 /* TDLS peers cannot be added */
4030 if (params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) 4030 if ((params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) ||
4031 info->attrs[NL80211_ATTR_PEER_AID])
4031 return -EINVAL; 4032 return -EINVAL;
4032 /* but don't bother the driver with it */ 4033 /* but don't bother the driver with it */
4033 params.sta_flags_mask &= ~BIT(NL80211_STA_FLAG_TDLS_PEER); 4034 params.sta_flags_mask &= ~BIT(NL80211_STA_FLAG_TDLS_PEER);
@@ -4053,7 +4054,8 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
4053 if (params.sta_flags_mask & BIT(NL80211_STA_FLAG_ASSOCIATED)) 4054 if (params.sta_flags_mask & BIT(NL80211_STA_FLAG_ASSOCIATED))
4054 return -EINVAL; 4055 return -EINVAL;
4055 /* TDLS peers cannot be added */ 4056 /* TDLS peers cannot be added */
4056 if (params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) 4057 if ((params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) ||
4058 info->attrs[NL80211_ATTR_PEER_AID])
4057 return -EINVAL; 4059 return -EINVAL;
4058 break; 4060 break;
4059 case NL80211_IFTYPE_STATION: 4061 case NL80211_IFTYPE_STATION: