qcacmn: Restore WMI_DFS_RADAR_EVENTID for Rome FW

Currently WMI handler for WMI_PHYERR_EVENTID is used to handle DFS and
spectral scan phy errors; but Rome FW still uses WMI_PHYERR_EVENTID
and WMI_DFS_RADAR_EVENTID and does not have spectral scan phy errors.

Restore WMI_PHYERR_EVENTID and WMI_DFS_RADAR_EVENTID as Rome FW
requirement.

Change-Id: I23ca4ff6c9be0ba6a0f21f0e0ef9161b1942f629
CRs-Fixed: 2160431
This commit is contained in:
bings
2017-12-18 16:56:53 +08:00
committed by snandini
parent 0344d1c399
commit ca90616ffa
4 changed files with 87 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2017 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -54,4 +54,19 @@ QDF_STATUS wmi_extract_dfs_radar_detection_event(void *wmi_hdl,
struct radar_found_info *radar_found, struct radar_found_info *radar_found,
uint32_t len); uint32_t len);
#ifdef QCA_MCL_DFS_SUPPORT
/**
* wmi_extract_wlan_radar_event_info() - function to handle radar pulse event.
* @wmi_hdl: wmi handle
* @evt_buf: event buffer
* @wlan_radar_event: pointer to radar event info structure
* @len: length of buffer
*
* Return: QDF_STATUS
*/
QDF_STATUS wmi_extract_wlan_radar_event_info(void *wmi_hdl,
uint8_t *evt_buf,
struct radar_event_info *wlan_radar_event,
uint32_t len);
#endif
#endif /* _WMI_UNIFIED_DFS_API_H_ */ #endif /* _WMI_UNIFIED_DFS_API_H_ */

View File

@@ -1462,6 +1462,10 @@ QDF_STATUS (*extract_dfs_radar_detection_event)(wmi_unified_t wmi_handle,
uint8_t *evt_buf, uint8_t *evt_buf,
struct radar_found_info *radar_found, struct radar_found_info *radar_found,
uint32_t len); uint32_t len);
QDF_STATUS (*extract_wlan_radar_event_info)(wmi_unified_t wmi_handle,
uint8_t *evt_buf,
struct radar_event_info *wlan_radar_event,
uint32_t len);
#endif #endif
QDF_STATUS (*send_set_country_cmd)(wmi_unified_t wmi_handle, QDF_STATUS (*send_set_country_cmd)(wmi_unified_t wmi_handle,
struct set_country *param); struct set_country *param);

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2017 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
* *
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
@@ -54,3 +54,19 @@ QDF_STATUS wmi_extract_dfs_radar_detection_event(void *wmi_hdl,
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
#ifdef QCA_MCL_DFS_SUPPORT
QDF_STATUS wmi_extract_wlan_radar_event_info(void *wmi_hdl,
uint8_t *evt_buf,
struct radar_event_info *wlan_radar_event,
uint32_t len)
{
struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
if (wmi_handle->ops->extract_wlan_radar_event_info)
return wmi_handle->ops->extract_wlan_radar_event_info(
wmi_handle, evt_buf, wlan_radar_event, len);
return QDF_STATUS_E_FAILURE;
}
#endif

View File

@@ -20637,6 +20637,55 @@ static QDF_STATUS extract_dfs_radar_detection_event_tlv(
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
#ifdef QCA_MCL_DFS_SUPPORT
/**
* extract_wlan_radar_event_info_tlv() - extract radar pulse event
* @wmi_handle: wma handle
* @evt_buf: event buffer
* @wlan_radar_event: Pointer to struct radar_event_info
* @len: length of buffer
*
* Return: QDF_STATUS
*/
static QDF_STATUS extract_wlan_radar_event_info_tlv(
wmi_unified_t wmi_handle,
uint8_t *evt_buf,
struct radar_event_info *wlan_radar_event,
uint32_t len)
{
WMI_DFS_RADAR_EVENTID_param_tlvs *param_tlv;
wmi_dfs_radar_event_fixed_param *radar_event;
param_tlv = (WMI_DFS_RADAR_EVENTID_param_tlvs *)evt_buf;
if (!param_tlv) {
WMI_LOGE("invalid wlan radar event buf");
return QDF_STATUS_E_FAILURE;
}
radar_event = param_tlv->fixed_param;
wlan_radar_event->pulse_is_chirp = radar_event->pulse_is_chirp;
wlan_radar_event->pulse_center_freq = radar_event->pulse_center_freq;
wlan_radar_event->pulse_duration = radar_event->pulse_duration;
wlan_radar_event->rssi = radar_event->rssi;
wlan_radar_event->pulse_detect_ts = radar_event->pulse_detect_ts;
wlan_radar_event->upload_fullts_high = radar_event->upload_fullts_high;
wlan_radar_event->upload_fullts_low = radar_event->upload_fullts_low;
wlan_radar_event->peak_sidx = radar_event->peak_sidx;
wlan_radar_event->pdev_id = radar_event->pdev_id;
return QDF_STATUS_SUCCESS;
}
#else
static QDF_STATUS extract_wlan_radar_event_info_tlv(
wmi_unified_t wmi_handle,
uint8_t *evt_buf,
struct radar_event_info *wlan_radar_event,
uint32_t len)
{
return QDF_STATUS_SUCCESS;
}
#endif
#endif #endif
/** /**
@@ -21875,6 +21924,7 @@ struct wmi_ops tlv_ops = {
.extract_dfs_cac_complete_event = extract_dfs_cac_complete_event_tlv, .extract_dfs_cac_complete_event = extract_dfs_cac_complete_event_tlv,
.extract_dfs_radar_detection_event = .extract_dfs_radar_detection_event =
extract_dfs_radar_detection_event_tlv, extract_dfs_radar_detection_event_tlv,
.extract_wlan_radar_event_info = extract_wlan_radar_event_info_tlv,
#endif #endif
.convert_pdev_id_host_to_target = .convert_pdev_id_host_to_target =
convert_host_pdev_id_to_target_pdev_id_legacy, convert_host_pdev_id_to_target_pdev_id_legacy,