summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Girigowda <sgirigow@qca.qualcomm.com>2016-05-11 12:38:47 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-05-17 15:01:20 +0530
commit2ff86ba9b909d2f62af2e907354d62b07d08a46b (patch)
treeb33652bf9ba929c7208ea99c451c5dd706b264a0
parent019e8d3578094663aee1ee29a648b80e5956a604 (diff)
qcacld-2.0: Delete SSR timer after isLogpInProgress is reset
In hdd_wlan_re_init(), SSR timer is deleted and isLogpInProgress is set to FALSE but between these two there are NL socket related calls which can sleep under low memory conditions (or etc) because of which timer is deleted but isLogpInProgress is not reset to FALSE. This can potentially fail the south-bound requests for a brief amount of time. Hence it is always better to delete the SSR timer only after isLogpInProgress is reset to FALSE. Change-Id: I699438ff3e0c2f7b81e0bbf81be6f514841e194b CRs-Fixed: 1017011
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c2
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c6
-rw-r--r--CORE/VOSS/src/vos_api.c12
3 files changed, 11 insertions, 9 deletions
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 9b9f21c98123..a82c67d09d76 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -2304,7 +2304,6 @@ VOS_STATUS hdd_wlan_re_init(void *hif_sc)
pHddCtx->hdd_mcastbcast_filter_set = FALSE;
pHddCtx->btCoexModeSet = false;
hdd_register_mcast_bcast_filter(pHddCtx);
- hdd_ssr_timer_del();
wlan_hdd_send_svc_nlink_msg(pHddCtx->radio_index,
WLAN_SVC_FW_CRASHED_IND, NULL, 0);
@@ -2384,5 +2383,6 @@ success:
/* Trigger replay of BTC events */
send_btc_nlink_msg(WLAN_MODULE_DOWN_IND, 0);
pHddCtx->isLogpInProgress = FALSE;
+ hdd_ssr_timer_del();
return VOS_STATUS_SUCCESS;
}
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index bb85b78a4db8..cbb737b242de 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -1147,18 +1147,18 @@ int wlan_hdd_validate_context(hdd_context_t *pHddCtx)
{
if (NULL == pHddCtx || NULL == pHddCtx->cfg_ini) {
- hddLog(LOG1, FL("%pS HDD context is Null"),(void *)_RET_IP_);
+ hddLog(LOGE, FL("%pS HDD context is Null"), (void *)_RET_IP_);
return -ENODEV;
}
if (pHddCtx->isLogpInProgress) {
- hddLog(LOG1, FL("%pS LOGP in Progress. Ignore!!!"),(void *)_RET_IP_);
+ hddLog(LOGE, FL("%pS LOGP in Progress. Ignore!!!"), (void *)_RET_IP_);
return -EAGAIN;
}
if ((pHddCtx->isLoadInProgress) ||
(pHddCtx->isUnloadInProgress)) {
- hddLog(LOG1,
+ hddLog(LOGE,
FL("%pS Unloading/Loading in Progress. Ignore!!!"),
(void *)_RET_IP_);
return -EAGAIN;
diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c
index c9cb7630060d..983e08aaaa06 100644
--- a/CORE/VOSS/src/vos_api.c
+++ b/CORE/VOSS/src/vos_api.c
@@ -2787,16 +2787,18 @@ uint32_t vos_get_log_indicator(void)
vos_context = vos_get_global_context(VOS_MODULE_ID_SYS, NULL);
if (!vos_context) {
- VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "%s: vos context is Invalid", __func__);
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ FL("vos context is Invalid"));
return WLAN_LOG_INDICATOR_UNUSED;
}
if (vos_context->isLoadUnloadInProgress ||
vos_context->isLogpInProgress ||
vos_context->isReInitInProgress) {
- VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "%s: vos context initialization is in progress"
- , __func__);
+ VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
+ FL("vos context initialization is in progress LoadUnload: %u LogP: %u ReInit: %u"),
+ vos_context->isLoadUnloadInProgress,
+ vos_context->isLogpInProgress,
+ vos_context->isReInitInProgress);
return WLAN_LOG_INDICATOR_UNUSED;
}