Browse Source

qcacmn: Add public API for ext cm pointer

Add public API for ext cm pointer

Change-Id: I4208efd33e4fb09dfd3601c0ac5ca086d8ae3475
Himanshu Batra 4 years ago
parent
commit
add02fc7c9

+ 7 - 3
umac/mlme/connection_mgr/core/src/wlan_cm_main.c

@@ -80,7 +80,8 @@ QDF_STATUS wlan_cm_init(struct vdev_mlme_obj *vdev_mlme)
 		return QDF_STATUS_E_NOMEM;
 
 	vdev_mlme->cnx_mgr_ctx->vdev = vdev;
-	status = mlme_cm_ext_hdl_create(vdev_mlme->cnx_mgr_ctx);
+	status = mlme_cm_ext_hdl_create(vdev,
+					&vdev_mlme->cnx_mgr_ctx->ext_cm_ptr);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		qdf_mem_free(vdev_mlme->cnx_mgr_ctx);
 		vdev_mlme->cnx_mgr_ctx = NULL;
@@ -89,7 +90,9 @@ QDF_STATUS wlan_cm_init(struct vdev_mlme_obj *vdev_mlme)
 
 	status = cm_sm_create(vdev_mlme->cnx_mgr_ctx);
 	if (QDF_IS_STATUS_ERROR(status)) {
-		mlme_cm_ext_hdl_destroy(vdev_mlme->cnx_mgr_ctx);
+		mlme_cm_ext_hdl_destroy(vdev,
+					vdev_mlme->cnx_mgr_ctx->ext_cm_ptr);
+		vdev_mlme->cnx_mgr_ctx->ext_cm_ptr = NULL;
 		qdf_mem_free(vdev_mlme->cnx_mgr_ctx);
 		vdev_mlme->cnx_mgr_ctx = NULL;
 		return status;
@@ -130,7 +133,8 @@ QDF_STATUS wlan_cm_deinit(struct vdev_mlme_obj *vdev_mlme)
 	cm_req_lock_destroy(vdev_mlme->cnx_mgr_ctx);
 	qdf_list_destroy(&vdev_mlme->cnx_mgr_ctx->req_list);
 	cm_sm_destroy(vdev_mlme->cnx_mgr_ctx);
-	mlme_cm_ext_hdl_destroy(vdev_mlme->cnx_mgr_ctx);
+	mlme_cm_ext_hdl_destroy(vdev, vdev_mlme->cnx_mgr_ctx->ext_cm_ptr);
+	vdev_mlme->cnx_mgr_ctx->ext_cm_ptr = NULL;
 	qdf_mem_free(vdev_mlme->cnx_mgr_ctx);
 	vdev_mlme->cnx_mgr_ctx = NULL;
 

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

@@ -25,6 +25,7 @@
 
 #ifdef FEATURE_CM_ENABLE
 #include "wlan_cm_public_struct.h"
+#include "wlan_ext_mlme_obj_types.h"
 
 /**
  * wlan_cm_start_connect() - connect start request
@@ -337,6 +338,14 @@ const char *wlan_cm_reason_code_to_str(enum wlan_reason_code reason);
 enum wlan_cm_active_request_type
 wlan_cm_get_active_req_type(struct wlan_objmgr_vdev *vdev);
 
+/**
+ * wlan_cm_get_ext_hdl() - Get connection manager ext context from vdev
+ * @vdev: vdev pointer
+ *
+ * Return: pointer to connection manager ext context
+ */
+cm_ext_t *wlan_cm_get_ext_hdl(struct wlan_objmgr_vdev *vdev);
+
 #ifdef WLAN_FEATURE_HOST_ROAM
 /**
  * wlan_cm_reassoc_rsp() - Connection manager reassoc response

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

@@ -202,6 +202,11 @@ bool wlan_cm_get_active_connect_req(struct wlan_objmgr_vdev *vdev,
 	return cm_get_active_connect_req(vdev, req);
 }
 
+cm_ext_t *wlan_cm_get_ext_hdl(struct wlan_objmgr_vdev *vdev)
+{
+	return cm_get_ext_hdl(vdev);
+}
+
 #ifdef WLAN_FEATURE_HOST_ROAM
 bool wlan_cm_get_active_reassoc_req(struct wlan_objmgr_vdev *vdev,
 				    struct wlan_cm_vdev_reassoc_req *req)

+ 12 - 6
umac/mlme/include/wlan_mlme_cmn.h

@@ -169,8 +169,10 @@ struct mlme_ext_ops {
 				struct wlan_objmgr_psoc *psoc,
 				struct multi_vdev_restart_resp *resp);
 #ifdef FEATURE_CM_ENABLE
-	QDF_STATUS (*mlme_cm_ext_hdl_create_cb)(struct cnx_mgr *cm_ctx);
-	QDF_STATUS (*mlme_cm_ext_hdl_destroy_cb)(struct cnx_mgr *cm_ctx);
+	QDF_STATUS (*mlme_cm_ext_hdl_create_cb)(struct wlan_objmgr_vdev *vdev,
+						cm_ext_t **ext_cm_ptr);
+	QDF_STATUS (*mlme_cm_ext_hdl_destroy_cb)(struct wlan_objmgr_vdev *vdev,
+						 cm_ext_t *ext_cm_ptr);
 	QDF_STATUS (*mlme_cm_ext_connect_start_ind_cb)(
 				struct wlan_objmgr_vdev *vdev,
 				struct wlan_cm_connect_req *req);
@@ -407,20 +409,24 @@ QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc,
 /**
  * mlme_cm_ext_hdl_create() - Connection manager callback to create ext
  * context
- * @cm_ctx: common cm context object
+ * @vdev: VDEV object
+ * @ext_cm_ptr: pointer to connection manager ext pointer
  *
  * Return: QDF_STATUS
  */
-QDF_STATUS mlme_cm_ext_hdl_create(struct cnx_mgr *cm_ctx);
+QDF_STATUS mlme_cm_ext_hdl_create(struct wlan_objmgr_vdev *vdev,
+				  cm_ext_t **ext_cm_ptr);
 
 /**
  * mlme_cm_ext_hdl_destroy() - Connection manager callback to destroy ext
  * context
- * @cm_ctx: common cm context object
+ * @vdev: VDEV object
+ * @ext_cm_ptr: connection manager ext pointer
  *
  * Return: QDF_STATUS
  */
-QDF_STATUS mlme_cm_ext_hdl_destroy(struct cnx_mgr *cm_ctx);
+QDF_STATUS mlme_cm_ext_hdl_destroy(struct wlan_objmgr_vdev *vdev,
+				   cm_ext_t *ext_cm_ptr);
 
 /**
  * mlme_cm_connect_start_ind() - Connection manager ext Connect start indication

+ 6 - 4
umac/mlme/mlme_objmgr/dispatcher/src/wlan_cmn_mlme_main.c

@@ -247,22 +247,24 @@ QDF_STATUS mlme_vdev_ops_ext_hdl_multivdev_restart_resp(
 }
 
 #ifdef FEATURE_CM_ENABLE
-QDF_STATUS mlme_cm_ext_hdl_create(struct cnx_mgr *cm_ctx)
+QDF_STATUS mlme_cm_ext_hdl_create(struct wlan_objmgr_vdev *vdev,
+				  cm_ext_t **ext_cm_ptr)
 {
 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
 
 	if (glbl_ops && glbl_ops->mlme_cm_ext_hdl_create_cb)
-		ret = glbl_ops->mlme_cm_ext_hdl_create_cb(cm_ctx);
+		ret = glbl_ops->mlme_cm_ext_hdl_create_cb(vdev, ext_cm_ptr);
 
 	return ret;
 }
 
-QDF_STATUS mlme_cm_ext_hdl_destroy(struct cnx_mgr *cm_ctx)
+QDF_STATUS mlme_cm_ext_hdl_destroy(struct wlan_objmgr_vdev *vdev,
+				   cm_ext_t *ext_cm_ptr)
 {
 	QDF_STATUS ret = QDF_STATUS_SUCCESS;
 
 	if (glbl_ops && glbl_ops->mlme_cm_ext_hdl_destroy_cb)
-		ret = glbl_ops->mlme_cm_ext_hdl_destroy_cb(cm_ctx);
+		ret = glbl_ops->mlme_cm_ext_hdl_destroy_cb(vdev, ext_cm_ptr);
 
 	return ret;
 }