diff --git a/components/pmo/core/src/wlan_pmo_suspend_resume.c b/components/pmo/core/src/wlan_pmo_suspend_resume.c index 3493312a150d..aa1f616acbe5 100644 --- a/components/pmo/core/src/wlan_pmo_suspend_resume.c +++ b/components/pmo/core/src/wlan_pmo_suspend_resume.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -936,27 +936,45 @@ QDF_STATUS pmo_core_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc, hif_pre_runtime_resume(hif_ctx); - if (pld_cb) - QDF_BUG(!pld_cb()); + if (pld_cb) { + if (pld_cb()) { + status = QDF_STATUS_E_FAILURE; + goto fail; + } + } - QDF_BUG(!hif_runtime_resume(hif_ctx)); + if (hif_runtime_resume(hif_ctx)) { + status = QDF_STATUS_E_FAILURE; + goto fail; + } status = pmo_core_psoc_bus_resume_req(psoc, QDF_RUNTIME_SUSPEND); - QDF_BUG(status == QDF_STATUS_SUCCESS); + if (status != QDF_STATUS_SUCCESS) + goto fail; status = pmo_core_psoc_configure_resume(psoc); - QDF_BUG(status == QDF_STATUS_SUCCESS); + if (status != QDF_STATUS_SUCCESS) + goto fail; status = pmo_tgt_psoc_set_runtime_pm_inprogress(psoc, false); - QDF_BUG(status == QDF_STATUS_SUCCESS); + if (status != QDF_STATUS_SUCCESS) + goto fail; - QDF_BUG(!htc_runtime_resume(htc_ctx)); + if (htc_runtime_resume(htc_ctx)) { + status = QDF_STATUS_E_FAILURE; + goto fail; + } status = cdp_runtime_resume(dp_soc, txrx_pdev); - QDF_BUG(status == QDF_STATUS_SUCCESS); + if (status != QDF_STATUS_SUCCESS) + goto fail; hif_process_runtime_resume_success(hif_ctx); +fail: + if (status != QDF_STATUS_SUCCESS) + qdf_trigger_self_recovery(); + dec_psoc_ref: pmo_psoc_put_ref(psoc);