Răsfoiți Sursa

qcacld-3.0: Use is wps/osen from the connect req/rsp

Use is wps/osen from the connect req/rsp, instead of parsing
the assoc ie and deciding the value.

Change-Id: I628c8aab22d1e842219b8d38fd025299d91cc68f
CRs-Fixed: 2868657
gaurank kathpalia 4 ani în urmă
părinte
comite
2fb03473aa

+ 0 - 5
components/mlme/core/inc/wlan_mlme_main.h

@@ -260,7 +260,6 @@ struct ft_context {
  * derived from JOIN_REQ and REASSOC_REQ. If a particular AC bit is set, it
  * means the AC is both trigger enabled and delivery enabled.
  * @qos_enabled: is qos enabled
- * @is_wps is wps connection
  * @ft_info: ft related info
  * @hlp_ie: hldp ie
  * @hlp_ie_len: hlp ie length
@@ -275,7 +274,6 @@ struct mlme_connect_info {
 #endif
 	uint8_t uapsd_per_ac_bitmask;
 	bool qos_enabled;
-	bool is_wps;
 	struct ft_context ft_info;
 #ifdef WLAN_FEATURE_FILS_SK
 	uint8_t *hlp_ie;
@@ -651,9 +649,6 @@ void mlme_get_discon_reason_n_from_ap(struct wlan_objmgr_psoc *psoc,
 				      uint8_t vdev_id, bool *from_ap,
 				      uint32_t *reason_code);
 
-bool wlan_is_wps_connection(struct wlan_objmgr_pdev *pdev,
-			    uint8_t vdev_id);
-
 /**
  * wlan_get_opmode_from_vdev_id() - Get opmode from vdevid
  * @psoc: PSOC pointer

+ 0 - 27
components/mlme/core/src/wlan_mlme_main.c

@@ -2826,33 +2826,6 @@ void mlme_get_discon_reason_n_from_ap(struct wlan_objmgr_psoc *psoc,
 	wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
 }
 
-bool wlan_is_wps_connection(struct wlan_objmgr_pdev *pdev,
-			    uint8_t vdev_id)
-{
-	struct wlan_objmgr_vdev *vdev;
-	struct mlme_legacy_priv *mlme_priv;
-	bool wps;
-
-	if (!pdev)
-		return false;
-
-	vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
-						    WLAN_LEGACY_MAC_ID);
-	if (!vdev)
-		return false;
-	mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
-	if (!mlme_priv) {
-		mlme_legacy_err("vdev legacy private object is NULL");
-		wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
-		return false;
-	}
-
-	wps = mlme_priv->connect_info.is_wps;
-	wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
-
-	return wps;
-}
-
 enum QDF_OPMODE wlan_get_opmode_from_vdev_id(struct wlan_objmgr_pdev *pdev,
 					     uint8_t vdev_id)
 {

+ 6 - 2
components/umac/mlme/connection_mgr/core/src/wlan_cm_vdev_api.h

@@ -42,6 +42,8 @@
  * used with out validation, used for the scenarios where the device is used
  * as a testbed device with special functionality and not recommended
  * for production.
+ * @is_wps_connection: is wps connection
+ * @is_osen_connection: is osen connectgion
  * @assoc_ie: assoc ie to be used in assoc req
  * @scan_ie: Default scan ie to be used in the uncast probe req
  * @entry: scan entry for the candidate
@@ -49,8 +51,10 @@
 struct cm_vdev_join_req {
 	uint8_t vdev_id;
 	wlan_cm_id cm_id;
-	bool force_24ghz_in_ht20;
-	bool force_rsne_override;
+	uint8_t force_24ghz_in_ht20:1,
+		force_rsne_override:1,
+		is_wps_connection:1,
+		is_osen_connection:1;
 	struct element_info assoc_ie;
 	struct element_info scan_ie;
 	struct scan_cache_entry *entry;

+ 26 - 14
components/umac/mlme/connection_mgr/core/src/wlan_cm_vdev_connect.c

@@ -794,13 +794,14 @@ cm_copy_join_params(struct cm_vdev_join_req *join_req,
 		     req->scan_ie.len);
 
 	join_req->entry = util_scan_copy_cache_entry(req->bss->entry);
-
 	if (!join_req->entry)
 		return QDF_STATUS_E_NOMEM;
 
 	join_req->vdev_id = req->vdev_id;
 	join_req->cm_id = req->cm_id;
 	join_req->force_rsne_override = req->force_rsne_override;
+	join_req->is_wps_connection = req->is_wps_connection;
+	join_req->is_osen_connection = req->is_osen_connection;
 
 	return QDF_STATUS_SUCCESS;
 }
@@ -821,8 +822,9 @@ QDF_STATUS wlan_cm_send_connect_rsp(struct scheduler_msg *msg)
 						    rsp->connect_rsp.vdev_id,
 						    WLAN_MLME_CM_ID);
 	if (!vdev) {
-		mlme_err("vdev_id: %d cm_id 0x%x : vdev not found",
-			 rsp->connect_rsp.vdev_id, rsp->connect_rsp.cm_id);
+		mlme_err(CM_PREFIX_FMT "vdev not found",
+			 CM_PREFIX_REF(rsp->connect_rsp.vdev_id,
+				       rsp->connect_rsp.cm_id));
 		wlan_cm_free_connect_rsp(rsp);
 		return QDF_STATUS_E_INVAL;
 	}
@@ -888,7 +890,8 @@ cm_handle_connect_req(struct wlan_objmgr_vdev *vdev,
 
 	psoc = wlan_vdev_get_psoc(vdev);
 	if (!psoc) {
-		mlme_err("vdev_id: %d psoc not found", req->vdev_id);
+		mlme_err(CM_PREFIX_FMT "psoc not found",
+			 CM_PREFIX_REF(req->vdev_id, req->cm_id));
 		return QDF_STATUS_E_INVAL;
 	}
 
@@ -898,13 +901,13 @@ cm_handle_connect_req(struct wlan_objmgr_vdev *vdev,
 
 	qdf_mem_zero(&msg, sizeof(msg));
 	join_req = qdf_mem_malloc(sizeof(*join_req));
-
 	if (!join_req)
 		return QDF_STATUS_E_NOMEM;
 
 	status = cm_copy_join_params(join_req, req);
-
 	if (QDF_IS_STATUS_ERROR(status)) {
+		mlme_err(CM_PREFIX_FMT "Failed to copy join req",
+			 CM_PREFIX_REF(req->vdev_id, req->cm_id));
 		cm_free_join_req(join_req);
 		return QDF_STATUS_E_FAILURE;
 	}
@@ -913,12 +916,14 @@ cm_handle_connect_req(struct wlan_objmgr_vdev *vdev,
 
 	status = cm_csr_handle_connect_req(vdev, req, join_req);
 	if (QDF_IS_STATUS_ERROR(status)) {
-		mlme_err("vdev_id: %d cm_id 0x%x : fail to fill params from legacy",
-			 req->vdev_id, req->cm_id);
+		mlme_err(CM_PREFIX_FMT "fail to fill params from legacy",
+			 CM_PREFIX_REF(req->vdev_id, req->cm_id));
 		cm_free_join_req(join_req);
 		return QDF_STATUS_E_FAILURE;
 	}
-	mlme_debug("HT cap %x", req->ht_caps);
+
+	mlme_debug(CM_PREFIX_FMT "HT cap %x",
+		   CM_PREFIX_REF(req->vdev_id, req->cm_id), req->ht_caps);
 	if (mlme_obj->cfg.obss_ht40.is_override_ht20_40_24g &&
 	    !(req->ht_caps & WLAN_HTCAP_C_CHWIDTH40))
 		join_req->force_24ghz_in_ht20 = true;
@@ -930,8 +935,11 @@ cm_handle_connect_req(struct wlan_objmgr_vdev *vdev,
 	status = scheduler_post_message(QDF_MODULE_ID_MLME,
 					QDF_MODULE_ID_PE,
 					QDF_MODULE_ID_PE, &msg);
-	if (QDF_IS_STATUS_ERROR(status))
+	if (QDF_IS_STATUS_ERROR(status)) {
+		mlme_err(CM_PREFIX_FMT "msg post fail",
+			 CM_PREFIX_REF(req->vdev_id, req->cm_id));
 		cm_free_join_req(join_req);
+	}
 
 	if (wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE)
 		wlan_register_txrx_packetdump(OL_TXRX_PDEV_ID);
@@ -965,8 +973,10 @@ cm_send_bss_peer_create_req(struct wlan_objmgr_vdev *vdev,
 	status = scheduler_post_message(QDF_MODULE_ID_MLME,
 					QDF_MODULE_ID_PE,
 					QDF_MODULE_ID_PE, &msg);
-	if (QDF_IS_STATUS_ERROR(status))
+	if (QDF_IS_STATUS_ERROR(status)) {
+		mlme_err("vdev %d: post fail", req->vdev_id);
 		qdf_mem_free(req);
+	}
 
 	return status;
 
@@ -990,12 +1000,14 @@ cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
 	op_mode = wlan_vdev_mlme_get_opmode(vdev);
 	pdev = wlan_vdev_get_pdev(vdev);
 	if (!pdev) {
-		mlme_err("vdev_id: %d pdev not found", vdev_id);
+		mlme_err(CM_PREFIX_FMT "pdev not found",
+			 CM_PREFIX_REF(vdev_id, rsp->cm_id));
 		return QDF_STATUS_E_INVAL;
 	}
 	psoc = wlan_pdev_get_psoc(pdev);
 	if (!psoc) {
-		mlme_err("vdev_id: %d psoc not found", vdev_id);
+		mlme_err(CM_PREFIX_FMT "psoc not found",
+			 CM_PREFIX_REF(vdev_id, rsp->cm_id));
 		return QDF_STATUS_E_INVAL;
 	}
 
@@ -1074,7 +1086,7 @@ bool cm_is_vdevid_connected(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id)
 	vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id,
 						    WLAN_MLME_CM_ID);
 	if (!vdev) {
-		mlme_err("vdev_id: %d: vdev not found", vdev_id);
+		mlme_err("vdev %d: vdev not found", vdev_id);
 		return false;
 	}
 	opmode = wlan_vdev_mlme_get_opmode(vdev);

+ 52 - 6
components/umac/mlme/connection_mgr/core/src/wlan_cm_vdev_disconnect.c

@@ -30,6 +30,9 @@
 #include <wlan_objmgr_vdev_obj.h>
 #include <wlan_cm_roam_api.h>
 #include "wni_api.h"
+#ifdef FEATURE_CM_ENABLE
+#include "connection_mgr/core/src/wlan_cm_roam.h"
+#endif
 
 #ifdef FEATURE_CM_ENABLE
 QDF_STATUS cm_disconnect_start_ind(struct wlan_objmgr_vdev *vdev,
@@ -79,7 +82,8 @@ cm_handle_disconnect_req(struct wlan_objmgr_vdev *vdev,
 
 	pdev = wlan_vdev_get_pdev(vdev);
 	if (!pdev) {
-		mlme_err("vdev_id: %d pdev not found", req->req.vdev_id);
+		mlme_err(CM_PREFIX_FMT "pdev not found",
+			 CM_PREFIX_REF(req->req.vdev_id, req->cm_id));
 		return QDF_STATUS_E_INVAL;
 	}
 	rso_cfg = wlan_cm_get_rso_config(vdev);
@@ -111,9 +115,11 @@ cm_handle_disconnect_req(struct wlan_objmgr_vdev *vdev,
 	status = scheduler_post_message(QDF_MODULE_ID_MLME,
 					QDF_MODULE_ID_PE,
 					QDF_MODULE_ID_PE, &msg);
-	if (QDF_IS_STATUS_ERROR(status))
+	if (QDF_IS_STATUS_ERROR(status)) {
+		mlme_err(CM_PREFIX_FMT "msg post fail",
+			 CM_PREFIX_REF(req->req.vdev_id, req->cm_id));
 		qdf_mem_free(discon_req);
-
+	}
 	return status;
 }
 
@@ -189,7 +195,8 @@ cm_disconnect_complete_ind(struct wlan_objmgr_vdev *vdev,
 	op_mode = wlan_vdev_mlme_get_opmode(vdev);
 	psoc = wlan_vdev_get_psoc(vdev);
 	if (!psoc) {
-		mlme_err("vdev_id: %d psoc not found", vdev_id);
+		mlme_err(CM_PREFIX_FMT "psoc not found",
+			 CM_PREFIX_REF(vdev_id, rsp->req.cm_id));
 		return QDF_STATUS_E_INVAL;
 	}
 	cm_disconnect_diag_event(vdev, rsp);
@@ -267,6 +274,41 @@ static void cm_copy_peer_disconnect_ies(struct wlan_objmgr_vdev *vdev,
 	ap_ie->ptr = discon_ie->ptr;
 }
 
+#ifdef WLAN_FEATURE_HOST_ROAM
+static inline
+QDF_STATUS cm_fill_disconnect_resp(struct wlan_objmgr_vdev *vdev,
+				   struct wlan_cm_discon_rsp *resp)
+{
+	struct wlan_cm_vdev_reassoc_req req;
+
+	/* Fill from reassoc req for Handsoff disconnect */
+	if (cm_get_active_reassoc_req(vdev, &req)) {
+		resp->req.cm_id = req.cm_id;
+		resp->req.req.vdev_id = req.vdev_id;
+		qdf_copy_macaddr(&resp->req.req.bssid, &req.prev_bssid);
+		resp->req.req.source = CM_ROAM_DISCONNECT;
+	} else if (!cm_get_active_disconnect_req(vdev, &resp->req)) {
+		/* If not reassoc then fill from disconnect active */
+		return QDF_STATUS_E_FAILURE;
+	}
+	mlme_debug(CM_PREFIX_FMT "disconnect found source %d",
+		   CM_PREFIX_REF(resp->req.req.vdev_id, resp->req.cm_id),
+		   resp->req.req.source);
+
+	return QDF_STATUS_SUCCESS;
+}
+#else
+static inline
+QDF_STATUS cm_fill_disconnect_resp(struct wlan_objmgr_vdev *vdev,
+				   struct wlan_cm_discon_rsp *resp)
+{
+	if (!cm_get_active_disconnect_req(vdev, &resp->req))
+		return QDF_STATUS_E_FAILURE;
+
+	return QDF_STATUS_SUCCESS;
+}
+#endif
+
 QDF_STATUS cm_handle_disconnect_resp(struct scheduler_msg *msg)
 {
 	QDF_STATUS status;
@@ -287,8 +329,12 @@ QDF_STATUS cm_handle_disconnect_resp(struct scheduler_msg *msg)
 	}
 
 	qdf_mem_zero(&resp, sizeof(resp));
-	if (!cm_get_active_disconnect_req(vdev, &resp.req)) {
+	status = cm_fill_disconnect_resp(vdev, &resp);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		mlme_err("Active disconnect not found for vdev %d",
+			 ind->vdev_id);
 		qdf_mem_free(ind);
+		wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_CM_ID);
 		return QDF_STATUS_E_FAILURE;
 	}
 
@@ -301,6 +347,6 @@ QDF_STATUS cm_handle_disconnect_resp(struct scheduler_msg *msg)
 
 	qdf_mem_free(ind);
 
-	return QDF_STATUS_E_FAILURE;
+	return QDF_STATUS_SUCCESS;
 }
 #endif

+ 1 - 1
core/hdd/src/wlan_hdd_cm_connect.c

@@ -921,7 +921,7 @@ hdd_cm_connect_success_post_user_update(struct wlan_objmgr_vdev *vdev,
 			       sta_ctx->conn_info.chan_freq);
 	hdd_wmm_assoc(adapter, false, uapsd_mask);
 
-	if (!wlan_is_wps_connection(hdd_ctx->pdev, adapter->vdev_id) &&
+	if (!rsp->is_wps_connection &&
 	    (sta_ctx->conn_info.auth_type == eCSR_AUTH_TYPE_NONE ||
 	     sta_ctx->conn_info.auth_type == eCSR_AUTH_TYPE_OPEN_SYSTEM ||
 	     sta_ctx->conn_info.auth_type == eCSR_AUTH_TYPE_SHARED_KEY ||

+ 4 - 2
core/mac/src/pe/lim/lim_process_mlm_host_roam.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -598,12 +598,14 @@ void lim_process_mlm_ft_reassoc_req(struct mac_context *mac,
 	else
 		val = mac->mlme_cfg->sap_cfg.listen_interval;
 
+	/* For connection manager CM will create the peer before reassoc */
+#ifndef FEATURE_CM_ENABLE
 	status = wma_add_bss_peer_sta(session->vdev_id, session->bssId);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		qdf_mem_free(reassoc_req);
 		return;
 	}
-
+#endif
 	reassoc_req->listenInterval = (uint16_t) val;
 
 	vdev = session->vdev;

+ 2 - 22
core/mac/src/pe/lim/lim_process_sme_req_messages.c

@@ -3287,9 +3287,6 @@ static void lim_fill_crypto_params(struct mac_context *mac_ctx,
 	int32_t ucast_cipher;
 	int32_t auth_mode;
 	int32_t akm;
-	uint8_t wsc_oui[OUI_LENGTH];
-	uint32_t oui_cpu;
-	struct mlme_legacy_priv *mlme_priv;
 	tSirMacCapabilityInfo *ap_cap_info;
 	bool rsn_enabled, privacy;
 
@@ -3348,21 +3345,8 @@ static void lim_fill_crypto_params(struct mac_context *mac_ctx,
 	session->connected_akm = lim_get_connected_akm(session, ucast_cipher,
 						       auth_mode, akm);
 
-	/* check for WPS */
-	oui_cpu = qdf_be32_to_cpu(WSC_OUI);
-	qdf_mem_copy(wsc_oui, &oui_cpu, OUI_LENGTH);
-	if (wlan_get_vendor_ie_ptr_from_oui(wsc_oui, OUI_LENGTH,
-					    req->assoc_ie.ptr,
-					    req->assoc_ie.len))
-		session->wps_registration = true;
-
-	/* check for OSEN */
-	oui_cpu = qdf_be32_to_cpu(OSEN_OUI);
-	qdf_mem_copy(wsc_oui, &oui_cpu, OUI_LENGTH);
-	if (wlan_get_vendor_ie_ptr_from_oui(wsc_oui, OUI_LENGTH,
-					    req->assoc_ie.ptr,
-					    req->assoc_ie.len))
-		session->isOSENConnection = true;
+	session->wps_registration = req->is_wps_connection;
+	session->isOSENConnection = req->is_osen_connection;
 
 	if (lim_is_rsn_profile(session))
 		lim_fill_rsn_ie(mac_ctx, session, req);
@@ -3372,10 +3356,6 @@ static void lim_fill_crypto_params(struct mac_context *mac_ctx,
 		lim_fill_wapi_ie(mac_ctx, session, req);
 
 	lim_update_fils_config(mac_ctx, session, req);
-	mlme_priv = wlan_vdev_mlme_get_ext_hdl(session->vdev);
-	if (!mlme_priv)
-		return;
-	mlme_priv->connect_info.is_wps = session->wps_registration;
 }
 
 static QDF_STATUS

+ 4 - 0
core/mac/src/pe/lim/lim_send_sme_rsp_messages.c

@@ -298,6 +298,8 @@ lim_cm_prepare_join_rsp_from_pe_session(struct mac_context *mac_ctx,
 		qdf_mem_copy(connect_ie->assoc_rsp.ptr, pe_session->assocRsp,
 			     connect_ie->assoc_rsp.len);
 	}
+	connect_rsp->is_wps_connection = pe_session->wps_registration;
+	connect_rsp->is_osen_connection = pe_session->isOSENConnection;
 
 	if (QDF_IS_STATUS_SUCCESS(connect_status)) {
 		connect_rsp->status_code = STATUS_SUCCESS;
@@ -340,6 +342,8 @@ lim_cm_fill_join_rsp_from_connect_req(struct cm_vdev_join_req *req,
 	connect_rsp->connect_status = QDF_STATUS_E_FAILURE;
 	connect_rsp->reason = reason;
 	connect_rsp->ssid = req->entry->ssid;
+	connect_rsp->is_wps_connection = req->is_wps_connection;
+	connect_rsp->is_osen_connection = req->is_osen_connection;
 }
 
 static QDF_STATUS lim_cm_flush_connect_rsp(struct scheduler_msg *msg)

+ 0 - 2
core/sme/inc/csr_neighbor_roam.h

@@ -139,8 +139,6 @@ static inline void csr_neighbor_roam_purge_preauth_failed_list(
 bool csr_neighbor_middle_of_roaming(struct mac_context *mac, uint8_t sessionId);
 QDF_STATUS csr_neighbor_roam_update_config(struct mac_context *mac_ctx,
 		uint8_t session_id, uint8_t value, uint8_t reason);
-QDF_STATUS csr_neighbor_roam_update_fast_roaming_enabled(struct mac_context *mac,
-		uint8_t sessionId, const bool fastRoamEnabled);
 QDF_STATUS csr_neighbor_roam_channels_filter_by_current_band(
 		struct mac_context *mac, uint8_t sessionId,
 		uint32_t *input_chan_freq_list,

+ 20 - 4
core/sme/src/common/sme_api.c

@@ -1456,8 +1456,16 @@ QDF_STATUS sme_update_is_ese_feature_enabled(mac_handle_t mac_handle,
 		  mac->mlme_cfg->lfr.ese_enabled,
 		  isEseIniFeatureEnabled);
 	mac->mlme_cfg->lfr.ese_enabled = isEseIniFeatureEnabled;
-	csr_neighbor_roam_update_fast_roaming_enabled(
-			mac, sessionId, isEseIniFeatureEnabled);
+	mlme_set_supplicant_disabled_roaming(mac->psoc, sessionId,
+					     !isEseIniFeatureEnabled);
+	if (isEseIniFeatureEnabled)
+		wlan_cm_roam_state_change(mac->pdev, sessionId,
+					  WLAN_ROAM_RSO_ENABLED,
+					  REASON_CONNECT);
+	else
+		wlan_cm_roam_state_change(mac->pdev, sessionId,
+				WLAN_ROAM_RSO_STOPPED,
+				REASON_SUPPLICANT_DISABLED_ROAMING);
 
 	if (true == isEseIniFeatureEnabled)
 		mac->mlme_cfg->lfr.fast_transition_enabled = true;
@@ -6363,8 +6371,16 @@ QDF_STATUS sme_update_is_fast_roam_ini_feature_enabled(mac_handle_t mac_handle,
 		  mac->mlme_cfg->lfr.lfr_enabled,
 		  isFastRoamIniFeatureEnabled);
 	mac->mlme_cfg->lfr.lfr_enabled = isFastRoamIniFeatureEnabled;
-	csr_neighbor_roam_update_fast_roaming_enabled(mac, sessionId,
-						   isFastRoamIniFeatureEnabled);
+	mlme_set_supplicant_disabled_roaming(mac->psoc, sessionId,
+					     !isFastRoamIniFeatureEnabled);
+	if (isFastRoamIniFeatureEnabled)
+		wlan_cm_roam_state_change(mac->pdev, sessionId,
+					  WLAN_ROAM_RSO_ENABLED,
+					  REASON_CONNECT);
+	else
+		wlan_cm_roam_state_change(mac->pdev, sessionId,
+				WLAN_ROAM_RSO_STOPPED,
+				REASON_SUPPLICANT_DISABLED_ROAMING);
 
 	return QDF_STATUS_SUCCESS;
 }

+ 4 - 7
core/sme/src/csr/csr_api_roam.c

@@ -13607,8 +13607,6 @@ cm_csr_connect_done_ind(struct wlan_objmgr_vdev *vdev,
 	struct set_context_rsp install_key_rsp;
 	struct csr_roam_session *session;
 	int32_t rsn_cap;
-	struct mlme_legacy_priv *mlme_priv;
-	bool is_wps = false;
 
 	/*
 	 * This API is to update legacy struct and should be removed once
@@ -13636,16 +13634,14 @@ cm_csr_connect_done_ind(struct wlan_objmgr_vdev *vdev,
 
 		return QDF_STATUS_SUCCESS;
 	}
-	mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
-	if (mlme_priv)
-		is_wps = mlme_priv->connect_info.is_wps;
+
 	/*
 	 * For open mode authentication, send dummy install key response to
 	 * send OBSS scan and QOS event.
 	 */
 	ucast_cipher = wlan_crypto_get_param(vdev,
 					     WLAN_CRYPTO_PARAM_UCAST_CIPHER);
-	if (!is_wps && (!ucast_cipher ||
+	if (!rsp->is_wps_connection && (!ucast_cipher ||
 	    (ucast_cipher & (1 << WLAN_CRYPTO_CIPHER_NONE)) == ucast_cipher)) {
 		install_key_rsp.length = sizeof(install_key_rsp);
 		install_key_rsp.status_code = eSIR_SME_SUCCESS;
@@ -13663,7 +13659,8 @@ cm_csr_connect_done_ind(struct wlan_objmgr_vdev *vdev,
 
 	csr_roam_state_change(mac_ctx, eCSR_ROAMING_STATE_JOINED, vdev_id);
 
-	if (!is_wps && (csr_cm_is_fils_connection(rsp) || !ucast_cipher ||
+	if (!rsp->is_wps_connection &&
+	    (csr_cm_is_fils_connection(rsp) || !ucast_cipher ||
 	    QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_NONE) ==
 			  ucast_cipher ||
 	    QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_WEP_40) ||

+ 0 - 50
core/sme/src/csr/csr_neighbor_roam.c

@@ -109,56 +109,6 @@ void csr_neighbor_roam_send_lfr_metric_event(
 }
 #endif
 
-/**
- * csr_neighbor_roam_update_fast_roaming_enabled() - update roaming capability
- *
- * @mac_ctx: Global MAC context
- * @session_id: Session
- * @fast_roam_enabled: Is fast roaming enabled on this device?
- *                     This capability can be changed dynamically.
- *
- * Return: None
- */
-QDF_STATUS csr_neighbor_roam_update_fast_roaming_enabled(struct mac_context *mac_ctx,
-						uint8_t session_id,
-						const bool fast_roam_enabled)
-{
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	tpCsrNeighborRoamControlInfo neighbor_roam_info =
-		&mac_ctx->roam.neighborRoamInfo[session_id];
-
-	switch (neighbor_roam_info->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		qdf_status = sme_acquire_global_lock(&mac_ctx->sme);
-		if (QDF_IS_STATUS_ERROR(qdf_status))
-			break;
-
-		mlme_set_supplicant_disabled_roaming(mac_ctx->psoc, session_id,
-						     !fast_roam_enabled);
-		if (fast_roam_enabled) {
-			wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
-						  WLAN_ROAM_RSO_ENABLED,
-						  REASON_CONNECT);
-		} else {
-			wlan_cm_roam_state_change(mac_ctx->pdev, session_id,
-					WLAN_ROAM_RSO_STOPPED,
-					REASON_SUPPLICANT_DISABLED_ROAMING);
-		}
-		sme_release_global_lock(&mac_ctx->sme);
-		break;
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		sme_debug("Currently in INIT state, Nothing to do");
-		break;
-	default:
-		sme_err("Unexpected state %s, returning failure",
-			    mac_trace_get_neighbour_roam_state
-			    (neighbor_roam_info->neighborRoamState));
-		qdf_status = QDF_STATUS_E_FAILURE;
-		break;
-	}
-	return qdf_status;
-}
-
 QDF_STATUS csr_neighbor_roam_update_config(struct mac_context *mac_ctx,
 		uint8_t session_id, uint8_t value, uint8_t reason)
 {