mac80211: simplify and clarify IE splitting

There's no need to split off IEs from the ones obtained
from userspace, if they were already split off, so for
example IEs that went before HT don't have to be listed
again to go before VHT. Simplify the code here so it's
clearer.

While at it, also clarify the comments regarding the DMG
(60 GHz) elements.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2017-08-05 11:44:32 +03:00
parent 2512b1b18d
commit a7f26d8050
2 changed files with 16 additions and 24 deletions

View File

@ -780,11 +780,12 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
WLAN_EID_SUPPORTED_REGULATORY_CLASSES, WLAN_EID_SUPPORTED_REGULATORY_CLASSES,
WLAN_EID_HT_CAPABILITY, WLAN_EID_HT_CAPABILITY,
WLAN_EID_BSS_COEX_2040, WLAN_EID_BSS_COEX_2040,
/* luckily this is almost always there */
WLAN_EID_EXT_CAPABILITY, WLAN_EID_EXT_CAPABILITY,
WLAN_EID_QOS_TRAFFIC_CAPA, WLAN_EID_QOS_TRAFFIC_CAPA,
WLAN_EID_TIM_BCAST_REQ, WLAN_EID_TIM_BCAST_REQ,
WLAN_EID_INTERWORKING, WLAN_EID_INTERWORKING,
/* 60GHz doesn't happen right now */ /* 60 GHz (Multi-band, DMG, MMS) can't happen */
WLAN_EID_VHT_CAPABILITY, WLAN_EID_VHT_CAPABILITY,
WLAN_EID_OPMODE_NOTIF, WLAN_EID_OPMODE_NOTIF,
}; };
@ -811,22 +812,16 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
/* if present, add any custom IEs that go before VHT */ /* if present, add any custom IEs that go before VHT */
if (assoc_data->ie_len) { if (assoc_data->ie_len) {
static const u8 before_vht[] = { static const u8 before_vht[] = {
WLAN_EID_SSID, /*
WLAN_EID_SUPP_RATES, * no need to list the ones split off before HT
WLAN_EID_EXT_SUPP_RATES, * or generated here
WLAN_EID_PWR_CAPABILITY, */
WLAN_EID_SUPPORTED_CHANNELS,
WLAN_EID_RSN,
WLAN_EID_QOS_CAPA,
WLAN_EID_RRM_ENABLED_CAPABILITIES,
WLAN_EID_MOBILITY_DOMAIN,
WLAN_EID_SUPPORTED_REGULATORY_CLASSES,
WLAN_EID_HT_CAPABILITY,
WLAN_EID_BSS_COEX_2040, WLAN_EID_BSS_COEX_2040,
WLAN_EID_EXT_CAPABILITY, WLAN_EID_EXT_CAPABILITY,
WLAN_EID_QOS_TRAFFIC_CAPA, WLAN_EID_QOS_TRAFFIC_CAPA,
WLAN_EID_TIM_BCAST_REQ, WLAN_EID_TIM_BCAST_REQ,
WLAN_EID_INTERWORKING, WLAN_EID_INTERWORKING,
/* 60 GHz (Multi-band, DMG, MMS) can't happen */
}; };
/* RIC already taken above, so no need to handle here anymore */ /* RIC already taken above, so no need to handle here anymore */

View File

@ -1392,10 +1392,10 @@ static int ieee80211_build_preq_ies_band(struct ieee80211_local *local,
/* insert custom IEs that go before HT */ /* insert custom IEs that go before HT */
if (ie && ie_len) { if (ie && ie_len) {
static const u8 before_ht[] = { static const u8 before_ht[] = {
WLAN_EID_SSID, /*
WLAN_EID_SUPP_RATES, * no need to list the ones split off already
WLAN_EID_REQUEST, * (or generated here)
WLAN_EID_EXT_SUPP_RATES, */
WLAN_EID_DS_PARAMS, WLAN_EID_DS_PARAMS,
WLAN_EID_SUPPORTED_REGULATORY_CLASSES, WLAN_EID_SUPPORTED_REGULATORY_CLASSES,
}; };
@ -1424,20 +1424,17 @@ static int ieee80211_build_preq_ies_band(struct ieee80211_local *local,
/* insert custom IEs that go before VHT */ /* insert custom IEs that go before VHT */
if (ie && ie_len) { if (ie && ie_len) {
static const u8 before_vht[] = { static const u8 before_vht[] = {
WLAN_EID_SSID, /*
WLAN_EID_SUPP_RATES, * no need to list the ones split off already
WLAN_EID_REQUEST, * (or generated here)
WLAN_EID_EXT_SUPP_RATES, */
WLAN_EID_DS_PARAMS,
WLAN_EID_SUPPORTED_REGULATORY_CLASSES,
WLAN_EID_HT_CAPABILITY,
WLAN_EID_BSS_COEX_2040, WLAN_EID_BSS_COEX_2040,
WLAN_EID_EXT_CAPABILITY, WLAN_EID_EXT_CAPABILITY,
WLAN_EID_SSID_LIST, WLAN_EID_SSID_LIST,
WLAN_EID_CHANNEL_USAGE, WLAN_EID_CHANNEL_USAGE,
WLAN_EID_INTERWORKING, WLAN_EID_INTERWORKING,
WLAN_EID_MESH_ID, WLAN_EID_MESH_ID,
/* 60 GHz can't happen here right now */ /* 60 GHz (Multi-band, DMG, MMS) can't happen */
}; };
noffset = ieee80211_ie_split(ie, ie_len, noffset = ieee80211_ie_split(ie, ie_len,
before_vht, ARRAY_SIZE(before_vht), before_vht, ARRAY_SIZE(before_vht),