瀏覽代碼

qcacmn: Assign disconnect event handler

Assign the disconnect start and disconnect complete event handler
in the interface manager.

This change is part of the interface manager effort.

Change-Id: I6885c2ace59fa0f305e45d421d158bef02aa937b
CRs-fixed: 2760080
Lincoln Tran 4 年之前
父節點
當前提交
0e8995bde7

+ 29 - 0
umac/cmn_services/interface_mgr/inc/wlan_if_mgr_sta.h

@@ -49,4 +49,33 @@ QDF_STATUS if_mgr_connect_start(struct wlan_objmgr_vdev *vdev,
 QDF_STATUS if_mgr_connect_complete(struct wlan_objmgr_vdev *vdev,
 				   struct if_mgr_event_data *event_data);
 
+/**
+ * if_mgr_disconnect_start() - Disconnect start event handler
+ * @vdev: vdev object
+ * @event_data: Interface mgr event data
+ *
+ * This function handles the disconnect start event for interface manager
+ *
+ * Context: It should run in thread context
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS if_mgr_disconnect_start(struct wlan_objmgr_vdev *vdev,
+				   void *event_data);
+
+/**
+ * if_mgr_disconnect_complete() - Disconnect complete event handler
+ * @vdev: vdev object
+ * @event_data: Interface mgr event data
+ *
+ * This function handles the disconnect complete event for interface
+ * manager
+ *
+ * Context: It should run in thread context
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS if_mgr_disconnect_complete(struct wlan_objmgr_vdev *vdev,
+				      void *event_data);
+
 #endif

+ 7 - 0
umac/cmn_services/interface_mgr/src/wlan_if_mgr_core.c

@@ -52,6 +52,13 @@ QDF_STATUS if_mgr_deliver_event(struct wlan_objmgr_vdev *vdev,
 		break;
 	case WLAN_IF_MGR_EV_AP_STOP_BSS_COMPLETE:
 		status = if_mgr_ap_stop_bss_complete(vdev, event_data);
+		break;
+	case WLAN_IF_MGR_EV_DISCONNECT_START:
+		status = if_mgr_disconnect_start(vdev, event_data);
+		break;
+	case WLAN_IF_MGR_EV_DISCONNECT_COMPLETE:
+		status = if_mgr_disconnect_complete(vdev, event_data);
+		break;
 	default:
 		status = QDF_STATUS_E_INVAL;
 		ifmgr_err("Invalid event");

+ 4 - 1
umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h

@@ -269,6 +269,7 @@ typedef void (*wlan_objmgr_peer_status_handler)(
  * @WLAN_DCS_ID:                DCS operations
  * @WLAN_IOT_SIM_ID:            IOT Simulation feature
  * @WLAN_MLME_CM_ID             Connection Manager reference ID
+ * @WLAN_IF_MGR_ID:             Interface manager reference ID
  * @WLAN_REF_ID_MAX:            Max id used to generate ref count tracking array
  */
  /* New value added to the enum must also be reflected in function
@@ -353,6 +354,7 @@ typedef enum {
 	WLAN_DCS_ID           = 75,
 	WLAN_IOT_SIM_ID       = 76,
 	WLAN_MLME_CM_ID       = 77,
+	WLAN_IF_MGR_ID        = 78,
 	WLAN_REF_ID_MAX,
 } wlan_objmgr_ref_dbgid;
 
@@ -443,7 +445,8 @@ static inline const char *string_from_dbgid(wlan_objmgr_ref_dbgid id)
 					"WLAN_PKT_CAPTURE_ID",
 					"WLAN_DCS_ID",
 					"WLAN_IOT_SIM_ID",
-					"WLAN_MLME_CM_ID"};
+					"WLAN_MLME_CM_ID",
+					"WLAN_IF_MGR_ID"};
 
 	if (id >= WLAN_REF_ID_MAX)
 		return "Unknown";