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
这个提交包含在:
@@ -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
|
||||
}
|
||||
|
||||
/**
|
||||
|
在新工单中引用
屏蔽一个用户