qcacld-3.0: Refine the extscan start BSSID hotlist logic
Make the following updates to the extscan start BSSID hotlist logic:
1) Exclusively use the Unified WMI data structures.
2) Use the new wmi_unified_extscan_start_hotlist_monitor_cmd() API.
3) Update the HDD<=>SME interface to enforce the contract that SME
must not make any assumptions about the buffers provided by HDD.
Change-Id: I4d9f982177bc61a751ba0e7437fe55482dfd2723
CRs-Fixed: 2291946
diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c
index 21decf7..0c1b4f7 100644
--- a/core/wma/src/wma_main.c
+++ b/core/wma/src/wma_main.c
@@ -8149,8 +8149,7 @@
qdf_mem_free(msg->bodyptr);
break;
case WMA_EXTSCAN_SET_BSSID_HOTLIST_REQ:
- wma_extscan_start_hotlist_monitor(wma_handle,
- (tSirExtScanSetBssidHotListReqParams *) msg->bodyptr);
+ wma_extscan_start_hotlist_monitor(wma_handle, msg->bodyptr);
qdf_mem_free(msg->bodyptr);
break;
case WMA_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c
index 99dab76..f988230 100644
--- a/core/wma/src/wma_scan_roam.c
+++ b/core/wma/src/wma_scan_roam.c
@@ -4628,56 +4628,22 @@
return num_entries;
}
-/**
- * wma_get_buf_extscan_hotlist_cmd() - prepare hotlist command
- * @handle: wma handle
- * @photlist: hotlist command params
- * @buf_len: buffer length
- *
- * This function fills individual elements for hotlist request and
- * TLV for bssid entries
- *
- * Return: QDF Status.
- */
-QDF_STATUS wma_get_buf_extscan_hotlist_cmd(tp_wma_handle wma_handle,
- tSirExtScanSetBssidHotListReqParams *photlist,
- int *buf_len)
-{
- return wmi_unified_get_buf_extscan_hotlist_cmd(wma_handle->wmi_handle,
- (struct ext_scan_setbssid_hotlist_params *)photlist,
- buf_len);
-}
-
-/**
- * wma_extscan_start_hotlist_monitor() - start hotlist monitor
- * @wma: wma handle
- * @photlist: hotlist request params
- *
- * This function configures hotlist monitor in fw.
- *
- * Return: QDF status
- */
QDF_STATUS wma_extscan_start_hotlist_monitor(tp_wma_handle wma,
- tSirExtScanSetBssidHotListReqParams *photlist)
+ struct extscan_bssid_hotlist_set_params *params)
{
- QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
- int len;
-
if (!wma || !wma->wmi_handle) {
WMA_LOGE("%s: WMA is closed, can not issue hotlist cmd",
__func__);
return QDF_STATUS_E_INVAL;
}
- /* Fill individual elements for hotlist request and
- * TLV for bssid entries
- */
- qdf_status = wma_get_buf_extscan_hotlist_cmd(wma, photlist, &len);
- if (qdf_status != QDF_STATUS_SUCCESS) {
- WMA_LOGE("%s: Failed to get buffer for hotlist scan cmd",
- __func__);
- return QDF_STATUS_E_FAILURE;
+
+ if (!params) {
+ WMA_LOGE("%s: Invalid params", __func__);
+ return QDF_STATUS_E_INVAL;
}
- return QDF_STATUS_SUCCESS;
+
+ return wmi_unified_extscan_start_hotlist_monitor_cmd(wma->wmi_handle,
+ params);
}
/**