diff options
| author | Krunal Soni <ksoni@codeaurora.org> | 2017-07-03 12:59:40 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-09-14 16:34:48 -0700 |
| commit | 294fd623ab3ecee337e882519f3ce1a66fef79d7 (patch) | |
| tree | 59f20a4c7fadd9c4f9c20a5bd6ea87299e606c0c | |
| parent | 1cee2ad80ce65603e056264659e3b5fe545d2e84 (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.h | 1 | ||||
| -rw-r--r-- | core/wma/src/wma_main.c | 9 |
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; |
