nl80211: Simplify event processing error paths
These are practically unreachable code since cfg80211 fills in the required attributes or does not send the event. Keep the checks in place, but minimize the extra code in wpa_supplicant/hostapd. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
38751d8bd5
commit
dcf8fbc058
1 changed files with 22 additions and 43 deletions
|
@ -180,34 +180,23 @@ static void mlme_event_auth(struct wpa_driver_nl80211_data *drv,
|
|||
}
|
||||
|
||||
|
||||
static int nl80211_parse_wmm_params(struct nlattr *wmm_attr,
|
||||
struct wmm_params *wmm_params)
|
||||
static void nl80211_parse_wmm_params(struct nlattr *wmm_attr,
|
||||
struct wmm_params *wmm_params)
|
||||
{
|
||||
struct nlattr *wmm_info[NL80211_STA_WME_MAX + 1];
|
||||
static struct nla_policy wme_policy[NL80211_STA_WME_MAX + 1] = {
|
||||
[NL80211_STA_WME_UAPSD_QUEUES] = { .type = NLA_U8 },
|
||||
};
|
||||
|
||||
if (!wmm_attr) {
|
||||
wpa_printf(MSG_DEBUG, "nl80211: WMM data missing");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (nla_parse_nested(wmm_info, NL80211_STA_WME_MAX, wmm_attr,
|
||||
wme_policy)) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"nl80211: Failed to parse nested attributes");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!wmm_info[NL80211_STA_WME_UAPSD_QUEUES])
|
||||
return -1;
|
||||
if (!wmm_attr ||
|
||||
nla_parse_nested(wmm_info, NL80211_STA_WME_MAX, wmm_attr,
|
||||
wme_policy) ||
|
||||
!wmm_info[NL80211_STA_WME_UAPSD_QUEUES])
|
||||
return;
|
||||
|
||||
wmm_params->uapsd_queues =
|
||||
nla_get_u8(wmm_info[NL80211_STA_WME_UAPSD_QUEUES]);
|
||||
wmm_params->info_bitmap |= WMM_PARAMS_UAPSD_QUEUES_INFO;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1104,10 +1093,8 @@ static void nl80211_new_peer_candidate(struct wpa_driver_nl80211_data *drv,
|
|||
const u8 *addr;
|
||||
union wpa_event_data data;
|
||||
|
||||
if (drv->nlmode != NL80211_IFTYPE_MESH_POINT)
|
||||
return;
|
||||
|
||||
if (!tb[NL80211_ATTR_MAC] || !tb[NL80211_ATTR_IE])
|
||||
if (drv->nlmode != NL80211_IFTYPE_MESH_POINT ||
|
||||
!tb[NL80211_ATTR_MAC] || !tb[NL80211_ATTR_IE])
|
||||
return;
|
||||
|
||||
addr = nla_data(tb[NL80211_ATTR_MAC]);
|
||||
|
@ -1201,14 +1188,11 @@ static void nl80211_rekey_offload_event(struct wpa_driver_nl80211_data *drv,
|
|||
};
|
||||
union wpa_event_data data;
|
||||
|
||||
if (!tb[NL80211_ATTR_MAC])
|
||||
return;
|
||||
if (!tb[NL80211_ATTR_REKEY_DATA])
|
||||
return;
|
||||
if (nla_parse_nested(rekey_info, MAX_NL80211_REKEY_DATA,
|
||||
tb[NL80211_ATTR_REKEY_DATA], rekey_policy))
|
||||
return;
|
||||
if (!rekey_info[NL80211_REKEY_DATA_REPLAY_CTR])
|
||||
if (!tb[NL80211_ATTR_MAC] ||
|
||||
!tb[NL80211_ATTR_REKEY_DATA] ||
|
||||
nla_parse_nested(rekey_info, MAX_NL80211_REKEY_DATA,
|
||||
tb[NL80211_ATTR_REKEY_DATA], rekey_policy) ||
|
||||
!rekey_info[NL80211_REKEY_DATA_REPLAY_CTR])
|
||||
return;
|
||||
|
||||
os_memset(&data, 0, sizeof(data));
|
||||
|
@ -1239,12 +1223,10 @@ static void nl80211_pmksa_candidate_event(struct wpa_driver_nl80211_data *drv,
|
|||
|
||||
wpa_printf(MSG_DEBUG, "nl80211: PMKSA candidate event");
|
||||
|
||||
if (!tb[NL80211_ATTR_PMKSA_CANDIDATE])
|
||||
return;
|
||||
if (nla_parse_nested(cand, MAX_NL80211_PMKSA_CANDIDATE,
|
||||
tb[NL80211_ATTR_PMKSA_CANDIDATE], cand_policy))
|
||||
return;
|
||||
if (!cand[NL80211_PMKSA_CANDIDATE_INDEX] ||
|
||||
if (!tb[NL80211_ATTR_PMKSA_CANDIDATE] ||
|
||||
nla_parse_nested(cand, MAX_NL80211_PMKSA_CANDIDATE,
|
||||
tb[NL80211_ATTR_PMKSA_CANDIDATE], cand_policy) ||
|
||||
!cand[NL80211_PMKSA_CANDIDATE_INDEX] ||
|
||||
!cand[NL80211_PMKSA_CANDIDATE_BSSID])
|
||||
return;
|
||||
|
||||
|
@ -1502,10 +1484,8 @@ static void qca_nl80211_acs_select_ch(struct wpa_driver_nl80211_data *drv,
|
|||
"nl80211: ACS channel selection vendor event received");
|
||||
|
||||
if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_ACS_MAX,
|
||||
(struct nlattr *) data, len, NULL))
|
||||
return;
|
||||
|
||||
if (!tb[QCA_WLAN_VENDOR_ATTR_ACS_PRIMARY_CHANNEL] ||
|
||||
(struct nlattr *) data, len, NULL) ||
|
||||
!tb[QCA_WLAN_VENDOR_ATTR_ACS_PRIMARY_CHANNEL] ||
|
||||
!tb[QCA_WLAN_VENDOR_ATTR_ACS_SECONDARY_CHANNEL])
|
||||
return;
|
||||
|
||||
|
@ -1529,9 +1509,8 @@ static void qca_nl80211_key_mgmt_auth(struct wpa_driver_nl80211_data *drv,
|
|||
"nl80211: Key management roam+auth vendor event received");
|
||||
|
||||
if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_MAX,
|
||||
(struct nlattr *) data, len, NULL))
|
||||
return;
|
||||
if (!tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID] ||
|
||||
(struct nlattr *) data, len, NULL) ||
|
||||
!tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID] ||
|
||||
nla_len(tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_BSSID]) != ETH_ALEN ||
|
||||
!tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_REQ_IE] ||
|
||||
!tb[QCA_WLAN_VENDOR_ATTR_ROAM_AUTH_RESP_IE] ||
|
||||
|
|
Loading…
Reference in a new issue