Commit 635495e9 authored by Johannes Berg's avatar Johannes Berg
Browse files

wifi: mac80211: don't re-parse elems in ieee80211_assoc_success()



We're already passing the elems pointer, and have parsed
them from the same frame with exactly the same parameters,
so don't need to do that again.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent b327c84c
Loading
Loading
Loading
Loading
+4 −15
Original line number Diff line number Diff line
@@ -3470,27 +3470,17 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
	bool is_s1g = cbss->channel->band == NL80211_BAND_S1GHZ;
	struct ieee80211_link_data *link = &sdata->deflink;
	u32 changed = 0;
	u8 *pos;
	int err;
	bool ret;

	/* AssocResp and ReassocResp have identical structure */

	pos = mgmt->u.assoc_resp.variable;
	aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
	if (is_s1g) {
		pos = (u8 *) mgmt->u.s1g_assoc_resp.variable;
		aid = 0; /* TODO */
	}
	capab_info = le16_to_cpu(mgmt->u.assoc_resp.capab_info);
	elems = ieee802_11_parse_elems(pos, len - (pos - (u8 *)mgmt), false,
				       mgmt->bssid, assoc_data->bss->bssid);

	if (!elems)
		return false;

	if (elems->aid_resp)
		aid = le16_to_cpu(elems->aid_resp->aid);
	else if (is_s1g)
		aid = 0; /* TODO */
	else
		aid = le16_to_cpu(mgmt->u.assoc_resp.aid);

	/*
	 * The 5 MSB of the AID field are reserved
@@ -3865,7 +3855,6 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,

	ret = true;
 out:
	kfree(elems);
	kfree(bss_ies);
	return ret;
}