qcacmn: Add support to extract FFT size capabilities
WMI_SPECTRAL_CAPABILITIES_EVENTID event will be sent by the FW to indicate different capabilities of the Spectral HW. Add support to extract the FFT size capabilities from this event. Change-Id: I9640fa51e4249b9d1c2d9d3ac5da7f1d56c9d006 CRs-Fixed: 3098880
This commit is contained in:

committato da
Madan Koyyalamudi

parent
003a476648
commit
a739a0cabb
@@ -7101,6 +7101,45 @@ target_if_wmi_extract_spectral_scan_bw_caps(
|
||||
return psoc_spectral->wmi_ops.extract_spectral_scan_bw_caps(
|
||||
wmi_handle, evt_buf, bw_caps);
|
||||
}
|
||||
|
||||
/**
|
||||
* target_if_wmi_extract_spectral_fft_size_caps() - Wrapper function to
|
||||
* extract fft size capabilities from Spectral capabilities WMI event
|
||||
* @psoc: Pointer to psoc object
|
||||
* @evt_buf: Event buffer
|
||||
* @fft_size_caps: Data structure to be filled by this API after extraction
|
||||
*
|
||||
* Return: QDF_STATUS of operation
|
||||
*/
|
||||
QDF_STATUS
|
||||
target_if_wmi_extract_spectral_fft_size_caps(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *evt_buf,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps)
|
||||
{
|
||||
struct target_if_psoc_spectral *psoc_spectral;
|
||||
wmi_unified_t wmi_handle;
|
||||
|
||||
if (!psoc) {
|
||||
spectral_err("psoc is null");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
wmi_handle = GET_WMI_HDL_FROM_PSOC(psoc);
|
||||
if (!wmi_handle) {
|
||||
spectral_err("WMI handle is null");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
psoc_spectral = get_target_if_spectral_handle_from_psoc(psoc);
|
||||
if (!psoc_spectral) {
|
||||
spectral_err("spectral object is null");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return psoc_spectral->wmi_ops.extract_spectral_fft_size_caps(
|
||||
wmi_handle, evt_buf, fft_size_caps);
|
||||
}
|
||||
#else
|
||||
/**
|
||||
* target_if_spectral_wmi_unified_register_event_handler() - Wrapper function to
|
||||
@@ -7375,6 +7414,24 @@ target_if_wmi_extract_spectral_scan_bw_caps(
|
||||
|
||||
return wmi_extract_spectral_scan_bw_caps(wmi_handle, evt_buf, bw_caps);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
target_if_wmi_extract_spectral_fft_size_caps(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *evt_buf,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps)
|
||||
{
|
||||
wmi_unified_t wmi_handle;
|
||||
|
||||
wmi_handle = GET_WMI_HDL_FROM_PSOC(psoc);
|
||||
if (!wmi_handle) {
|
||||
spectral_err("WMI handle is null");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
return wmi_extract_spectral_fft_size_caps(wmi_handle, evt_buf,
|
||||
fft_size_caps);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -946,6 +946,8 @@ struct vdev_spectral_enable_params;
|
||||
* capabilities event
|
||||
* @extract_spectral_scan_bw_caps: Extract bandwidth capabilities from Spectral
|
||||
* capabilities event
|
||||
* @extract_spectral_fft_size_caps: Extract fft size capabilities from Spectral
|
||||
* capabilities event
|
||||
*/
|
||||
struct spectral_wmi_ops {
|
||||
QDF_STATUS (*wmi_spectral_configure_cmd_send)(
|
||||
@@ -985,6 +987,9 @@ struct spectral_wmi_ops {
|
||||
QDF_STATUS (*extract_spectral_scan_bw_caps)(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_scan_bw_capabilities *bw_caps);
|
||||
QDF_STATUS (*extract_spectral_fft_size_caps)(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -3021,4 +3026,20 @@ target_if_wmi_extract_spectral_scan_bw_caps(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *evt_buf,
|
||||
struct spectral_scan_bw_capabilities *bw_caps);
|
||||
|
||||
struct spectral_fft_size_capabilities;
|
||||
/**
|
||||
* target_if_wmi_extract_spectral_fft_size_caps() - Wrapper function to
|
||||
* extract fft size capabilities from Spectral capabilities WMI event
|
||||
* @psoc: Pointer to psoc object
|
||||
* @evt_buf: Event buffer
|
||||
* @fft_size_caps: Data structure to be filled by this API after extraction
|
||||
*
|
||||
* Return: QDF_STATUS of operation
|
||||
*/
|
||||
QDF_STATUS
|
||||
target_if_wmi_extract_spectral_fft_size_caps(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *evt_buf,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps);
|
||||
#endif /* _TARGET_IF_SPECTRAL_H_ */
|
||||
|
@@ -2338,6 +2338,19 @@ QDF_STATUS wmi_extract_spectral_caps_fixed_param(
|
||||
QDF_STATUS wmi_extract_spectral_scan_bw_caps(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_scan_bw_capabilities *bw_caps);
|
||||
|
||||
/**
|
||||
* wmi_extract_spectral_fft_size_caps() - Extract FFT size caps from
|
||||
* Spectral capabilities WMI event
|
||||
* @wmi_handle: handle to WMI.
|
||||
* @event: Event buffer
|
||||
* @fft_size_caps: Data structure to be populated by this API after extraction
|
||||
*
|
||||
* Return: QDF_STATUS of operation
|
||||
*/
|
||||
QDF_STATUS wmi_extract_spectral_fft_size_caps(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps);
|
||||
#endif /* WLAN_CONV_SPECTRAL_ENABLE */
|
||||
|
||||
#if defined(WLAN_SUPPORT_FILS) || defined(CONFIG_BAND_6GHZ)
|
||||
|
@@ -3133,6 +3133,19 @@ struct spectral_scan_bw_capabilities {
|
||||
enum phy_ch_width operating_bw;
|
||||
uint32_t supported_bws;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct spectral_fft_size_capabilities - Spectral scan FFT size caps
|
||||
* that are extracted from Spectral capabilities WMI event
|
||||
* @pdev_id: pdev ID
|
||||
* @sscan_bw: Spectral scan bandwidth
|
||||
* @sscan_bw: Supported FFT sizes bitmap for given @pdev_id and @sscan_bw
|
||||
*/
|
||||
struct spectral_fft_size_capabilities {
|
||||
uint8_t pdev_id;
|
||||
enum phy_ch_width sscan_bw;
|
||||
uint32_t supports_fft_sizes;
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -1522,6 +1522,10 @@ QDF_STATUS (*extract_spectral_caps_fixed_param)(
|
||||
QDF_STATUS (*extract_spectral_scan_bw_caps)(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_scan_bw_capabilities *bw_caps);
|
||||
|
||||
QDF_STATUS (*extract_spectral_fft_size_caps)(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps);
|
||||
#endif /* WLAN_CONV_SPECTRAL_ENABLE */
|
||||
|
||||
QDF_STATUS (*send_vdev_spectral_configure_cmd)(wmi_unified_t wmi_handle,
|
||||
|
@@ -2706,6 +2706,17 @@ QDF_STATUS wmi_extract_spectral_scan_bw_caps(
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
QDF_STATUS wmi_extract_spectral_fft_size_caps(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps)
|
||||
{
|
||||
if (wmi_handle->ops->extract_spectral_fft_size_caps)
|
||||
return wmi_handle->ops->extract_spectral_fft_size_caps(
|
||||
wmi_handle, event, fft_size_caps);
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif /* WLAN_CONV_SPECTRAL_ENABLE */
|
||||
|
||||
QDF_STATUS wmi_extract_spectral_scaling_params_service_ready_ext(
|
||||
|
@@ -7498,6 +7498,53 @@ extract_spectral_scan_bw_caps_tlv(
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* extract_spectral_fft_size_caps_tlv() - Extract FFT size caps from
|
||||
* Spectral capabilities WMI event
|
||||
* @wmi_handle: handle to WMI.
|
||||
* @event: Event buffer
|
||||
* @fft_size_caps: Data structure to be populated by this API after extraction
|
||||
*
|
||||
* Return: QDF_STATUS of operation
|
||||
*/
|
||||
static QDF_STATUS
|
||||
extract_spectral_fft_size_caps_tlv(
|
||||
wmi_unified_t wmi_handle, void *event,
|
||||
struct spectral_fft_size_capabilities *fft_size_caps)
|
||||
{
|
||||
WMI_SPECTRAL_CAPABILITIES_EVENTID_param_tlvs *param_buf = event;
|
||||
int idx;
|
||||
|
||||
if (!param_buf) {
|
||||
wmi_err("param_buf is NULL");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
if (!fft_size_caps) {
|
||||
wmi_err("fft size caps is NULL");
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
for (idx = 0; idx < param_buf->num_fft_size_caps; idx++) {
|
||||
fft_size_caps[idx].pdev_id =
|
||||
wmi_handle->ops->convert_pdev_id_target_to_host(
|
||||
wmi_handle,
|
||||
param_buf->fft_size_caps[idx].pdev_id);
|
||||
fft_size_caps[idx].sscan_bw = wmi_map_ch_width(
|
||||
param_buf->fft_size_caps[idx].sscan_bw);
|
||||
fft_size_caps[idx].supports_fft_sizes =
|
||||
param_buf->sscan_bw_caps[idx].supported_flags;
|
||||
|
||||
wmi_debug("fft_size_caps[%u]:: pdev_id:%u sscan_bw:%u"
|
||||
"supported_flags:0x%x",
|
||||
idx, param_buf->sscan_bw_caps[idx].pdev_id,
|
||||
param_buf->fft_size_caps[idx].sscan_bw,
|
||||
param_buf->sscan_bw_caps[idx].supported_flags);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif /* WLAN_CONV_SPECTRAL_ENABLE */
|
||||
|
||||
#ifdef FEATURE_WPSS_THERMAL_MITIGATION
|
||||
@@ -17092,6 +17139,8 @@ struct wmi_ops tlv_ops = {
|
||||
extract_spectral_caps_fixed_param_tlv,
|
||||
.extract_spectral_scan_bw_caps =
|
||||
extract_spectral_scan_bw_caps_tlv,
|
||||
.extract_spectral_fft_size_caps =
|
||||
extract_spectral_fft_size_caps_tlv,
|
||||
#endif /* WLAN_CONV_SPECTRAL_ENABLE */
|
||||
.send_thermal_mitigation_param_cmd =
|
||||
send_thermal_mitigation_param_cmd_tlv,
|
||||
|
Fai riferimento in un nuovo problema
Block a user