diff options
| author | Srinivas Girigowda <sgirigow@qca.qualcomm.com> | 2016-05-11 12:38:47 -0700 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-05-17 15:01:20 +0530 |
| commit | 2ff86ba9b909d2f62af2e907354d62b07d08a46b (patch) | |
| tree | b33652bf9ba929c7208ea99c451c5dd706b264a0 | |
| parent | 019e8d3578094663aee1ee29a648b80e5956a604 (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.c | 2 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 6 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 12 |
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; } |
