diff --git a/umac/cmn_services/interface_mgr/inc/wlan_if_mgr_sta.h b/umac/cmn_services/interface_mgr/inc/wlan_if_mgr_sta.h index b68865692b..796c1ce758 100644 --- a/umac/cmn_services/interface_mgr/inc/wlan_if_mgr_sta.h +++ b/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 diff --git a/umac/cmn_services/interface_mgr/src/wlan_if_mgr_core.c b/umac/cmn_services/interface_mgr/src/wlan_if_mgr_core.c index 3ab48b520b..d3b20c873e 100644 --- a/umac/cmn_services/interface_mgr/src/wlan_if_mgr_core.c +++ b/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"); diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h index 61f029d20d..ae66582754 100644 --- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h +++ b/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";