Browse Source

qcacld-3.0: Use cm_is_open_mode() API to check for open security

Use cm_is_open_mode() API to check for open security.

Change-Id: I4d960ee781ee63e73f19f0d5e223fd49c01ba728
CRs-Fixed: 2947818
Utkarsh Bhatnagar 3 years ago
parent
commit
76866c0712

+ 7 - 16
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c

@@ -2125,7 +2125,6 @@ cm_update_btm_offload_config(struct wlan_objmgr_psoc *psoc,
 	uint8_t bssid[QDF_MAC_ADDR_SIZE];
 	struct cm_roam_values_copy temp;
 	bool is_hs_20_ap, is_pmf_enabled, is_open_connection = false;
-	int32_t cipher;
 	uint8_t vdev_id;
 	uint32_t mbo_oce_enabled_ap;
 
@@ -2165,8 +2164,7 @@ cm_update_btm_offload_config(struct wlan_objmgr_psoc *psoc,
 
 	wlan_objmgr_peer_release_ref(peer, WLAN_MLME_CM_ID);
 
-	cipher = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_UCAST_CIPHER);
-	if (!cipher || QDF_HAS_PARAM(cipher, WLAN_CRYPTO_CIPHER_NONE))
+	if (cm_is_open_mode(vdev))
 		is_open_connection = true;
 
 	wlan_cm_roam_cfg_get_value(psoc, vdev_id, MBO_OCE_ENABLED_AP, &temp);
@@ -4218,16 +4216,12 @@ bool cm_is_auth_type_11r(struct wlan_mlme_psoc_ext_obj *mlme_obj,
 			 struct wlan_objmgr_vdev *vdev,
 			 bool mdie_present)
 {
-	int32_t akm, ucast_cipher;
+	int32_t akm;
 
 	akm = wlan_crypto_get_param(vdev,
 				    WLAN_CRYPTO_PARAM_KEY_MGMT);
-	ucast_cipher = wlan_crypto_get_param(vdev,
-					     WLAN_CRYPTO_PARAM_UCAST_CIPHER);
 
-	if (!ucast_cipher ||
-	    ((QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_NONE) ==
-	      ucast_cipher))) {
+	if (cm_is_open_mode(vdev)) {
 		if (mdie_present && mlme_obj->cfg.lfr.enable_ftopen)
 			return true;
 	} else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA384) ||
@@ -4243,8 +4237,7 @@ bool cm_is_auth_type_11r(struct wlan_mlme_psoc_ext_obj *mlme_obj,
 	return false;
 }
 
-#ifdef FEATURE_WLAN_ESE
-static bool cm_is_open_mode(struct wlan_objmgr_vdev *vdev)
+bool cm_is_open_mode(struct wlan_objmgr_vdev *vdev)
 {
 	int32_t ucast_cipher;
 
@@ -4258,6 +4251,7 @@ static bool cm_is_open_mode(struct wlan_objmgr_vdev *vdev)
 	return false;
 }
 
+#ifdef FEATURE_WLAN_ESE
 bool
 cm_ese_open_present(struct wlan_objmgr_vdev *vdev,
 		    struct wlan_mlme_psoc_ext_obj *mlme_obj,
@@ -4274,7 +4268,6 @@ bool
 cm_is_ese_connection(struct wlan_objmgr_vdev *vdev, bool ese_version_present)
 {
 	int32_t akm;
-	int32_t auth_mode;
 	struct wlan_mlme_psoc_ext_obj *mlme_obj;
 	struct wlan_objmgr_psoc *psoc;
 
@@ -4293,13 +4286,11 @@ cm_is_ese_connection(struct wlan_objmgr_vdev *vdev, bool ese_version_present)
 	akm = wlan_crypto_get_param(vdev,
 				    WLAN_CRYPTO_PARAM_KEY_MGMT);
 
-	auth_mode = wlan_crypto_get_param(vdev,
-					  WLAN_CRYPTO_PARAM_AUTH_MODE);
-
 	if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_CCKM))
 		return true;
 
-	/* A profile can not be both ESE and 11R. But an 802.11R AP
+	/*
+	 * A profile can not be both ESE and 11R. But an 802.11R AP
 	 * may be advertising support for ESE as well. So if we are
 	 * associating Open or explicitly ESE then we will get ESE.
 	 * If we are associating explicitly 11R only then we will get

+ 2 - 0
components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_api.h

@@ -599,6 +599,8 @@ bool wlan_cm_is_auth_type_11r(struct wlan_mlme_psoc_ext_obj *mlme_obj,
 	return cm_is_auth_type_11r(mlme_obj, vdev, mdie_present);
 }
 
+bool cm_is_open_mode(struct wlan_objmgr_vdev *vdev);
+
 #ifdef FEATURE_WLAN_ESE
 bool
 cm_ese_open_present(struct wlan_objmgr_vdev *vdev,

+ 1 - 6
core/mac/src/pe/lim/lim_ft_preauth.c

@@ -226,7 +226,6 @@ void lim_perform_ft_pre_auth(struct mac_context *mac, QDF_STATUS status,
 			     uint32_t *data, struct pe_session *pe_session)
 {
 	tSirMacAuthFrameBody authFrame;
-	int32_t ucast_cipher;
 	bool is_open = false;
 
 	if (!pe_session) {
@@ -234,11 +233,7 @@ void lim_perform_ft_pre_auth(struct mac_context *mac, QDF_STATUS status,
 		return;
 	}
 
-	ucast_cipher = wlan_crypto_get_param(pe_session->vdev,
-					     WLAN_CRYPTO_PARAM_UCAST_CIPHER);
-	if (!ucast_cipher ||
-	    ((QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_NONE) ==
-	      ucast_cipher)))
+	if (cm_is_open_mode(pe_session->vdev))
 		is_open = true;
 
 	if (pe_session->is11Rconnection &&

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

@@ -8993,7 +8993,6 @@ csr_roam_diag_set_ctx_rsp(struct mac_context *mac_ctx,
 			  struct csr_roam_session *session,
 			  struct set_context_rsp *pRsp)
 {
-	int32_t ucast_cipher;
 	WLAN_HOST_DIAG_EVENT_DEF(setKeyEvent,
 				 host_event_wlan_security_payload_type);
 	struct wlan_objmgr_vdev *vdev;
@@ -9003,11 +9002,7 @@ csr_roam_diag_set_ctx_rsp(struct mac_context *mac_ctx,
 						    WLAN_LEGACY_SME_ID);
 	if (!vdev)
 		return;
-	ucast_cipher = wlan_crypto_get_param(vdev,
-					     WLAN_CRYPTO_PARAM_UCAST_CIPHER);
-	if (!ucast_cipher ||
-	    ((QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_NONE) ==
-	      ucast_cipher))) {
+	if (cm_is_open_mode(vdev)) {
 		wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
 		return;
 	}
@@ -12533,39 +12528,6 @@ csr_qos_send_reassoc_ind(struct mac_context *mac_ctx,
 {}
 #endif
 
-#ifdef FEATURE_WLAN_ESE
-static void
-csr_fill_ese_params(struct mac_context *mac_ctx,
-		    struct wlan_objmgr_vdev *vdev,
-		    tDot11fBeaconIEs *bcn_ies)
-{
-	int32_t ucast_cipher;
-	int32_t akm;
-	uint8_t vdev_id = wlan_vdev_get_id(vdev);
-
-	ucast_cipher = wlan_crypto_get_param(vdev,
-					     WLAN_CRYPTO_PARAM_UCAST_CIPHER);
-	akm = wlan_crypto_get_param(vdev,
-				    WLAN_CRYPTO_PARAM_KEY_MGMT);
-
-	if (mac_ctx->mlme_cfg->lfr.ese_enabled &&
-	    (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_CCKM) ||
-	     (bcn_ies->ESEVersion.present && (!ucast_cipher ||
-	       QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_NONE) ==
-	       ucast_cipher))))
-		wlan_cm_set_ese_assoc(mac_ctx->pdev, vdev_id, true);
-	else
-		wlan_cm_set_ese_assoc(mac_ctx->pdev, vdev_id, false);
-}
-#else
-static inline void
-csr_fill_ese_params(struct mac_context *mac_ctx,
-		    struct wlan_objmgr_vdev *vdev,
-		    tDot11fBeaconIEs *bcn_ies)
-{
-}
-#endif
-
 static void csr_fill_connected_profile(struct mac_context *mac_ctx,
 				       struct csr_roam_session *session,
 				       struct wlan_objmgr_vdev *vdev,
@@ -12583,6 +12545,7 @@ static void csr_fill_connected_profile(struct mac_context *mac_ctx,
 	tDot11fBeaconIEs *bcn_ies;
 	sme_QosAssocInfo assoc_info;
 	struct cm_roam_values_copy src_cfg;
+	bool is_ese = false;
 
 	conn_profile = &session->connectedProfile;
 	qdf_mem_zero(conn_profile, sizeof(tCsrRoamConnectedProfile));
@@ -12640,7 +12603,9 @@ static void csr_fill_connected_profile(struct mac_context *mac_ctx,
 
 	assoc_info.bss_desc = bss_desc;
 	if (rsp->connect_rsp.is_reassoc) {
-		csr_fill_ese_params(mac_ctx, vdev, bcn_ies);
+		if (cm_is_ese_connection(vdev, bcn_ies->ESEVersion.present))
+			is_ese = true;
+		wlan_cm_set_ese_assoc(mac_ctx->pdev, vdev_id, is_ese);
 		wlan_cm_roam_cfg_get_value(mac_ctx->psoc, vdev_id, UAPSD_MASK,
 					   &src_cfg);
 		assoc_info.uapsd_mask = src_cfg.uint_value;
@@ -12744,7 +12709,7 @@ cm_csr_connect_done_ind(struct wlan_objmgr_vdev *vdev,
 {
 	struct mac_context *mac_ctx;
 	uint8_t vdev_id = wlan_vdev_get_id(vdev);
-	int32_t ucast_cipher, count;
+	int32_t count;
 	struct set_context_rsp install_key_rsp;
 	int32_t rsn_cap, set_value;
 	struct wlan_mlme_psoc_ext_obj *mlme_obj;
@@ -12824,10 +12789,7 @@ cm_csr_connect_done_ind(struct wlan_objmgr_vdev *vdev,
 	 * 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 (!rsp->is_wps_connection && (!ucast_cipher ||
-	    (ucast_cipher & (1 << WLAN_CRYPTO_CIPHER_NONE)) == ucast_cipher)) {
+	if (!rsp->is_wps_connection && cm_is_open_mode(vdev)) {
 		install_key_rsp.length = sizeof(install_key_rsp);
 		install_key_rsp.status_code = eSIR_SME_SUCCESS;
 		install_key_rsp.sessionId = vdev_id;