diff --git a/power_management_offloads/dispatcher/inc/wlan_pmo_obj_mgmt_api.h b/power_management_offloads/dispatcher/inc/wlan_pmo_obj_mgmt_api.h index a19ad1bbde2c..1cec0caf5414 100644 --- a/power_management_offloads/dispatcher/inc/wlan_pmo_obj_mgmt_api.h +++ b/power_management_offloads/dispatcher/inc/wlan_pmo_obj_mgmt_api.h @@ -65,7 +65,7 @@ QDF_STATUS pmo_psoc_object_created_notification( * * Return QDF_STATUS status in case of success else return error */ -QDF_STATUS pmo_psoc_object_destroyed_notification( +QDF_STATUS pmo_psoc_object_destroyed_notification( struct wlan_objmgr_psoc *psoc, void *arg); /** @@ -80,6 +80,18 @@ QDF_STATUS pmo_psoc_object_destroyed_notification( QDF_STATUS pmo_vdev_object_created_notification( struct wlan_objmgr_vdev *vdev, void *arg); +/** + * pmo_vdev_ready() - handles vdev ready in firmware event + * @vdev: vdev which is ready in firmware + * + * Objmgr vdev_create event does not guarantee vdev creation in firmware. + * Any logic that would normally go in the vdev_create event, but needs to + * communicate with firmware, needs to go here instead. + * + * Return QDF_STATUS + */ +QDF_STATUS pmo_vdev_ready(struct wlan_objmgr_vdev *vdev); + /** * pmo_vdev_object_destroyed_notification(): pmo vdev delete handler * @vdev: vdev which is going to delete by objmgr diff --git a/power_management_offloads/dispatcher/inc/wlan_pmo_ucfg_api.h b/power_management_offloads/dispatcher/inc/wlan_pmo_ucfg_api.h index 85a8b23cffec..9ffe5c2cb430 100644 --- a/power_management_offloads/dispatcher/inc/wlan_pmo_ucfg_api.h +++ b/power_management_offloads/dispatcher/inc/wlan_pmo_ucfg_api.h @@ -28,6 +28,7 @@ #include "wlan_pmo_mc_addr_filtering_public_struct.h" #include "wlan_pmo_wow_public_struct.h" #include "wlan_pmo_common_public_struct.h" +#include "wlan_pmo_obj_mgmt_api.h" /** * pmo_ucfg_is_ap_mode_supports_arp_ns() - Check ap mode support arp&ns offload diff --git a/power_management_offloads/dispatcher/src/wlan_pmo_obj_mgmt_api.c b/power_management_offloads/dispatcher/src/wlan_pmo_obj_mgmt_api.c index ebb4ce9897f9..8ed90dc13c3b 100644 --- a/power_management_offloads/dispatcher/src/wlan_pmo_obj_mgmt_api.c +++ b/power_management_offloads/dispatcher/src/wlan_pmo_obj_mgmt_api.c @@ -270,17 +270,32 @@ QDF_STATUS pmo_vdev_object_created_notification( vdev_ctx->pmo_psoc_ctx = psoc_ctx; qdf_atomic_init(&vdev_ctx->gtk_err_enable); - /* Register static configuration with firmware */ - pmo_register_wow_wakeup_events(vdev); - pmo_register_action_frame_patterns(vdev); - /* Register default wow patterns with firmware */ - pmo_register_wow_default_patterns(vdev); out: PMO_EXIT(); return QDF_STATUS_SUCCESS; } +QDF_STATUS pmo_vdev_ready(struct wlan_objmgr_vdev *vdev) +{ + PMO_ENTER(); + + /* Register static configuration with firmware */ + pmo_register_wow_wakeup_events(vdev); + pmo_register_action_frame_patterns(vdev); + + /* Register default wow patterns with firmware */ + pmo_register_wow_default_patterns(vdev); + + PMO_EXIT(); + + /* + * The above APIs should return a status but don't. + * Just return success for now. + */ + return QDF_STATUS_SUCCESS; +} + QDF_STATUS pmo_vdev_object_destroyed_notification( struct wlan_objmgr_vdev *vdev, void *arg) {