summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandeep Puligilla <spuligil@codeaurora.org>2017-02-07 18:07:14 -0800
committerqcabuildsw <qcabuildsw@localhost>2017-02-08 02:50:43 -0800
commit1f36781d631dcc5a45dc0041e2eef5edaad1fd94 (patch)
tree19a56b99174bcdbbc68e4f1e4c22b5857b9061ce
parentd37cf66b721485a86419e9d02703a79126ab70ef (diff)
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
-rw-r--r--core/wma/src/wma_scan_roam.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c
index fd496c91e244..4b4e66a1be77 100644
--- a/core/wma/src/wma_scan_roam.c
+++ b/core/wma/src/wma_scan_roam.c
@@ -2916,15 +2916,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;
@@ -2971,6 +2962,16 @@ void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params)
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) {