From fe426b6fbc4994696ca45ea0023c74c601f851d4 Mon Sep 17 00:00:00 2001 From: Sandeep Puligilla Date: Tue, 7 Feb 2017 18:07:14 -0800 Subject: [PATCH] qcacld-3.0: Don't fill the vdev response wait queue for set channel command In monitor mode, wma_set_channel api is filling the vdev response wait queue before sending the WMI_PDEV_SET_CHANNEL_CMDID command to firmware and expecting it will be dequeued after response from firmware but firmware doesn't send any response to PDEV set channel command which is causing WMA timeout. Don't fill the vdev request wait queue for WMI_PDEV_SET_CHANNEL_CMDID command as firmware doesn't send any response. Change-Id: If1849440143ed671e0261685a53b8a86f4f8e29c CRs-Fixed: 2003707 --- core/wma/src/wma_scan_roam.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 857102fd2987..2a0086c30b30 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -2866,15 +2866,6 @@ void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params) qdf_mem_zero(&req, sizeof(req)); req.vdev_id = vdev_id; - msg = wma_fill_vdev_req(wma, req.vdev_id, WMA_CHNL_SWITCH_REQ, - WMA_TARGET_REQ_TYPE_VDEV_START, params, - WMA_VDEV_START_REQUEST_TIMEOUT); - if (!msg) { - WMA_LOGP("%s: Failed to fill channel switch request for vdev %d", - __func__, req.vdev_id); - status = QDF_STATUS_E_NOMEM; - goto send_resp; - } req.chan = params->channelNumber; req.chan_width = params->ch_width; @@ -2922,6 +2913,16 @@ void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params) /* This is temporary, should be removed */ ol_htt_mon_note_chan(pdev, req.chan); } else { + + msg = wma_fill_vdev_req(wma, req.vdev_id, WMA_CHNL_SWITCH_REQ, + WMA_TARGET_REQ_TYPE_VDEV_START, params, + WMA_VDEV_START_REQUEST_TIMEOUT); + if (!msg) { + WMA_LOGP("%s: Failed to fill channel switch request for vdev %d", + __func__, req.vdev_id); + status = QDF_STATUS_E_NOMEM; + goto send_resp; + } status = wma_vdev_start(wma, &req, wma->interfaces[req.vdev_id].is_channel_switch); if (status != QDF_STATUS_SUCCESS) {