Selaa lähdekoodia

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
Sridhar Selvaraj 7 vuotta sitten
vanhempi
sitoutus
87309211fc
2 muutettua tiedostoa jossa 31 lisäystä ja 0 poistoa
  1. 13 0
      core/wma/inc/wma.h
  2. 18 0
      core/wma/src/wma_dev_if.c

+ 13 - 0
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

+ 18 - 0
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 */