summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYue Ma <yuem@qca.qualcomm.com>2015-08-20 15:41:02 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-08-24 17:55:23 +0530
commitbed0aead03e60e2e448313ccfcf3b5778d9917ae (patch)
tree84a3b2068ebb53cd6a58bdbbed880e4f9a0ce7ab
parent8bc349eaa230f46884d6ef68c429f36a8d7c2458 (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.c6
-rw-r--r--CORE/SERVICES/COMMON/ol_if_athvar.h2
-rw-r--r--CORE/SERVICES/HIF/PCIe/hif_pci.c2
-rw-r--r--CORE/VOSS/src/vos_api.c1
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);