diff --git a/umac/mlme/include/wlan_mlme_cmn.h b/umac/mlme/include/wlan_mlme_cmn.h index 753ed9d7b9..0afbaaf2cb 100644 --- a/umac/mlme/include/wlan_mlme_cmn.h +++ b/umac/mlme/include/wlan_mlme_cmn.h @@ -72,6 +72,9 @@ struct mlme_ext_ops { QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)( struct vdev_mlme_obj *vdev_mlme, uint8_t cmd_type); + QDF_STATUS (*mlme_vdev_ext_delete_rsp)( + struct wlan_objmgr_psoc *psoc, + struct vdev_delete_response *rsp); }; /** @@ -243,4 +246,17 @@ QDF_STATUS wlan_cmn_mlme_init(void); * FAILURE, if registration fails */ QDF_STATUS wlan_cmn_mlme_deinit(void); + +/** + * mlme_vdev_ops_ext_hdl_delete_rsp - Vdev Delete response ext handler + * @psoc: PSOC object + * @rsp: Vdev delete response received from the firmware + * + * API to invoke the legacy delete response handler for legacy cleanup + * + * Return: SUCCESS on successful deletion + * FAILURE, if deletion fails + */ +QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc, + struct vdev_delete_response *rsp); #endif diff --git a/umac/mlme/include/wlan_vdev_mlme.h b/umac/mlme/include/wlan_vdev_mlme.h index 28dc138d0e..ee940bd084 100644 --- a/umac/mlme/include/wlan_vdev_mlme.h +++ b/umac/mlme/include/wlan_vdev_mlme.h @@ -509,9 +509,6 @@ struct vdev_mlme_ops { QDF_STATUS (*mlme_vdev_notify_down_complete)( struct vdev_mlme_obj *vdev_mlme, uint16_t event_data_len, void *event_data); - QDF_STATUS (*mlme_vdev_ext_delete_rsp)( - struct vdev_mlme_obj *vdev_mlme, - struct vdev_delete_response *rsp); QDF_STATUS (*mlme_vdev_ext_stop_rsp)( struct vdev_mlme_obj *vdev_mlme, struct vdev_stop_response *rsp); diff --git a/umac/mlme/mlme_objmgr/dispatcher/src/wlan_cmn_mlme_main.c b/umac/mlme/mlme_objmgr/dispatcher/src/wlan_cmn_mlme_main.c index f65fd314ad..6fad156983 100644 --- a/umac/mlme/mlme_objmgr/dispatcher/src/wlan_cmn_mlme_main.c +++ b/umac/mlme/mlme_objmgr/dispatcher/src/wlan_cmn_mlme_main.c @@ -194,6 +194,17 @@ QDF_STATUS mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme, return ret; } +QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc, + struct vdev_delete_response *rsp) +{ + QDF_STATUS ret = QDF_STATUS_SUCCESS; + + if ((glbl_ops) && glbl_ops->mlme_vdev_ext_delete_rsp) + ret = glbl_ops->mlme_vdev_ext_delete_rsp(psoc, rsp); + + return ret; +} + void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb) { glbl_ops_cb = ops_cb; diff --git a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_tgt_if_rx_api.c b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_tgt_if_rx_api.c index c61c2ebfdc..bf3939d893 100644 --- a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_tgt_if_rx_api.c +++ b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_tgt_if_rx_api.c @@ -30,6 +30,7 @@ #include #include #include +#include static struct vdev_response_timer * tgt_vdev_mgr_get_response_timer_info(struct wlan_objmgr_psoc *psoc, @@ -126,37 +127,8 @@ static QDF_STATUS tgt_vdev_mgr_delete_response_handler( struct vdev_delete_response *rsp) { QDF_STATUS status = QDF_STATUS_E_FAILURE; - struct vdev_mlme_obj *vdev_mlme; - struct wlan_objmgr_vdev *vdev; - if (!rsp || !psoc) { - mlme_err("Invalid input"); - return QDF_STATUS_E_INVAL; - } - - vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, - rsp->vdev_id, - WLAN_VDEV_TARGET_IF_ID); - if (!vdev) { - mlme_err("VDEV is NULL"); - return QDF_STATUS_E_FAILURE; - } - - vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev); - if (!vdev_mlme) { - mlme_err("VDEV_%d: PSOC_%d VDEV_MLME is NULL", rsp->vdev_id, - wlan_psoc_get_id(psoc)); - goto tgt_vdev_mgr_delete_response_handler_end; - } - - if ((vdev_mlme->ops) && - vdev_mlme->ops->mlme_vdev_ext_delete_rsp) - status = vdev_mlme->ops->mlme_vdev_ext_delete_rsp( - vdev_mlme, - rsp); - -tgt_vdev_mgr_delete_response_handler_end: - wlan_objmgr_vdev_release_ref(vdev, WLAN_VDEV_TARGET_IF_ID); + status = mlme_vdev_ops_ext_hdl_delete_rsp(psoc, rsp); return status; }