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 17:47:37 +0530
commit7ea59c75c0f68e575eb6c32ea8bb1327982a8fff (patch)
tree2833631ee291523ee9034c5c9f83ccd6805dd600
parent4a24a789ed173990c50a63f3ea711128bc6fdacb (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;
}