summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPadma, Santhosh Kumar <skpadma@qti.qualcomm.com>2016-06-21 14:26:44 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-06-23 14:48:27 +0530
commit8ba24ff7129ee12be9e8de7d1fec7bc98da50d98 (patch)
treef5c16c0d4e79711fc6f93660ba59a3c028902c65
parente75b7e8470124b4208073c0925678e3e30097734 (diff)
qcacld-2.0: Dump stack only once
Add changes to dump stack only once. Also, change thread stuck timer to 10 seconds from 5 seconds (THREAD_STUCK_TIMER_VAL) and probe thread only when thread stuck counter is zero to avoid out of wrapper messages. Remove unnecessary error logs also. Change-Id: I6c2ab331256b190fd0ce67f8fb95ed4d7cb5e61a CRs-Fixed: 1032098
-rw-r--r--CORE/SERVICES/WMA/wma.c4
-rw-r--r--CORE/VOSS/src/vos_packet.c10
-rw-r--r--CORE/VOSS/src/vos_sched.c19
3 files changed, 20 insertions, 13 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index ab165541bf67..3930ec242e8a 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -29840,7 +29840,7 @@ static VOS_STATUS wma_set_beacon_filter(tp_wma_handle wma,
ie_map = (A_UINT32 *)(buf + WMI_TLV_HDR_SIZE);
for (i = 0; i < BCN_FLT_MAX_ELEMS_IE_LIST; i++) {
ie_map[i] = filter_params->ie_map[i];
- WMA_LOGA("beacon filter ie map = %u", ie_map[i]);
+ WMA_LOGD("beacon filter ie map = %u", ie_map[i]);
}
vos_status = wmi_unified_cmd_send(wma->wmi_handle, wmi_buf, len,
@@ -29851,7 +29851,7 @@ static VOS_STATUS wma_set_beacon_filter(tp_wma_handle wma,
wmi_buf_free(wmi_buf);
return VOS_STATUS_E_FAILURE;
}
- WMA_LOGA("added beacon filter = %d", vos_status);
+ WMA_LOGD("added beacon filter = %d", vos_status);
return vos_status;
}
diff --git a/CORE/VOSS/src/vos_packet.c b/CORE/VOSS/src/vos_packet.c
index 3844fbfd0975..9a8179cbdd01 100644
--- a/CORE/VOSS/src/vos_packet.c
+++ b/CORE/VOSS/src/vos_packet.c
@@ -342,10 +342,10 @@ void vos_pkt_trace_buf_dump
unsigned long local_time;
spin_lock_bh(&trace_buffer_lock);
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
"PACKET TRACE DUMP START Current Timestamp %u",
(unsigned int)vos_timer_get_system_time());
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
"ORDER : RTC TIME : EVT");
if (VOS_PKT_TRAC_MAX_TRACE_BUF > trace_buffer_order)
@@ -355,7 +355,7 @@ void vos_pkt_trace_buf_dump
local_time = (u32)(trace_buffer[slot].event_sec_time -
(sys_tz.tz_minuteswest * 60));
rtc_time_to_tm(local_time, &tm);
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
"%5d : [%02d:%02d:%02d.%06lu] : %s",
trace_buffer[slot].order,
tm.tm_hour, tm.tm_min, tm.tm_sec,
@@ -371,7 +371,7 @@ void vos_pkt_trace_buf_dump
local_time = (u32)(trace_buffer[slot].event_msec_time -
(sys_tz.tz_minuteswest * 60));
rtc_time_to_tm(local_time, &tm);
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
"%5d : [%02d:%02d:%02d.%06lu] : %s",
trace_buffer[slot].order,
tm.tm_hour, tm.tm_min, tm.tm_sec,
@@ -380,7 +380,7 @@ void vos_pkt_trace_buf_dump
}
}
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
"PACKET TRACE DUMP END");
spin_unlock_bh(&trace_buffer_lock);
diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c
index 03ce10e62e7e..bfe5b3a1f4fe 100644
--- a/CORE/VOSS/src/vos_sched.c
+++ b/CORE/VOSS/src/vos_sched.c
@@ -76,7 +76,8 @@
#define MAX_SSR_PROTECT_LOG (16)
/* Timer value for detecting thread stuck issues */
-#define THREAD_STUCK_TIMER_VAL 5000 /* 5 seconds */
+#define THREAD_STUCK_TIMER_VAL 10000 /* 10 seconds */
+#define THREAD_STUCK_THRESHOLD 1
static atomic_t ssr_protect_entry_count;
static atomic_t load_unload_protect_count;
@@ -988,12 +989,11 @@ static void vos_wd_detect_thread_stuck(void)
spin_lock_irqsave(&gpVosWatchdogContext->thread_stuck_lock, flags);
- if (gpVosWatchdogContext->mc_thread_stuck_count) {
+ if (gpVosWatchdogContext->mc_thread_stuck_count ==
+ THREAD_STUCK_THRESHOLD) {
spin_unlock_irqrestore(&gpVosWatchdogContext->thread_stuck_lock,
flags);
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s: Thread Stuck!!! MC Count %d", __func__,
- gpVosWatchdogContext->mc_thread_stuck_count);
+ hddLog(LOGE, FL("MC Thread Stuck!!!"));
vos_dump_stack(gpVosSchedContext->McThread);
vos_flush_logs(WLAN_LOG_TYPE_FATAL,
@@ -1004,11 +1004,18 @@ static void vos_wd_detect_thread_stuck(void)
flags);
}
+ if (!gpVosWatchdogContext->mc_thread_stuck_count) {
+ spin_unlock_irqrestore(&gpVosWatchdogContext->thread_stuck_lock,
+ flags);
+ vos_probe_threads();
+ spin_lock_irqsave(&gpVosWatchdogContext->thread_stuck_lock,
+ flags);
+ }
+
/* Increment the thread stuck count for all threads */
gpVosWatchdogContext->mc_thread_stuck_count++;
spin_unlock_irqrestore(&gpVosWatchdogContext->thread_stuck_lock, flags);
- vos_probe_threads();
/* Restart the timer */
if (VOS_STATUS_SUCCESS !=