Browse Source

qcacmn: Add change to replace free connect request API

In current scenario osif_cm_free_connect_req() and mlo_free_connect_ies()
used to free up connect request and its sub memory.
Similarly cm_free_connect_req() and cm_free_connect_req_param() also
free up the connect request and its sub memory.

So replace osif_cm_free_connect_req() with ucfg_cm_free_connect_req(),
mlo_free_connect_ies() and qdf_mem_free() with wlan_cm_free_connect_req()
and  mlo_free_connect_ies() with wlan_cm_free_connect_req_param().

Change-Id: Ie62603652dd77ae5ae9f7b7085d4b9bb257eaf53
CRs-Fixed: 3554234
Vijay Patil 2 years ago
parent
commit
c1d9d64d61

+ 3 - 35
os_if/linux/mlme/src/osif_cm_req.c

@@ -38,22 +38,6 @@
 #include <wlan_mlo_mgr_setup.h>
 #endif
 
-static void osif_cm_free_wep_key_params(struct wlan_cm_connect_req *connect_req)
-{
-	if (connect_req->crypto.wep_keys.key) {
-		qdf_mem_zero(connect_req->crypto.wep_keys.key,
-			     connect_req->crypto.wep_keys.key_len);
-		qdf_mem_free(connect_req->crypto.wep_keys.key);
-		connect_req->crypto.wep_keys.key = NULL;
-	}
-	if (connect_req->crypto.wep_keys.seq) {
-		qdf_mem_zero(connect_req->crypto.wep_keys.seq,
-			     connect_req->crypto.wep_keys.seq_len);
-		qdf_mem_free(connect_req->crypto.wep_keys.seq);
-		connect_req->crypto.wep_keys.seq = NULL;
-	}
-}
-
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
 static QDF_STATUS
 osif_cm_update_wep_seq_info(struct wlan_cm_connect_req *connect_req,
@@ -65,7 +49,7 @@ osif_cm_update_wep_seq_info(struct wlan_cm_connect_req *connect_req,
 		connect_req->crypto.wep_keys.seq =
 			qdf_mem_malloc(connect_req->crypto.wep_keys.seq_len);
 		if (!connect_req->crypto.wep_keys.seq) {
-			osif_cm_free_wep_key_params(connect_req);
+			ucfg_cm_free_wep_key_params(connect_req);
 			return QDF_STATUS_E_NOMEM;
 		}
 		qdf_mem_copy(connect_req->crypto.wep_keys.seq,
@@ -461,22 +445,6 @@ osif_cm_fill_connect_params(struct wlan_cm_connect_req *req,
 				 (struct qdf_mac_addr *)&params->prev_bssid);
 }
 
-static void osif_cm_free_connect_req(struct wlan_cm_connect_req *connect_req)
-{
-	if (connect_req->scan_ie.ptr) {
-		qdf_mem_free(connect_req->scan_ie.ptr);
-		connect_req->scan_ie.ptr = NULL;
-	}
-
-	if (connect_req->assoc_ie.ptr) {
-		qdf_mem_free(connect_req->assoc_ie.ptr);
-		connect_req->assoc_ie.ptr = NULL;
-	}
-
-	osif_cm_free_wep_key_params(connect_req);
-	qdf_mem_free(connect_req);
-}
-
 #ifdef WLAN_FEATURE_11BE_MLO
 #ifdef WLAN_FEATURE_11BE_MLO_ADV_FEATURE
 static inline
@@ -724,7 +692,7 @@ int osif_cm_connect(struct net_device *dev, struct wlan_objmgr_vdev *vdev,
 	connect_req->ssid.length = req->ssid_len;
 	if (connect_req->ssid.length > WLAN_SSID_MAX_LEN) {
 		osif_err("Invalid ssid len %zu", req->ssid_len);
-		osif_cm_free_connect_req(connect_req);
+		ucfg_cm_free_connect_req(connect_req);
 		return -EINVAL;
 	}
 
@@ -774,7 +742,7 @@ int osif_cm_connect(struct net_device *dev, struct wlan_objmgr_vdev *vdev,
 		osif_err("Connect failed with status %d", status);
 
 connect_start_fail:
-	osif_cm_free_connect_req(connect_req);
+	ucfg_cm_free_connect_req(connect_req);
 
 	return qdf_status_to_os_return(status);
 }

+ 21 - 0
umac/mlme/connection_mgr/core/src/wlan_cm_main_api.h

@@ -1344,6 +1344,27 @@ void cm_free_connect_req(struct wlan_cm_connect_req *connect_req);
  */
 void cm_free_connect_rsp(struct wlan_cm_connect_resp *connect_rsp);
 
+/**
+ * cm_free_connect_req_param() - Function to free up connect request sub memory.
+ * @req: pointer to connect req
+ *
+ * Function to free up connect request sub memory parameters.
+ *
+ * Return: void
+ */
+void cm_free_connect_req_param(struct wlan_cm_connect_req *req);
+
+/**
+ * cm_free_wep_key_params() - Function to free up connect request wep key params
+ * sub memory
+ * @req: pointer to connect req
+ *
+ * Function to free up connect request wep key params sub memory.
+ *
+ * Return: void
+ */
+void cm_free_wep_key_params(struct wlan_cm_connect_req *req);
+
 #ifdef CONN_MGR_ADV_FEATURE
 /**
  * cm_store_first_candidate_rsp() - store the connection failure response

+ 14 - 1
umac/mlme/connection_mgr/core/src/wlan_cm_util.c

@@ -961,15 +961,28 @@ void cm_free_connect_rsp_ies(struct wlan_cm_connect_resp *connect_rsp)
 	cm_free_roaming_info(connect_rsp);
 }
 
-static void cm_free_connect_req_param(struct wlan_cm_connect_req *req)
+static void cm_free_connect_req_ies(struct wlan_cm_connect_req *req)
 {
 	cm_zero_and_free_memory(req->assoc_ie.ptr, req->assoc_ie.len);
+	req->assoc_ie.ptr = NULL;
 	cm_zero_and_free_memory(req->scan_ie.ptr, req->scan_ie.len);
+	req->scan_ie.ptr = NULL;
+}
 
+void cm_free_wep_key_params(struct wlan_cm_connect_req *req)
+{
 	cm_zero_and_free_memory(req->crypto.wep_keys.key,
 				req->crypto.wep_keys.key_len);
+	req->crypto.wep_keys.key = NULL;
 	cm_zero_and_free_memory(req->crypto.wep_keys.seq,
 				req->crypto.wep_keys.seq_len);
+	req->crypto.wep_keys.seq = NULL;
+}
+
+void cm_free_connect_req_param(struct wlan_cm_connect_req *req)
+{
+	cm_free_connect_req_ies(req);
+	cm_free_wep_key_params(req);
 }
 
 void cm_free_connect_req(struct wlan_cm_connect_req *req)

+ 8 - 0
umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_api.h

@@ -221,6 +221,14 @@ void wlan_cm_free_connect_req(struct wlan_cm_connect_req *connect_req);
  */
 void wlan_cm_free_connect_resp(struct wlan_cm_connect_resp *connect_rsp);
 
+/**
+ * wlan_cm_free_connect_req_param() - free up connect request sub memory
+ * @req: Connect request
+ *
+ * Return: void
+ */
+void wlan_cm_free_connect_req_param(struct wlan_cm_connect_req *req);
+
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 /**
  * wlan_cm_is_vdev_roam_started() - check if vdev is in roaming state and

+ 18 - 1
umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_ucfg_api.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. 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 above
@@ -111,6 +111,23 @@ bool ucfg_cm_is_vdev_disconnected(struct wlan_objmgr_vdev *vdev);
  */
 bool ucfg_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev);
 
+/**
+ * ucfg_cm_free_wep_key_params() - free up connect request wep key params
+ * sub memory
+ * @req: connect req
+ *
+ * Return: void
+ */
+void ucfg_cm_free_wep_key_params(struct wlan_cm_connect_req *req);
+
+/**
+ * ucfg_cm_free_connect_req() - free up connect request and its sub memory.
+ * @req: connect req
+ *
+ * Return: void
+ */
+void ucfg_cm_free_connect_req(struct wlan_cm_connect_req *req);
+
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 /**
  * ucfg_cm_is_vdev_roam_started() - check if vdev is in roaming state and

+ 8 - 0
umac/mlme/connection_mgr/dispatcher/src/wlan_cm_api.c

@@ -147,6 +147,14 @@ void wlan_cm_free_connect_resp(struct wlan_cm_connect_resp *connect_rsp)
 	cm_free_connect_rsp(connect_rsp);
 }
 
+void wlan_cm_free_connect_req_param(struct wlan_cm_connect_req *req)
+{
+	if (!req)
+		return;
+
+	cm_free_connect_req_param(req);
+}
+
 void wlan_cm_set_max_connect_attempts(struct wlan_objmgr_vdev *vdev,
 				      uint8_t max_connect_attempts)
 {

+ 11 - 1
umac/mlme/connection_mgr/dispatcher/src/wlan_cm_ucfg_api.c

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2012-2015, 2020-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. 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 above
@@ -74,6 +74,16 @@ bool ucfg_cm_is_vdev_roaming(struct wlan_objmgr_vdev *vdev)
 	return cm_is_vdev_roaming(vdev);
 }
 
+void ucfg_cm_free_wep_key_params(struct wlan_cm_connect_req *req)
+{
+	cm_free_wep_key_params(req);
+}
+
+void ucfg_cm_free_connect_req(struct wlan_cm_connect_req *req)
+{
+	cm_free_connect_req(req);
+}
+
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 bool ucfg_cm_is_vdev_roam_started(struct wlan_objmgr_vdev *vdev)
 {

+ 14 - 32
umac/mlo_mgr/src/wlan_mlo_mgr_sta.c

@@ -49,6 +49,10 @@ mlo_allocate_and_copy_ies(struct wlan_cm_connect_req *target,
 {
 	target->assoc_ie.ptr = NULL;
 	target->scan_ie.ptr = NULL;
+	target->crypto.wep_keys.key = NULL;
+	target->crypto.wep_keys.seq = NULL;
+	target->crypto.wep_keys.key_len = 0;
+	target->crypto.wep_keys.seq_len = 0;
 
 	if (source->scan_ie.ptr) {
 		target->scan_ie.ptr = qdf_mem_malloc(source->scan_ie.len);
@@ -69,20 +73,6 @@ mlo_allocate_and_copy_ies(struct wlan_cm_connect_req *target,
 	}
 }
 
-void
-mlo_free_connect_ies(struct wlan_cm_connect_req *connect_req)
-{
-	if (connect_req->scan_ie.ptr) {
-		qdf_mem_free(connect_req->scan_ie.ptr);
-		connect_req->scan_ie.ptr = NULL;
-	}
-
-	if (connect_req->assoc_ie.ptr) {
-		qdf_mem_free(connect_req->assoc_ie.ptr);
-		connect_req->assoc_ie.ptr = NULL;
-	}
-}
-
 /*
  * mlo_get_tdls_link_vdev() - API to get tdls link vdev
  * @mlo_dev_ctx: pointer to mlo dev context
@@ -310,8 +300,7 @@ static void mlo_free_copied_conn_req(struct wlan_mlo_sta *sta_ctx)
 		mlo_debug("enter");
 		copied_conn_req_lock_acquire(sta_ctx);
 		if (sta_ctx->copied_conn_req) {
-			mlo_free_connect_ies(sta_ctx->copied_conn_req);
-			qdf_mem_free(sta_ctx->copied_conn_req);
+			wlan_cm_free_connect_req(sta_ctx->copied_conn_req);
 			sta_ctx->copied_conn_req = NULL;
 		}
 		copied_conn_req_lock_release(sta_ctx);
@@ -525,8 +514,7 @@ static QDF_STATUS mlo_disconnect_no_lock(struct wlan_objmgr_vdev *vdev,
 			return QDF_STATUS_E_FAILURE;
 
 		if (sta_ctx->connect_req) {
-			mlo_free_connect_ies(sta_ctx->connect_req);
-			qdf_mem_free(sta_ctx->connect_req);
+			wlan_cm_free_connect_req(sta_ctx->connect_req);
 			sta_ctx->connect_req = NULL;
 		}
 
@@ -746,7 +734,7 @@ QDF_STATUS mlo_connect(struct wlan_objmgr_vdev *vdev,
 			sta_ctx->copied_conn_req = qdf_mem_malloc(
 					sizeof(struct wlan_cm_connect_req));
 		else
-			mlo_free_connect_ies(sta_ctx->copied_conn_req);
+			wlan_cm_free_connect_req_param(sta_ctx->copied_conn_req);
 
 		mlo_debug("storing orig connect req");
 		if (sta_ctx->copied_conn_req) {
@@ -852,7 +840,7 @@ mlo_prepare_and_send_connect(struct wlan_objmgr_vdev *vdev,
 	req.crypto.auth_type = 0;
 
 	wlan_cm_start_connect(vdev, &req);
-	mlo_free_connect_ies(&req);
+	wlan_cm_free_connect_req_param(&req);
 }
 
 /**
@@ -1310,8 +1298,7 @@ static QDF_STATUS mlo_disconnect_req(struct wlan_objmgr_vdev *vdev,
 		mlo_dev_lock_acquire(mlo_dev_ctx);
 		if (sta_ctx && sta_ctx->connect_req &&
 		    source != CM_INTERNAL_DISCONNECT) {
-			mlo_free_connect_ies(sta_ctx->connect_req);
-			qdf_mem_free(sta_ctx->connect_req);
+			wlan_cm_free_connect_req(sta_ctx->connect_req);
 			sta_ctx->connect_req = NULL;
 		}
 
@@ -1367,8 +1354,7 @@ QDF_STATUS mlo_sync_disconnect(struct wlan_objmgr_vdev *vdev,
 		sta_ctx = mlo_dev_ctx->sta_ctx;
 	if (mlo_dev_ctx && wlan_vdev_mlme_is_mlo_vdev(vdev)) {
 		if (sta_ctx && sta_ctx->connect_req) {
-			mlo_free_connect_ies(sta_ctx->connect_req);
-			qdf_mem_free(sta_ctx->connect_req);
+			wlan_cm_free_connect_req(sta_ctx->connect_req);
 			sta_ctx->connect_req = NULL;
 		}
 
@@ -1485,8 +1471,7 @@ static QDF_STATUS ml_activate_connect_req_sched_cb(struct scheduler_msg *msg)
 	}
 
 	mlo_connect(vdev, sta_ctx->connect_req);
-	mlo_free_connect_ies(sta_ctx->connect_req);
-	qdf_mem_free(sta_ctx->connect_req);
+	wlan_cm_free_connect_req(sta_ctx->connect_req);
 	sta_ctx->connect_req = NULL;
 
 	wlan_objmgr_vdev_release_ref(vdev, WLAN_MLO_MGR_ID);
@@ -1529,8 +1514,7 @@ void mlo_sta_link_handle_pending_connect(struct wlan_objmgr_vdev *vdev)
 			vdev,
 			WLAN_MLO_MGR_ID);
 	if (QDF_IS_STATUS_ERROR(ret)) {
-		mlo_free_connect_ies(sta_ctx->connect_req);
-		qdf_mem_free(sta_ctx->connect_req);
+		wlan_cm_free_connect_req(sta_ctx->connect_req);
 		sta_ctx->connect_req = NULL;
 		return;
 	}
@@ -1542,8 +1526,7 @@ void mlo_sta_link_handle_pending_connect(struct wlan_objmgr_vdev *vdev)
 				     QDF_MODULE_ID_MLME,
 				     QDF_MODULE_ID_MLME, &msg);
 	if (QDF_IS_STATUS_ERROR(ret)) {
-		mlo_free_connect_ies(sta_ctx->connect_req);
-		qdf_mem_free(sta_ctx->connect_req);
+		wlan_cm_free_connect_req(sta_ctx->connect_req);
 		sta_ctx->connect_req = NULL;
 		wlan_objmgr_vdev_release_ref(vdev,
 					     WLAN_MLO_MGR_ID);
@@ -2062,8 +2045,7 @@ void mlo_internal_disconnect_links(struct wlan_objmgr_vdev *vdev)
 	}
 
 	if (sta_ctx->connect_req) {
-		mlo_free_connect_ies(sta_ctx->connect_req);
-		qdf_mem_free(sta_ctx->connect_req);
+		wlan_cm_free_connect_req(sta_ctx->connect_req);
 		sta_ctx->connect_req = NULL;
 	}