qcacmn: Add revised extscan start hotlist monitor API

There is an existing WMI command which is used to start the extscan
hotlist monitor, wmi_unified_get_buf_extscan_hotlist_cmd(), but this
API has multiple issues:
1) The "get_buf" in the name implies it retrieves something, but it
   doesn't.
2) The full name is not a "mirror" of the companion function that
   stops the monitor, wmi_unified_extscan_stop_hotlist_monitor_cmd().
3) The current function has an "int *buf_len" parameter that is unused.

To address these issue introduce a new function with "mirror" naming,
wmi_unified_extscan_start_hotlist_monitor_cmd(), which has an
appropriate parameter list.

It is expected that all clients of the existing API will be moved to
the new API, at which point the existing API can be removed.

Change-Id: Ie705f2462c7d5befa691f1ab57293e55ab68e3e2
CRs-Fixed: 2289368
Этот коммит содержится в:
Jeff Johnson
2018-07-13 19:10:50 -07:00
коммит произвёл nshrivas
родитель 427357d954
Коммит 7fc4ef592c
5 изменённых файлов: 64 добавлений и 16 удалений

Просмотреть файл

@@ -44,6 +44,18 @@ QDF_STATUS wmi_unified_extscan_start_change_monitor_cmd(void *wmi_hdl,
QDF_STATUS wmi_unified_extscan_stop_hotlist_monitor_cmd(void *wmi_hdl, QDF_STATUS wmi_unified_extscan_stop_hotlist_monitor_cmd(void *wmi_hdl,
struct extscan_bssid_hotlist_reset_params *photlist_reset); struct extscan_bssid_hotlist_reset_params *photlist_reset);
/**
* wmi_unified_extscan_start_hotlist_monitor_cmd() - start hotlist monitor
* @wmi_hdl: wmi handle
* @params: hotlist params
*
* This function configures hotlist monitor to start in fw.
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS wmi_unified_extscan_start_hotlist_monitor_cmd(void *wmi_hdl,
struct extscan_bssid_hotlist_set_params *params);
QDF_STATUS wmi_unified_stop_extscan_cmd(void *wmi_hdl, QDF_STATUS wmi_unified_stop_extscan_cmd(void *wmi_hdl,
struct extscan_stop_req_params *pstopcmd); struct extscan_stop_req_params *pstopcmd);

Просмотреть файл

@@ -3566,20 +3566,22 @@ struct wmi_roam_invoke_cmd {
}; };
/** /**
* struct ext_scan_setbssid_hotlist_params - set hotlist request * struct extscan_bssid_hotlist_set_params - set hotlist request
* @request_id: request_id * @request_id: request_id
* @vdev_id: vdev id * @vdev_id: vdev id
* @lost_ap_sample_size: number of samples to confirm AP loss * @lost_ap_sample_size: number of samples to confirm AP loss
* @num_ap: Number of hotlist APs * @num_ap: Number of hotlist APs
* @ap: hotlist APs * @ap: hotlist APs
*/ */
struct ext_scan_setbssid_hotlist_params { struct extscan_bssid_hotlist_set_params {
uint32_t request_id; uint32_t request_id;
uint8_t vdev_id; uint8_t vdev_id;
uint32_t lost_ap_sample_size; uint32_t lost_ap_sample_size;
uint32_t num_ap; uint32_t num_ap;
struct ap_threshold_params ap[WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS]; struct ap_threshold_params ap[WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS];
}; };
/* legacy naming */
#define ext_scan_setbssid_hotlist_params extscan_bssid_hotlist_set_params
/** /**
* struct host_mem_req - Host memory request paramseters request by target * struct host_mem_req - Host memory request paramseters request by target

Просмотреть файл

@@ -488,6 +488,9 @@ QDF_STATUS (*send_extscan_start_change_monitor_cmd)(wmi_unified_t wmi_handle,
QDF_STATUS (*send_extscan_stop_hotlist_monitor_cmd)(wmi_unified_t wmi_handle, QDF_STATUS (*send_extscan_stop_hotlist_monitor_cmd)(wmi_unified_t wmi_handle,
struct extscan_bssid_hotlist_reset_params *photlist_reset); struct extscan_bssid_hotlist_reset_params *photlist_reset);
QDF_STATUS (*send_extscan_start_hotlist_monitor_cmd)(wmi_unified_t wmi_handle,
struct extscan_bssid_hotlist_set_params *params);
QDF_STATUS (*send_stop_extscan_cmd)(wmi_unified_t wmi_handle, QDF_STATUS (*send_stop_extscan_cmd)(wmi_unified_t wmi_handle,
struct extscan_stop_req_params *pstopcmd); struct extscan_stop_req_params *pstopcmd);

Просмотреть файл

@@ -192,6 +192,18 @@ QDF_STATUS wmi_unified_extscan_stop_hotlist_monitor_cmd(void *wmi_hdl,
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
QDF_STATUS wmi_unified_extscan_start_hotlist_monitor_cmd(void *wmi_hdl,
struct extscan_bssid_hotlist_set_params *params)
{
wmi_unified_t wmi_handle = wmi_hdl;
if (wmi_handle->ops->send_extscan_start_hotlist_monitor_cmd)
return wmi_handle->ops->send_extscan_start_hotlist_monitor_cmd(wmi_handle,
params);
return QDF_STATUS_E_FAILURE;
}
/** /**
* wmi_unified_stop_extscan_cmd() - stop extscan command to fw. * wmi_unified_stop_extscan_cmd() - stop extscan command to fw.
* @wmi_hdl: wmi handle * @wmi_hdl: wmi handle

Просмотреть файл

@@ -964,24 +964,21 @@ static inline int wmi_get_hotlist_entries_per_page
} }
/** /**
* send_get_buf_extscan_hotlist_cmd_tlv() - prepare hotlist command * send_extscan_start_hotlist_monitor_cmd_tlv() - start hotlist monitor
* @wmi_handle: wmi handle * @wmi_handle: wmi handle
* @photlist: hotlist command params * @params: hotlist params
* @buf_len: buffer length
* *
* This function fills individual elements for hotlist request and * This function configures hotlist monitor to start in fw.
* TLV for bssid entries
* *
* Return: CDF Status. * Return: QDF status
*/ */
static QDF_STATUS send_get_buf_extscan_hotlist_cmd_tlv static QDF_STATUS send_extscan_start_hotlist_monitor_cmd_tlv
(wmi_unified_t wmi_handle, (wmi_unified_t wmi_handle,
struct ext_scan_setbssid_hotlist_params *photlist, struct extscan_bssid_hotlist_set_params *params)
int *buf_len)
{ {
wmi_extscan_configure_hotlist_monitor_cmd_fixed_param *cmd = NULL; wmi_extscan_configure_hotlist_monitor_cmd_fixed_param *cmd = NULL;
wmi_extscan_hotlist_entry *dest_hotlist; wmi_extscan_hotlist_entry *dest_hotlist;
struct ap_threshold_params *src_ap = photlist->ap; struct ap_threshold_params *src_ap = params->ap;
wmi_buf_t buf; wmi_buf_t buf;
uint8_t *buf_ptr; uint8_t *buf_ptr;
@@ -989,7 +986,7 @@ static QDF_STATUS send_get_buf_extscan_hotlist_cmd_tlv
int cmd_len = 0; int cmd_len = 0;
int num_entries; int num_entries;
int min_entries = 0; int min_entries = 0;
uint32_t numap = photlist->num_ap; uint32_t numap = params->num_ap;
int len = sizeof(*cmd); int len = sizeof(*cmd);
len += WMI_TLV_HDR_SIZE; len += WMI_TLV_HDR_SIZE;
@@ -1028,12 +1025,12 @@ static QDF_STATUS send_get_buf_extscan_hotlist_cmd_tlv
/* Multiple requests are sent until the num_entries_in_page /* Multiple requests are sent until the num_entries_in_page
* matches the total_entries * matches the total_entries
*/ */
cmd->request_id = photlist->request_id; cmd->request_id = params->request_id;
cmd->vdev_id = photlist->vdev_id; cmd->vdev_id = params->vdev_id;
cmd->total_entries = numap; cmd->total_entries = numap;
cmd->mode = 1; cmd->mode = 1;
cmd->num_entries_in_page = min_entries; cmd->num_entries_in_page = min_entries;
cmd->lost_ap_scan_count = photlist->lost_ap_sample_size; cmd->lost_ap_scan_count = params->lost_ap_sample_size;
cmd->first_entry_index = index; cmd->first_entry_index = index;
WMI_LOGD("%s: vdev id:%d total_entries: %d num_entries: %d lost_ap_sample_size: %d", WMI_LOGD("%s: vdev id:%d total_entries: %d num_entries: %d lost_ap_sample_size: %d",
@@ -1087,6 +1084,26 @@ static QDF_STATUS send_get_buf_extscan_hotlist_cmd_tlv
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
/**
* send_get_buf_extscan_hotlist_cmd_tlv() - prepare hotlist command
* @wmi_handle: wmi handle
* @photlist: hotlist command params
* @buf_len: buffer length
*
* This function fills individual elements for hotlist request and
* TLV for bssid entries
*
* Return: CDF Status.
*/
static QDF_STATUS send_get_buf_extscan_hotlist_cmd_tlv
(wmi_unified_t wmi_handle,
struct ext_scan_setbssid_hotlist_params *photlist,
int *buf_len)
{
return send_extscan_start_hotlist_monitor_cmd_tlv(wmi_handle,
photlist);
}
void wmi_extscan_attach_tlv(wmi_unified_t wmi_handle) void wmi_extscan_attach_tlv(wmi_unified_t wmi_handle)
{ {
struct wmi_ops *ops = wmi_handle->ops; struct wmi_ops *ops = wmi_handle->ops;
@@ -1106,6 +1123,8 @@ void wmi_extscan_attach_tlv(wmi_unified_t wmi_handle)
send_extscan_start_change_monitor_cmd_tlv; send_extscan_start_change_monitor_cmd_tlv;
ops->send_extscan_stop_hotlist_monitor_cmd = ops->send_extscan_stop_hotlist_monitor_cmd =
send_extscan_stop_hotlist_monitor_cmd_tlv; send_extscan_stop_hotlist_monitor_cmd_tlv;
ops->send_extscan_start_hotlist_monitor_cmd =
send_extscan_start_hotlist_monitor_cmd_tlv;
ops->send_stop_extscan_cmd = send_stop_extscan_cmd_tlv; ops->send_stop_extscan_cmd = send_stop_extscan_cmd_tlv;
ops->send_start_extscan_cmd = send_start_extscan_cmd_tlv; ops->send_start_extscan_cmd = send_start_extscan_cmd_tlv;
ops->send_get_buf_extscan_hotlist_cmd = ops->send_get_buf_extscan_hotlist_cmd =