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, &params);
 #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 */