diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h index 13f8c5443df8..9a35c99f59d3 100644 --- a/core/wma/inc/wma.h +++ b/core/wma/inc/wma.h @@ -291,6 +291,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 cc17fce51736..2e314c026555 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -3252,7 +3252,7 @@ static int wma_pdev_set_dual_mode_config_resp_evt_handler(void *handle, */ return QDF_STATUS_E_NULL_VALUE; } - + wma_release_wakelock(&wma->wmi_cmd_rsp_wake_lock); dual_mac_cfg_resp = qdf_mem_malloc(sizeof(*dual_mac_cfg_resp)); if (!dual_mac_cfg_resp) { WMA_LOGE("%s: Memory allocation failed", __func__); @@ -7902,12 +7902,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_wakelock(&wma_handle->wmi_cmd_rsp_wake_lock, + 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_wakelock(&wma_handle->wmi_cmd_rsp_wake_lock); return status; } policy_mgr_update_dbs_req_config(wma_handle->psoc,