summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMahesh A Saptasagar <c_msapta@qti.qualcomm.com>2016-07-19 16:14:51 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-07-22 15:23:08 +0530
commitb732aaf68d0bf4b84551ec30a7664a35226bbb9a (patch)
tree2833631ee291523ee9034c5c9f83ccd6805dd600
parent9c7c04ceee1aa4168b32ad5cfbee9dc5722ac143 (diff)
qcacld-2.0: Add recovery logic when wmi cmd buffer reach threshold
Add recovery logic when wmi command buffer reaches its threshold. This recovery logic collects ramdump and trigger SSR to recover from bad state. Change-Id: I3b10bcbedbd52ea99cc8191f0b1c593ed20e768a CRs-Fixed: 1037713
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index 7277e09b1063..6e1876a94938 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -894,7 +894,18 @@ dont_tag:
pr_err("%s: WMI Pending cmds: %d reached MAX: %d\n",
__func__, adf_os_atomic_read(&wmi_handle->pending_cmds), WMI_MAX_CMDS);
adf_os_atomic_dec(&wmi_handle->pending_cmds);
- VOS_BUG(0);
+ if (scn && scn->enable_self_recovery) {
+ if (vos_is_logp_in_progress(VOS_MODULE_ID_VOSS, NULL)) {
+ pr_err("%s- %d: SSR is in progress!!!!\n",
+ __func__, __LINE__);
+ return -EBUSY;
+ }
+ vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, TRUE);
+ pr_err("%s- %d: Start collecting ramdump\n",
+ __func__, __LINE__);
+ ol_schedule_ramdump_work(scn);
+ } else
+ VOS_BUG(0);
return -EBUSY;
}