qcacmn: Add WMI changes for host DFS confirmation check

Send average radar parameters to FW.
Extract host dfs spoof check status from FW.

Change-Id: I70c4e5aad0fe1eda55da37abd20cc6d70728edba
CRs-Fixed: 2211883
这个提交包含在:
Shashikala Prabhu
2018-05-16 10:08:09 +05:30
提交者 nshrivas
父节点 da26399dfa
当前提交 5f65ac7df0
修改 2 个文件,包含 115 行新增0 行删除

查看文件

@@ -8413,6 +8413,83 @@ QDF_STATUS send_wds_entry_list_cmd_non_tlv(wmi_unified_t wmi_handle)
return QDF_STATUS_SUCCESS;
}
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
/**
* send_dfs_average_radar_params_cmd_non_tlv() - send average radar params to
* fw.
* @wmi_handle: wmi handle
* @params: pointer to dfs_radar_found_params.
*
* Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
*/
static QDF_STATUS send_dfs_average_radar_params_cmd_non_tlv(
wmi_unified_t wmi_handle,
struct dfs_radar_found_params *params)
{
wmi_host_dfs_radar_found_cmd *cmd;
wmi_buf_t buf;
int len = sizeof(wmi_host_dfs_radar_found_cmd);
buf = wmi_buf_alloc(wmi_handle, len);
if (!buf) {
WMI_LOGD("%s:wmi_buf_alloc failed\n", __func__);
return QDF_STATUS_E_FAILURE;
}
cmd = (wmi_host_dfs_radar_found_cmd *)wmi_buf_data(buf);
/* Fill the WMI structure (PRI, duration, SIDX) from
* the radar_found_param structure and then send
* out.
*/
cmd->pri_min_value = params->pri_min;
cmd->pri_max_value = params->pri_max;
cmd->duration_min_value = params->duration_min;
cmd->duration_max_value = params->duration_max;
cmd->sidx_min_value = params->sidx_min;
cmd->sidx_max_value = params->sidx_max;
if (wmi_unified_cmd_send(wmi_handle, buf, len,
WMI_HOST_DFS_RADAR_FOUND_CMDID)) {
WMI_LOGD("%s:Failed to send WMI command\n", __func__);
wmi_buf_free(buf);
return QDF_STATUS_E_FAILURE;
}
return QDF_STATUS_SUCCESS;
}
/**
* extract_dfs_status_from_fw_non_tlv() - extract the result of host dfs check
* from fw
* @wmi_handle: wmi handle
* @evt_buf: pointer to event buffer
* @fw_dfs_status_code: pointer to the status received from fw.
*
* Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
*/
static QDF_STATUS
extract_dfs_status_from_fw_non_tlv(wmi_unified_t wmi_handle,
void *evt_buf,
uint32_t *fw_dfs_status_code)
{
wmi_host_dfs_status_check_event *ev =
(wmi_host_dfs_status_check_event *)evt_buf;
if ((ev->status == WMI_HOST_DFS_CHECK_PASSED) ||
(ev->status == WMI_HOST_DFS_CHECK_FAILED) ||
(ev->status == WMI_HOST_DFS_CHECK_HW_RADAR)) {
*fw_dfs_status_code = ev->status;
return QDF_STATUS_SUCCESS;
}
WMI_LOGD("%s..Invalid status code : %d received\n", __func__,
ev->status);
return QDF_STATUS_E_FAILURE;
}
#endif
/**
* wmi_non_tlv_pdev_id_conversion_enable() - Enable pdev_id conversion
@@ -8659,6 +8736,11 @@ struct wmi_ops non_tlv_ops = {
.extract_swfda_vdev_id = extract_swfda_vdev_id_non_tlv,
#endif /* WLAN_SUPPORT_FILS */
.wmi_pdev_id_conversion_enable = wmi_non_tlv_pdev_id_conversion_enable,
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
.send_dfs_average_radar_params_cmd =
send_dfs_average_radar_params_cmd_non_tlv,
.extract_dfs_status_from_fw = extract_dfs_status_from_fw_non_tlv,
#endif
};
/**
@@ -8852,6 +8934,8 @@ static void populate_non_tlv_service(uint32_t *wmi_service)
wmi_service[wmi_service_widebw_scan] = WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_support_dma] =
WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_host_dfs_check_support] =
WMI_SERVICE_HOST_DFS_CHECK_SUPPORT;
}
/**
@@ -8951,6 +9035,10 @@ static void populate_non_tlv_events_id(uint32_t *event_ids)
event_ids[wmi_pdev_wds_entry_list_event_id] =
WMI_PDEV_WDS_ENTRY_LIST_EVENTID;
event_ids[wmi_host_swfda_event_id] = WMI_HOST_SWFDA_EVENTID;
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
event_ids[wmi_host_dfs_status_check_event_id] =
WMI_HOST_DFS_STATUS_CHECK_EVENTID;
#endif
}
/**