From 9eb8bc01a0508bcc495181648530f73978ab3fb6 Mon Sep 17 00:00:00 2001 From: Sourav Mohapatra Date: Fri, 7 Feb 2020 10:25:40 +0530 Subject: [PATCH] qcacld-3.0: Modify cds_trigger_recovery as per modified QDF framework The QDF framework for triggering self recovery is undergoing changes to include support for multiple psoc driver. As the MCL host is still multiple psoc agnostic, create dummy wrappers over the cds_trigger_recovery so as to maintain compatibility with modified qdf_trigger_self_recovery Change-Id: I42163879c3e786a2b9ab2f9f5785be5531754e77 CRs-Fixed: 2617709 --- components/pmo/core/src/wlan_pmo_suspend_resume.c | 12 ++++++------ core/cds/inc/cds_api.h | 4 ++++ core/cds/src/cds_api.c | 9 ++++++++- 3 files changed, 18 insertions(+), 7 deletions(-) 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