summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrunal Soni <ksoni@codeaurora.org>2017-07-03 12:59:40 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-09-14 16:34:48 -0700
commit294fd623ab3ecee337e882519f3ce1a66fef79d7 (patch)
tree59f20a4c7fadd9c4f9c20a5bd6ea87299e606c0c
parent1cee2ad80ce65603e056264659e3b5fe545d2e84 (diff)
qcacld-3.0: Keep wake lock while mac config is getting changed
Host should keep the wake lock from the time it sends WMI_PDEV_SET_MAC_CONFIG_CMDID to FW till it receives the WMI_PDEV_SET_MAC_CONFIG_RESP_EVENTID. This will avoid any fatal crash condition. Change-Id: Ib971e7de1316218f937b6edebecef4d2cbad6717 CRs-Fixed: 2070779
-rw-r--r--core/wma/inc/wma.h1
-rw-r--r--core/wma/src/wma_main.c9
2 files changed, 9 insertions, 1 deletions
diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h
index 712a4a895c77..756b04f5ab6d 100644
--- a/core/wma/inc/wma.h
+++ b/core/wma/inc/wma.h
@@ -273,6 +273,7 @@ enum ds_mode {
#define WMA_VDEV_START_REQUEST_TIMEOUT (6000) /* 6 seconds */
#define WMA_VDEV_STOP_REQUEST_TIMEOUT (6000) /* 6 seconds */
#define WMA_VDEV_HW_MODE_REQUEST_TIMEOUT (5000) /* 5 seconds */
+#define WMA_VDEV_PLCY_MGR_CMD_TIMEOUT (3000) /* 3 seconds */
#define WMA_TGT_INVALID_SNR (0)
diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c
index 676d4f32287c..3fa9d82ac7da 100644
--- a/core/wma/src/wma_main.c
+++ b/core/wma/src/wma_main.c
@@ -3284,7 +3284,7 @@ static int wma_pdev_set_dual_mode_config_resp_evt_handler(void *handle,
*/
return QDF_STATUS_E_NULL_VALUE;
}
-
+ wma_release_wmi_resp_wakelock(wma);
dual_mac_cfg_resp = qdf_mem_malloc(sizeof(*dual_mac_cfg_resp));
if (!dual_mac_cfg_resp) {
WMA_LOGE("%s: Memory allocation failed", __func__);
@@ -8242,12 +8242,19 @@ QDF_STATUS wma_send_pdev_set_dual_mac_config(tp_wma_handle wma_handle,
return QDF_STATUS_E_NULL_VALUE;
}
+ /*
+ * aquire the wake lock here and release it in response handler function
+ * In error condition, release the wake lock right away
+ */
+ wma_acquire_wmi_resp_wakelock(wma_handle,
+ WMA_VDEV_PLCY_MGR_CMD_TIMEOUT);
status = wmi_unified_pdev_set_dual_mac_config_cmd(
wma_handle->wmi_handle,
(struct wmi_dual_mac_config *)msg);
if (QDF_IS_STATUS_ERROR(status)) {
WMA_LOGE("%s: Failed to send WMI_PDEV_SET_DUAL_MAC_CONFIG_CMDID: %d",
__func__, status);
+ wma_release_wmi_resp_wakelock(wma_handle);
return status;
}
wma_handle->dual_mac_cfg.req_scan_config = msg->scan_config;