diff --git a/components/pmo/core/src/wlan_pmo_suspend_resume.c b/components/pmo/core/src/wlan_pmo_suspend_resume.c index 3e9b1c38db92..73ac668fffd7 100644 --- a/components/pmo/core/src/wlan_pmo_suspend_resume.c +++ b/components/pmo/core/src/wlan_pmo_suspend_resume.c @@ -816,7 +816,7 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, pmo_tgt_psoc_get_host_credits(psoc), pmo_tgt_psoc_get_pending_cmnds(psoc)); pmo_tgt_update_target_suspend_flag(psoc, false); - qdf_trigger_self_recovery(QDF_SUSPEND_TIMEOUT); + qdf_trigger_self_recovery(psoc, QDF_SUSPEND_TIMEOUT); goto out; } @@ -834,7 +834,7 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, pmo_err("No Credits after HTC ACK:%d, pending_cmds:%d," "cannot resume back", host_credits, wmi_pending_cmds); htc_dump_counter_info(pmo_core_psoc_get_htc_handle(psoc)); - qdf_trigger_self_recovery(QDF_SUSPEND_TIMEOUT); + qdf_trigger_self_recovery(psoc, QDF_SUSPEND_TIMEOUT); } pmo_debug("WOW enabled successfully in fw: credits:%d pending_cmds: %d", host_credits, wmi_pending_cmds); @@ -871,7 +871,7 @@ QDF_STATUS pmo_core_psoc_suspend_target(struct wlan_objmgr_psoc *psoc, if (QDF_IS_STATUS_ERROR(status)) { pmo_err("Failed to get ACK from firmware for pdev suspend"); pmo_tgt_update_target_suspend_flag(psoc, false); - qdf_trigger_self_recovery(QDF_SUSPEND_TIMEOUT); + qdf_trigger_self_recovery(psoc, QDF_SUSPEND_TIMEOUT); } out: @@ -1136,7 +1136,7 @@ QDF_STATUS pmo_core_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc, fail: if (status != QDF_STATUS_SUCCESS) - qdf_trigger_self_recovery(QDF_RESUME_TIMEOUT); + qdf_trigger_self_recovery(psoc, QDF_RESUME_TIMEOUT); dec_psoc_ref: pmo_psoc_put_ref(psoc); @@ -1182,7 +1182,7 @@ QDF_STATUS pmo_core_psoc_send_host_wakeup_ind_to_fw( pmo_err("Pending commands %d credits %d", pmo_tgt_psoc_get_pending_cmnds(psoc), pmo_tgt_psoc_get_host_credits(psoc)); - qdf_trigger_self_recovery(QDF_RESUME_TIMEOUT); + qdf_trigger_self_recovery(psoc, QDF_RESUME_TIMEOUT); } else { pmo_debug("Host wakeup received"); } @@ -1254,7 +1254,7 @@ QDF_STATUS pmo_core_psoc_resume_target(struct wlan_objmgr_psoc *psoc, pmo_fatal("Pending commands %d credits %d", pmo_tgt_psoc_get_pending_cmnds(psoc), pmo_tgt_psoc_get_host_credits(psoc)); - qdf_trigger_self_recovery(QDF_RESUME_TIMEOUT); + qdf_trigger_self_recovery(psoc, QDF_RESUME_TIMEOUT); } else { pmo_debug("Host wakeup received"); } diff --git a/core/cds/inc/cds_api.h b/core/cds/inc/cds_api.h index d602307c3e5a..af417eca7d04 100644 --- a/core/cds/inc/cds_api.h +++ b/core/cds/inc/cds_api.h @@ -372,6 +372,10 @@ void cds_reset_recovery_reason(void); */ #define cds_trigger_recovery(reason) \ __cds_trigger_recovery(reason, __func__, __LINE__) + +void cds_trigger_recovery_psoc(void *psoc, enum qdf_hang_reason reason, + const char *func, const uint32_t line); + void __cds_trigger_recovery(enum qdf_hang_reason reason, const char *func, const uint32_t line); diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c index a95a27c78cd7..dc5a6c92eaa9 100644 --- a/core/cds/src/cds_api.c +++ b/core/cds/src/cds_api.c @@ -206,7 +206,7 @@ QDF_STATUS cds_init(void) gp_cds_context->qdf_ctx = &g_qdf_ctx; - qdf_register_self_recovery_callback(__cds_trigger_recovery); + qdf_register_self_recovery_callback(cds_trigger_recovery_psoc); qdf_register_fw_down_callback(cds_is_fw_down); qdf_register_is_driver_unloading_callback(cds_is_driver_unloading); qdf_register_recovering_state_query_callback(cds_is_driver_recovering); @@ -1843,6 +1843,13 @@ void __cds_trigger_recovery(enum qdf_hang_reason reason, const char *func, cds_trigger_recovery_handler(func, line); } +void cds_trigger_recovery_psoc(void *psoc, enum qdf_hang_reason reason, + const char *func, const uint32_t line) +{ + __cds_trigger_recovery(reason, func, line); +} + + /** * cds_get_recovery_reason() - get self recovery reason * @reason: recovery reason