From 87309211fce26aa36f005e2cbda5e0a7d1904554 Mon Sep 17 00:00:00 2001 From: Sridhar Selvaraj Date: Wed, 28 Jun 2017 17:41:50 +0530 Subject: [PATCH] qcacld-3.0: Pass Probe request deferral params to fw If a OCE AP is found in previous scan cache in fw, fw need to defer sending probe for sometime to check for broadcast probe response from OCE AP. Send the probe deferral time and the time gaps between the two probes from host for STA vdev. Change-Id: I973fc1e2ea43950bd4e2168083644a240a298c22 CRs-Fixed: 2068490 --- core/wma/inc/wma.h | 13 +++++++++++++ core/wma/src/wma_dev_if.c | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h index 2d8c114ef1a7..e1b8e469a54c 100644 --- a/core/wma/inc/wma.h +++ b/core/wma/inc/wma.h @@ -490,6 +490,19 @@ enum ds_mode { #define WMA_SCAN_END_EVENT (WMI_SCAN_EVENT_COMPLETED | \ WMI_SCAN_EVENT_DEQUEUED | \ WMI_SCAN_EVENT_START_FAILED) +/* + * PROBE_REQ_TX_DELAY + * param to specify probe request Tx delay for scans triggered on this VDEV + */ +#define PROBE_REQ_TX_DELAY 10 + +/* PROBE_REQ_TX_TIME_GAP + * param to specify the time gap between each set of probe request transmission. + * The number of probe requests in each set depends on the ssid_list and, + * bssid_list in the scan request. This parameter will get applied only, + * for the scans triggered on this VDEV. + */ +#define PROBE_REQ_TX_TIME_GAP 20 /** * struct probeTime_dwellTime - probe time, dwell time map diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index a63c377f15f6..60f6d4beef64 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -2159,6 +2159,24 @@ struct cdp_vdev *wma_vdev_attach(tp_wma_handle wma_handle, self_sta_req->fils_max_chan_guard_time); if (QDF_IS_STATUS_ERROR(ret)) WMA_LOGE("Failed to set WMI_VDEV_PARAM_FILS_MAX_CHANNEL_GUARD_TIME"); + + /* Pass down the Probe Request tx delay(in ms) to FW */ + ret = wma_vdev_set_param( + wma_handle->wmi_handle, + self_sta_req->session_id, + WMI_VDEV_PARAM_PROBE_DELAY, + PROBE_REQ_TX_DELAY); + if (QDF_IS_STATUS_ERROR(ret)) + WMA_LOGE("Failed to set WMI_VDEV_PARAM_PROBE_DELAY"); + + /* Pass down the probe request tx time gap(in ms) to FW */ + ret = wma_vdev_set_param( + wma_handle->wmi_handle, + self_sta_req->session_id, + WMI_VDEV_PARAM_REPEAT_PROBE_TIME, + PROBE_REQ_TX_TIME_GAP); + if (QDF_IS_STATUS_ERROR(ret)) + WMA_LOGE("Failed to set WMI_VDEV_PARAM_REPEAT_PROBE_TIME"); } /* Initialize BMISS parameters */