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
This commit is contained in:
Shashikala Prabhu
2018-05-16 10:08:09 +05:30
committed by nshrivas
parent da26399dfa
commit 5f65ac7df0
2 changed files with 115 additions and 0 deletions

View File

@@ -7507,3 +7507,30 @@ QDF_STATUS wmi_extract_cca_stats(wmi_unified_t wmi_handle, void *evt_buf,
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
#endif /* QCA_SUPPORT_CP_STATS */ #endif /* QCA_SUPPORT_CP_STATS */
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
QDF_STATUS
wmi_unified_dfs_send_avg_params_cmd(void *wmi_hdl,
struct dfs_radar_found_params *params)
{
wmi_unified_t wmi_handle = (wmi_unified_t)wmi_hdl;
if (wmi_handle->ops->send_dfs_average_radar_params_cmd)
return wmi_handle->ops->send_dfs_average_radar_params_cmd(
wmi_handle, params);
return QDF_STATUS_E_FAILURE;
}
QDF_STATUS wmi_extract_dfs_status_from_fw(void *wmi_hdl, void *evt_buf,
uint32_t *dfs_status_check)
{
wmi_unified_t wmi_handle = (wmi_unified_t)wmi_hdl;
if (wmi_handle->ops->extract_dfs_status_from_fw)
return wmi_handle->ops->extract_dfs_status_from_fw(wmi_handle,
evt_buf, dfs_status_check);
return QDF_STATUS_E_FAILURE;
}
#endif

View File

@@ -8413,6 +8413,83 @@ QDF_STATUS send_wds_entry_list_cmd_non_tlv(wmi_unified_t wmi_handle)
return QDF_STATUS_SUCCESS; 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 * 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, .extract_swfda_vdev_id = extract_swfda_vdev_id_non_tlv,
#endif /* WLAN_SUPPORT_FILS */ #endif /* WLAN_SUPPORT_FILS */
.wmi_pdev_id_conversion_enable = wmi_non_tlv_pdev_id_conversion_enable, .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_widebw_scan] = WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_support_dma] = wmi_service[wmi_service_support_dma] =
WMI_SERVICE_UNAVAILABLE; 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] = event_ids[wmi_pdev_wds_entry_list_event_id] =
WMI_PDEV_WDS_ENTRY_LIST_EVENTID; WMI_PDEV_WDS_ENTRY_LIST_EVENTID;
event_ids[wmi_host_swfda_event_id] = WMI_HOST_SWFDA_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
} }
/** /**