diff options
| author | Yue Ma <yuem@qca.qualcomm.com> | 2015-08-20 15:41:02 -0700 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-08-24 17:55:23 +0530 |
| commit | bed0aead03e60e2e448313ccfcf3b5778d9917ae (patch) | |
| tree | 84a3b2068ebb53cd6a58bdbbed880e4f9a0ce7ab | |
| parent | 8bc349eaa230f46884d6ef68c429f36a8d7c2458 (diff) | |
qcacld: Use ini flag to control FW initiated self recovery
Use the same ini flag to enable/disable FW initiated self recovery.
If the flag is disabled, host will treat it as a normal FW assert.
This will also apply to host driver found PCIe linkdown or ROME SOC
cannot wake up where it will trigger a VOS_BUG.
Change-Id: Ida53fb834605750e503445cc0dbb9c570721f67b
CRs-fixed: 894205
| -rw-r--r-- | CORE/SERVICES/BMI/ol_fw.c | 6 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/ol_if_athvar.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/HIF/PCIe/hif_pci.c | 2 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 1 |
4 files changed, 8 insertions, 3 deletions
diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c index 7e122d4da782..3c087bbc248b 100644 --- a/CORE/SERVICES/BMI/ol_fw.c +++ b/CORE/SERVICES/BMI/ol_fw.c @@ -1280,8 +1280,10 @@ void ol_target_failure(void *instance, A_STATUS status) #ifdef CONFIG_CNSS ret = hif_pci_check_fw_reg(scn->hif_sc); if (0 == ret) { - ol_schedule_fw_indication_work(scn); - return; + if (scn->enable_self_recovery) { + ol_schedule_fw_indication_work(scn); + return; + } } else if (-1 == ret) { return; } diff --git a/CORE/SERVICES/COMMON/ol_if_athvar.h b/CORE/SERVICES/COMMON/ol_if_athvar.h index a7ae935d8ae1..7cdc283b4a1a 100644 --- a/CORE/SERVICES/COMMON/ol_if_athvar.h +++ b/CORE/SERVICES/COMMON/ol_if_athvar.h @@ -287,7 +287,7 @@ struct ol_softc { unsigned long ramdump_address; unsigned long ramdump_size; #endif - + bool enable_self_recovery; #ifdef WLAN_FEATURE_LPSS bool enablelpasssupport; #endif diff --git a/CORE/SERVICES/HIF/PCIe/hif_pci.c b/CORE/SERVICES/HIF/PCIe/hif_pci.c index 4d1f5bb1a044..3d0f5c350914 100644 --- a/CORE/SERVICES/HIF/PCIe/hif_pci.c +++ b/CORE/SERVICES/HIF/PCIe/hif_pci.c @@ -2860,6 +2860,8 @@ HIFTargetSleepStateAdjust(A_target_id_t targid, printk("%s:error, can't wakeup target\n", __func__); hif_msm_pcie_debug_info(sc); + if (!sc->ol_sc->enable_self_recovery) + VOS_BUG(0); sc->recovery = true; vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, TRUE); #ifdef CONFIG_CNSS diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c index f222d70ded8f..7cd450433c58 100644 --- a/CORE/VOSS/src/vos_api.c +++ b/CORE/VOSS/src/vos_api.c @@ -387,6 +387,7 @@ VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, v_SIZE_t hddContextSize ) scn->enablelpasssupport = pHddCtx->cfg_ini->enablelpasssupport; #endif scn->enableRamdumpCollection = pHddCtx->cfg_ini->is_ramdump_enabled; + scn->enable_self_recovery = pHddCtx->cfg_ini->enableSelfRecovery; vos_fw_hash_check_config(scn, pHddCtx); vos_runtime_pm_config(scn, pHddCtx); |
