qcacmn: Add support to send DBS Scan command to firmware
This change adds support to send the DBS Scan command to the firmware. Change-Id: I147855690f09af03a43f85f2e57626d7f73998de CRs-Fixed: 2029402
This commit is contained in:
@@ -534,6 +534,7 @@ enum scan_dwelltime_adaptive_mode {
|
|||||||
* @extraie: list of optional/vendor specific ie's to be added in probe requests
|
* @extraie: list of optional/vendor specific ie's to be added in probe requests
|
||||||
* @htcap: htcap ie
|
* @htcap: htcap ie
|
||||||
* @vhtcap: vhtcap ie
|
* @vhtcap: vhtcap ie
|
||||||
|
* @scan_ctrl_flags_ext: scan control flag extended
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct scan_req_params {
|
struct scan_req_params {
|
||||||
@@ -611,6 +612,7 @@ struct scan_req_params {
|
|||||||
struct element_info extraie;
|
struct element_info extraie;
|
||||||
struct element_info htcap;
|
struct element_info htcap;
|
||||||
struct element_info vhtcap;
|
struct element_info vhtcap;
|
||||||
|
uint32_t scan_ctrl_flags_ext;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1507,4 +1507,6 @@ void wmi_print_mgmt_event_log(wmi_unified_t wmi, uint32_t count,
|
|||||||
|
|
||||||
#endif /* WMI_INTERFACE_EVENT_LOGGING */
|
#endif /* WMI_INTERFACE_EVENT_LOGGING */
|
||||||
|
|
||||||
|
QDF_STATUS wmi_unified_send_dbs_scan_sel_params_cmd(void *wmi_hdl,
|
||||||
|
struct wmi_dbs_scan_sel_params *wmi_param);
|
||||||
#endif /* _WMI_UNIFIED_API_H_ */
|
#endif /* _WMI_UNIFIED_API_H_ */
|
||||||
|
@@ -7285,4 +7285,22 @@ struct tbttoffset_params {
|
|||||||
uint32_t tbttoffset;
|
uint32_t tbttoffset;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define WMI_SCAN_CLIENT_MAX 7
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wmi_dbs_scan_sel_params - DBS scan selection params
|
||||||
|
* @num_clients: Number of scan clients dutycycle
|
||||||
|
* @pdev_id: pdev_id for identifying the MAC
|
||||||
|
* @module_id: scan client module id
|
||||||
|
* @num_dbs_scans: number of DBS scans
|
||||||
|
* @num_non_dbs_scans: number of non-DBS scans
|
||||||
|
*/
|
||||||
|
struct wmi_dbs_scan_sel_params {
|
||||||
|
uint32_t num_clients;
|
||||||
|
uint32_t pdev_id;
|
||||||
|
uint32_t module_id[WMI_SCAN_CLIENT_MAX];
|
||||||
|
uint32_t num_dbs_scans[WMI_SCAN_CLIENT_MAX];
|
||||||
|
uint32_t num_non_dbs_scans[WMI_SCAN_CLIENT_MAX];
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* _WMI_UNIFIED_PARAM_H_ */
|
#endif /* _WMI_UNIFIED_PARAM_H_ */
|
||||||
|
@@ -1258,6 +1258,9 @@ QDF_STATUS (*send_multiple_vdev_restart_req_cmd)(wmi_unified_t wmi_handle,
|
|||||||
QDF_STATUS (*send_adapt_dwelltime_params_cmd)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*send_adapt_dwelltime_params_cmd)(wmi_unified_t wmi_handle,
|
||||||
struct wmi_adaptive_dwelltime_params *dwelltime_params);
|
struct wmi_adaptive_dwelltime_params *dwelltime_params);
|
||||||
|
|
||||||
|
QDF_STATUS (*send_dbs_scan_sel_params_cmd)(wmi_unified_t wmi_handle,
|
||||||
|
struct wmi_dbs_scan_sel_params *dbs_scan_params);
|
||||||
|
|
||||||
QDF_STATUS (*send_fw_test_cmd)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*send_fw_test_cmd)(wmi_unified_t wmi_handle,
|
||||||
struct set_fwtest_params *wmi_fwtest);
|
struct set_fwtest_params *wmi_fwtest);
|
||||||
|
|
||||||
|
@@ -6683,3 +6683,23 @@ QDF_STATUS wmi_unified_set_country_cmd_send(void *wmi_hdl,
|
|||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wmi_unified_send_dbs_scan_sel_params_cmd() - send wmi cmd of
|
||||||
|
* DBS scan selection configuration params
|
||||||
|
* @wma_handle: wma handler
|
||||||
|
* @dbs_scan_params: pointer to wmi_dbs_scan_sel_params
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on success and QDF failure reason code for failure
|
||||||
|
*/
|
||||||
|
QDF_STATUS wmi_unified_send_dbs_scan_sel_params_cmd(void *wmi_hdl,
|
||||||
|
struct wmi_dbs_scan_sel_params *dbs_scan_params)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
|
||||||
|
|
||||||
|
if (wmi_handle->ops->send_dbs_scan_sel_params_cmd)
|
||||||
|
return wmi_handle->ops->
|
||||||
|
send_dbs_scan_sel_params_cmd(wmi_handle,
|
||||||
|
dbs_scan_params);
|
||||||
|
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
@@ -2226,6 +2226,10 @@ static QDF_STATUS send_scan_start_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
cmd->num_ssids = params->num_ssids;
|
cmd->num_ssids = params->num_ssids;
|
||||||
cmd->ie_len = params->extraie.len;
|
cmd->ie_len = params->extraie.len;
|
||||||
cmd->n_probes = params->n_probes;
|
cmd->n_probes = params->n_probes;
|
||||||
|
cmd->scan_ctrl_flags_ext = params->scan_ctrl_flags_ext;
|
||||||
|
|
||||||
|
WMI_LOGD("scan_ctrl_flags_ext = %x", cmd->scan_ctrl_flags_ext);
|
||||||
|
|
||||||
buf_ptr += sizeof(*cmd);
|
buf_ptr += sizeof(*cmd);
|
||||||
tmp_ptr = (uint32_t *) (buf_ptr + WMI_TLV_HDR_SIZE);
|
tmp_ptr = (uint32_t *) (buf_ptr + WMI_TLV_HDR_SIZE);
|
||||||
for (i = 0; i < params->num_chan; ++i)
|
for (i = 0; i < params->num_chan; ++i)
|
||||||
@@ -5766,6 +5770,71 @@ QDF_STATUS send_adapt_dwelltime_params_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* send_dbs_scan_sel_params_cmd_tlv() - send wmi cmd of DBS scan selection
|
||||||
|
* configuration params
|
||||||
|
* @wmi_handle: wmi handler
|
||||||
|
* @dbs_scan_params: pointer to wmi_dbs_scan_sel_params
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on success and QDF failure reason code for failure
|
||||||
|
*/
|
||||||
|
static QDF_STATUS send_dbs_scan_sel_params_cmd_tlv(wmi_unified_t wmi_handle,
|
||||||
|
struct wmi_dbs_scan_sel_params *dbs_scan_params)
|
||||||
|
{
|
||||||
|
wmi_scan_dbs_duty_cycle_fixed_param *dbs_scan_param;
|
||||||
|
wmi_scan_dbs_duty_cycle_tlv_param *cmd;
|
||||||
|
wmi_buf_t buf;
|
||||||
|
uint8_t *buf_ptr;
|
||||||
|
QDF_STATUS err;
|
||||||
|
uint32_t i;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
len = sizeof(*dbs_scan_param);
|
||||||
|
len += WMI_TLV_HDR_SIZE;
|
||||||
|
len += dbs_scan_params->num_clients * sizeof(*cmd);
|
||||||
|
|
||||||
|
buf = wmi_buf_alloc(wmi_handle, len);
|
||||||
|
if (!buf) {
|
||||||
|
WMI_LOGE("%s:Failed to allocate buffer to send cmd", __func__);
|
||||||
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf_ptr = (uint8_t *) wmi_buf_data(buf);
|
||||||
|
dbs_scan_param = (wmi_scan_dbs_duty_cycle_fixed_param *) buf_ptr;
|
||||||
|
WMITLV_SET_HDR(&dbs_scan_param->tlv_header,
|
||||||
|
WMITLV_TAG_STRUC_wmi_scan_dbs_duty_cycle_fixed_param,
|
||||||
|
WMITLV_GET_STRUCT_TLVLEN
|
||||||
|
(wmi_scan_dbs_duty_cycle_fixed_param));
|
||||||
|
|
||||||
|
dbs_scan_param->num_clients = dbs_scan_params->num_clients;
|
||||||
|
dbs_scan_param->pdev_id = dbs_scan_params->pdev_id;
|
||||||
|
buf_ptr += sizeof(*dbs_scan_param);
|
||||||
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
|
||||||
|
(sizeof(*cmd) * dbs_scan_params->num_clients));
|
||||||
|
buf_ptr = buf_ptr + (uint8_t) WMI_TLV_HDR_SIZE;
|
||||||
|
|
||||||
|
for (i = 0; i < dbs_scan_params->num_clients; i++) {
|
||||||
|
cmd = (wmi_scan_dbs_duty_cycle_tlv_param *) buf_ptr;
|
||||||
|
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||||
|
WMITLV_TAG_STRUC_wmi_scan_dbs_duty_cycle_param_tlv,
|
||||||
|
WMITLV_GET_STRUCT_TLVLEN(
|
||||||
|
wmi_scan_dbs_duty_cycle_tlv_param));
|
||||||
|
cmd->module_id = dbs_scan_params->module_id[i];
|
||||||
|
cmd->num_dbs_scans = dbs_scan_params->num_dbs_scans[i];
|
||||||
|
cmd->num_non_dbs_scans = dbs_scan_params->num_non_dbs_scans[i];
|
||||||
|
buf_ptr = buf_ptr + (uint8_t) sizeof(*cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
err = wmi_unified_cmd_send(wmi_handle, buf,
|
||||||
|
len, WMI_SET_SCAN_DBS_DUTY_CYCLE_CMDID);
|
||||||
|
if (QDF_IS_STATUS_ERROR(err)) {
|
||||||
|
WMI_LOGE("Failed to send dbs scan selection cmd err=%d", err);
|
||||||
|
wmi_buf_free(buf);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* send_roam_scan_filter_cmd_tlv() - Filter to be applied while roaming
|
* send_roam_scan_filter_cmd_tlv() - Filter to be applied while roaming
|
||||||
@@ -18066,6 +18135,8 @@ struct wmi_ops tlv_ops = {
|
|||||||
.send_set_active_bpf_mode_cmd = send_set_active_bpf_mode_cmd_tlv,
|
.send_set_active_bpf_mode_cmd = send_set_active_bpf_mode_cmd_tlv,
|
||||||
.send_adapt_dwelltime_params_cmd =
|
.send_adapt_dwelltime_params_cmd =
|
||||||
send_adapt_dwelltime_params_cmd_tlv,
|
send_adapt_dwelltime_params_cmd_tlv,
|
||||||
|
.send_dbs_scan_sel_params_cmd =
|
||||||
|
send_dbs_scan_sel_params_cmd_tlv,
|
||||||
.init_cmd_send = init_cmd_send_tlv,
|
.init_cmd_send = init_cmd_send_tlv,
|
||||||
.send_smart_ant_enable_cmd = send_smart_ant_enable_cmd_tlv,
|
.send_smart_ant_enable_cmd = send_smart_ant_enable_cmd_tlv,
|
||||||
.send_smart_ant_set_rx_ant_cmd = send_smart_ant_set_rx_ant_cmd_tlv,
|
.send_smart_ant_set_rx_ant_cmd = send_smart_ant_set_rx_ant_cmd_tlv,
|
||||||
|
Reference in New Issue
Block a user