Revert "[wpa_supplicant] Cumulative patch from c4e90da6d"
This reverts commit 39bc25d3a79c1375de430a7918d949c1a86f70c6.
Test: Compilation
Change-Id: Iae7670429466958911b5296cb1359bceecc0b03e
Exempt-From-Owner-Approval: Revert since it's breaking the build
diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
index ba22a93..d23dc06 100644
--- a/wpa_supplicant/sme.c
+++ b/wpa_supplicant/sme.c
@@ -12,7 +12,6 @@
#include "utils/eloop.h"
#include "common/ieee802_11_defs.h"
#include "common/ieee802_11_common.h"
-#include "common/ocv.h"
#include "eapol_supp/eapol_supp_sm.h"
#include "common/wpa_common.h"
#include "common/sae.h"
@@ -73,7 +72,7 @@
if (sae_set_group(&wpa_s->sme.sae, group) == 0) {
wpa_dbg(wpa_s, MSG_DEBUG, "SME: Selected SAE group %d",
wpa_s->sme.sae.group);
- return 0;
+ return 0;
}
wpa_s->sme.sae_group_index++;
}
@@ -355,20 +354,6 @@
wpas_connect_work_done(wpa_s);
return;
}
-#ifdef CONFIG_HS20
- } else if (wpa_bss_get_vendor_ie(bss, OSEN_IE_VENDOR_TYPE) &&
- (ssid->key_mgmt & WPA_KEY_MGMT_OSEN)) {
- /* No PMKSA caching, but otherwise similar to RSN/WPA */
- wpa_s->sme.assoc_req_ie_len = sizeof(wpa_s->sme.assoc_req_ie);
- if (wpa_supplicant_set_suites(wpa_s, bss, ssid,
- wpa_s->sme.assoc_req_ie,
- &wpa_s->sme.assoc_req_ie_len)) {
- wpa_msg(wpa_s, MSG_WARNING, "SME: Failed to set WPA "
- "key management and encryption suites");
- wpas_connect_work_done(wpa_s);
- return;
- }
-#endif /* CONFIG_HS20 */
} else if ((ssid->key_mgmt & WPA_KEY_MGMT_IEEE8021X_NO_WPA) &&
wpa_key_mgmt_wpa_ieee8021x(ssid->key_mgmt)) {
/*
@@ -460,7 +445,7 @@
wpa_s->sme.assoc_req_ie_len += 5;
}
- if (wpa_s->sme.prev_bssid_set && wpa_s->sme.ft_used &&
+ if (wpa_s->sme.ft_used &&
os_memcmp(md, wpa_s->sme.mobility_domain, 2) == 0 &&
wpa_sm_has_ptk(wpa_s->wpa)) {
wpa_dbg(wpa_s, MSG_DEBUG, "SME: Trying to use FT "
@@ -520,7 +505,7 @@
sme_auth_handle_rrm(wpa_s, bss);
wpa_s->sme.assoc_req_ie_len += wpas_supp_op_class_ie(
- wpa_s, ssid, bss->freq,
+ wpa_s, bss->freq,
wpa_s->sme.assoc_req_ie + wpa_s->sme.assoc_req_ie_len,
sizeof(wpa_s->sme.assoc_req_ie) - wpa_s->sme.assoc_req_ie_len);
@@ -551,8 +536,7 @@
int pps_mo_id = hs20_get_pps_mo_id(wpa_s, ssid);
size_t len;
- wpas_hs20_add_indication(hs20, pps_mo_id,
- get_hs20_version(bss));
+ wpas_hs20_add_indication(hs20, pps_mo_id);
wpas_hs20_add_roam_cons_sel(hs20, ssid);
len = sizeof(wpa_s->sme.assoc_req_ie) -
wpa_s->sme.assoc_req_ie_len;
@@ -897,10 +881,10 @@
os_memcpy(resp->da, da, ETH_ALEN);
os_memcpy(resp->sa, sa, ETH_ALEN);
os_memcpy(resp->bssid, da, ETH_ALEN);
- resp->u.auth.auth_alg = host_to_le16(WLAN_AUTH_SAE);
- resp->seq_ctrl = host_to_le16(seq_num << 4);
- resp->u.auth.auth_transaction = host_to_le16(auth_transaction);
- resp->u.auth.status_code = host_to_le16(WLAN_STATUS_SUCCESS);
+ resp->u.auth.auth_alg = WLAN_AUTH_SAE;
+ resp->seq_ctrl = seq_num << 4;
+ resp->u.auth.auth_transaction = auth_transaction;
+ resp->u.auth.status_code = WLAN_STATUS_SUCCESS;
if (params)
wpabuf_put_buf(buf, params);
@@ -960,8 +944,7 @@
for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) {
if (!wpas_network_disabled(wpa_s, ssid) &&
ssid_str_len == ssid->ssid_len &&
- os_memcmp(ssid_str, ssid->ssid, ssid_str_len) == 0 &&
- (ssid->key_mgmt & WPA_KEY_MGMT_SAE))
+ os_memcmp(ssid_str, ssid->ssid, ssid_str_len) == 0)
break;
}
if (ssid)
@@ -1180,14 +1163,13 @@
return;
}
- if (le_to_host16(header->u.auth.auth_alg) == WLAN_AUTH_SAE) {
+ if (header->u.auth.auth_alg == WLAN_AUTH_SAE) {
int res;
- res = sme_sae_auth(
- wpa_s, le_to_host16(header->u.auth.auth_transaction),
- le_to_host16(header->u.auth.status_code),
- header->u.auth.variable,
- len - auth_length, 1, header->sa);
+ res = sme_sae_auth(wpa_s, header->u.auth.auth_transaction,
+ header->u.auth.status_code,
+ header->u.auth.variable,
+ len - auth_length, 1, header->sa);
if (res < 0) {
/* Notify failure to the driver */
sme_send_external_auth_status(
@@ -1388,6 +1370,7 @@
}
+#ifdef CONFIG_FILS
#ifdef CONFIG_IEEE80211R
static void remove_ie(u8 *buf, size_t *len, u8 eid)
{
@@ -1402,6 +1385,7 @@
}
}
#endif /* CONFIG_IEEE80211R */
+#endif /* CONFIG_FILS */
void sme_associate(struct wpa_supplicant *wpa_s, enum wpas_mode mode,
@@ -1520,18 +1504,14 @@
if (wpa_s->current_ssid && wpa_s->current_ssid->owe_group) {
group = wpa_s->current_ssid->owe_group;
- } else if (wpa_s->assoc_status_code ==
- WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED) {
+ } else {
if (wpa_s->last_owe_group == 19)
group = 20;
else if (wpa_s->last_owe_group == 20)
group = 21;
else
group = OWE_DH_GROUP;
- } else {
- group = OWE_DH_GROUP;
}
-
wpa_s->last_owe_group = group;
wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group);
owe_ie = owe_build_assoc_req(wpa_s->wpa, group);
@@ -1554,22 +1534,6 @@
}
#endif /* CONFIG_OWE */
- if (wpa_s->current_ssid && wpa_s->current_ssid->multi_ap_backhaul_sta) {
- size_t multi_ap_ie_len;
-
- multi_ap_ie_len = add_multi_ap_ie(
- wpa_s->sme.assoc_req_ie + wpa_s->sme.assoc_req_ie_len,
- sizeof(wpa_s->sme.assoc_req_ie) -
- wpa_s->sme.assoc_req_ie_len,
- MULTI_AP_BACKHAUL_STA);
- if (multi_ap_ie_len == 0) {
- wpa_printf(MSG_ERROR,
- "Multi-AP: Failed to build Multi-AP IE");
- return;
- }
- wpa_s->sme.assoc_req_ie_len += multi_ap_ie_len;
- }
-
params.bssid = bssid;
params.ssid = wpa_s->sme.ssid;
params.ssid_len = wpa_s->sme.ssid_len;
@@ -1579,8 +1543,6 @@
params.wpa_ie = wpa_s->sme.assoc_req_ie_len ?
wpa_s->sme.assoc_req_ie : NULL;
params.wpa_ie_len = wpa_s->sme.assoc_req_ie_len;
- wpa_hexdump(MSG_DEBUG, "SME: Association Request IEs",
- params.wpa_ie, params.wpa_ie_len);
params.pairwise_suite = wpa_s->pairwise_cipher;
params.group_suite = wpa_s->group_cipher;
params.mgmt_group_suite = wpa_s->mgmt_group_cipher;
@@ -1601,85 +1563,9 @@
wpa_supplicant_apply_vht_overrides(wpa_s, wpa_s->current_ssid, ¶ms);
#endif /* CONFIG_VHT_OVERRIDES */
#ifdef CONFIG_IEEE80211R
- if (auth_type == WLAN_AUTH_FT && wpa_s->sme.ft_ies &&
- get_ie(wpa_s->sme.ft_ies, wpa_s->sme.ft_ies_len,
- WLAN_EID_RIC_DATA)) {
- /* There seems to be a pretty inconvenient bug in the Linux
- * kernel IE splitting functionality when RIC is used. For now,
- * skip correct behavior in IE construction here (i.e., drop the
- * additional non-FT-specific IEs) to avoid kernel issues. This
- * is fine since RIC is used only for testing purposes in the
- * current implementation. */
- wpa_printf(MSG_INFO,
- "SME: Linux kernel workaround - do not try to include additional IEs with RIC");
+ if (auth_type == WLAN_AUTH_FT && wpa_s->sme.ft_ies) {
params.wpa_ie = wpa_s->sme.ft_ies;
params.wpa_ie_len = wpa_s->sme.ft_ies_len;
- } else if (auth_type == WLAN_AUTH_FT && wpa_s->sme.ft_ies) {
- const u8 *rm_en, *pos, *end;
- size_t rm_en_len = 0;
- u8 *rm_en_dup = NULL, *wpos;
-
- /* Remove RSNE, MDE, FTE to allow them to be overridden with
- * FT specific values */
- remove_ie(wpa_s->sme.assoc_req_ie,
- &wpa_s->sme.assoc_req_ie_len,
- WLAN_EID_RSN);
- remove_ie(wpa_s->sme.assoc_req_ie,
- &wpa_s->sme.assoc_req_ie_len,
- WLAN_EID_MOBILITY_DOMAIN);
- remove_ie(wpa_s->sme.assoc_req_ie,
- &wpa_s->sme.assoc_req_ie_len,
- WLAN_EID_FAST_BSS_TRANSITION);
- rm_en = get_ie(wpa_s->sme.assoc_req_ie,
- wpa_s->sme.assoc_req_ie_len,
- WLAN_EID_RRM_ENABLED_CAPABILITIES);
- if (rm_en) {
- /* Need to remove RM Enabled Capabilities element as
- * well temporarily, so that it can be placed between
- * RSNE and MDE. */
- rm_en_len = 2 + rm_en[1];
- rm_en_dup = os_memdup(rm_en, rm_en_len);
- remove_ie(wpa_s->sme.assoc_req_ie,
- &wpa_s->sme.assoc_req_ie_len,
- WLAN_EID_RRM_ENABLED_CAPABILITIES);
- }
- wpa_hexdump(MSG_DEBUG,
- "SME: Association Request IEs after FT IE removal",
- wpa_s->sme.assoc_req_ie,
- wpa_s->sme.assoc_req_ie_len);
- if (wpa_s->sme.assoc_req_ie_len + wpa_s->sme.ft_ies_len +
- rm_en_len > sizeof(wpa_s->sme.assoc_req_ie)) {
- wpa_printf(MSG_ERROR,
- "SME: Not enough buffer room for FT IEs in Association Request frame");
- os_free(rm_en_dup);
- return;
- }
-
- os_memmove(wpa_s->sme.assoc_req_ie + wpa_s->sme.ft_ies_len +
- rm_en_len,
- wpa_s->sme.assoc_req_ie,
- wpa_s->sme.assoc_req_ie_len);
- pos = wpa_s->sme.ft_ies;
- end = pos + wpa_s->sme.ft_ies_len;
- wpos = wpa_s->sme.assoc_req_ie;
- if (*pos == WLAN_EID_RSN) {
- os_memcpy(wpos, pos, 2 + pos[1]);
- wpos += 2 + pos[1];
- pos += 2 + pos[1];
- }
- if (rm_en_dup) {
- os_memcpy(wpos, rm_en_dup, rm_en_len);
- wpos += rm_en_len;
- os_free(rm_en_dup);
- }
- os_memcpy(wpos, pos, end - pos);
- wpa_s->sme.assoc_req_ie_len += wpa_s->sme.ft_ies_len +
- rm_en_len;
- params.wpa_ie = wpa_s->sme.assoc_req_ie;
- params.wpa_ie_len = wpa_s->sme.assoc_req_ie_len;
- wpa_hexdump(MSG_DEBUG,
- "SME: Association Request IEs after FT override",
- params.wpa_ie, params.wpa_ie_len);
}
#endif /* CONFIG_IEEE80211R */
params.mode = mode;
@@ -2236,7 +2122,6 @@
static const unsigned int sa_query_max_timeout = 1000;
static const unsigned int sa_query_retry_timeout = 201;
-static const unsigned int sa_query_ch_switch_max_delay = 5000; /* in usec */
static int sme_check_sa_query_timeout(struct wpa_supplicant *wpa_s)
{
@@ -2260,9 +2145,7 @@
static void sme_send_sa_query_req(struct wpa_supplicant *wpa_s,
const u8 *trans_id)
{
- u8 req[2 + WLAN_SA_QUERY_TR_ID_LEN + OCV_OCI_EXTENDED_LEN];
- u8 req_len = 2 + WLAN_SA_QUERY_TR_ID_LEN;
-
+ u8 req[2 + WLAN_SA_QUERY_TR_ID_LEN];
wpa_dbg(wpa_s, MSG_DEBUG, "SME: Sending SA Query Request to "
MACSTR, MAC2STR(wpa_s->bssid));
wpa_hexdump(MSG_DEBUG, "SME: SA Query Transaction ID",
@@ -2270,27 +2153,9 @@
req[0] = WLAN_ACTION_SA_QUERY;
req[1] = WLAN_SA_QUERY_REQUEST;
os_memcpy(req + 2, trans_id, WLAN_SA_QUERY_TR_ID_LEN);
-
-#ifdef CONFIG_OCV
- if (wpa_sm_ocv_enabled(wpa_s->wpa)) {
- struct wpa_channel_info ci;
-
- if (wpa_drv_channel_info(wpa_s, &ci) != 0) {
- wpa_printf(MSG_WARNING,
- "Failed to get channel info for OCI element in SA Query Request frame");
- return;
- }
-
- if (ocv_insert_extended_oci(&ci, req + req_len) < 0)
- return;
-
- req_len += OCV_OCI_EXTENDED_LEN;
- }
-#endif /* CONFIG_OCV */
-
if (wpa_drv_send_action(wpa_s, wpa_s->assoc_freq, 0, wpa_s->bssid,
wpa_s->own_addr, wpa_s->bssid,
- req, req_len, 0) < 0)
+ req, sizeof(req), 0) < 0)
wpa_msg(wpa_s, MSG_INFO, "SME: Failed to send SA Query "
"Request");
}
@@ -2385,74 +2250,15 @@
}
-void sme_event_ch_switch(struct wpa_supplicant *wpa_s)
-{
- unsigned int usec;
- u32 _rand;
-
- if (wpa_s->wpa_state != WPA_COMPLETED ||
- !wpa_sm_ocv_enabled(wpa_s->wpa))
- return;
-
- wpa_dbg(wpa_s, MSG_DEBUG,
- "SME: Channel switch completed - trigger new SA Query to verify new operating channel");
- sme_stop_sa_query(wpa_s);
-
- if (os_get_random((u8 *) &_rand, sizeof(_rand)) < 0)
- _rand = os_random();
- usec = _rand % (sa_query_ch_switch_max_delay + 1);
- eloop_register_timeout(0, usec, sme_sa_query_timer, wpa_s, NULL);
-}
-
-
-static void sme_process_sa_query_request(struct wpa_supplicant *wpa_s,
- const u8 *sa, const u8 *data,
- size_t len)
-{
- u8 resp[2 + WLAN_SA_QUERY_TR_ID_LEN + OCV_OCI_EXTENDED_LEN];
- u8 resp_len = 2 + WLAN_SA_QUERY_TR_ID_LEN;
-
- wpa_dbg(wpa_s, MSG_DEBUG, "SME: Sending SA Query Response to "
- MACSTR, MAC2STR(wpa_s->bssid));
-
- resp[0] = WLAN_ACTION_SA_QUERY;
- resp[1] = WLAN_SA_QUERY_RESPONSE;
- os_memcpy(resp + 2, data + 1, WLAN_SA_QUERY_TR_ID_LEN);
-
-#ifdef CONFIG_OCV
- if (wpa_sm_ocv_enabled(wpa_s->wpa)) {
- struct wpa_channel_info ci;
-
- if (wpa_drv_channel_info(wpa_s, &ci) != 0) {
- wpa_printf(MSG_WARNING,
- "Failed to get channel info for OCI element in SA Query Response frame");
- return;
- }
-
- if (ocv_insert_extended_oci(&ci, resp + resp_len) < 0)
- return;
-
- resp_len += OCV_OCI_EXTENDED_LEN;
- }
-#endif /* CONFIG_OCV */
-
- if (wpa_drv_send_action(wpa_s, wpa_s->assoc_freq, 0, wpa_s->bssid,
- wpa_s->own_addr, wpa_s->bssid,
- resp, resp_len, 0) < 0)
- wpa_msg(wpa_s, MSG_INFO,
- "SME: Failed to send SA Query Response");
-}
-
-
-static void sme_process_sa_query_response(struct wpa_supplicant *wpa_s,
- const u8 *sa, const u8 *data,
- size_t len)
+void sme_sa_query_rx(struct wpa_supplicant *wpa_s, const u8 *sa,
+ const u8 *data, size_t len)
{
int i;
- if (!wpa_s->sme.sa_query_trans_id)
+ if (wpa_s->sme.sa_query_trans_id == NULL ||
+ len < 1 + WLAN_SA_QUERY_TR_ID_LEN ||
+ data[0] != WLAN_SA_QUERY_RESPONSE)
return;
-
wpa_dbg(wpa_s, MSG_DEBUG, "SME: Received SA Query response from "
MACSTR " (trans_id %02x%02x)", MAC2STR(sa), data[1], data[2]);
@@ -2477,48 +2283,4 @@
sme_stop_sa_query(wpa_s);
}
-
-void sme_sa_query_rx(struct wpa_supplicant *wpa_s, const u8 *sa,
- const u8 *data, size_t len)
-{
- if (len < 1 + WLAN_SA_QUERY_TR_ID_LEN)
- return;
-
- wpa_dbg(wpa_s, MSG_DEBUG, "SME: Received SA Query frame from "
- MACSTR " (trans_id %02x%02x)", MAC2STR(sa), data[1], data[2]);
-
-#ifdef CONFIG_OCV
- if (wpa_sm_ocv_enabled(wpa_s->wpa)) {
- struct ieee802_11_elems elems;
- struct wpa_channel_info ci;
-
- if (ieee802_11_parse_elems(data + 1 + WLAN_SA_QUERY_TR_ID_LEN,
- len - 1 - WLAN_SA_QUERY_TR_ID_LEN,
- &elems, 1) == ParseFailed) {
- wpa_printf(MSG_DEBUG,
- "SA Query: Failed to parse elements");
- return;
- }
-
- if (wpa_drv_channel_info(wpa_s, &ci) != 0) {
- wpa_printf(MSG_WARNING,
- "Failed to get channel info to validate received OCI in SA Query Action frame");
- return;
- }
-
- if (ocv_verify_tx_params(elems.oci, elems.oci_len, &ci,
- channel_width_to_int(ci.chanwidth),
- ci.seg1_idx) != 0) {
- wpa_printf(MSG_WARNING, "%s", ocv_errorstr);
- return;
- }
- }
-#endif /* CONFIG_OCV */
-
- if (data[0] == WLAN_SA_QUERY_REQUEST)
- sme_process_sa_query_request(wpa_s, sa, data, len);
- else if (data[0] == WLAN_SA_QUERY_RESPONSE)
- sme_process_sa_query_response(wpa_s, sa, data, len);
-}
-
#endif /* CONFIG_IEEE80211W */