qcacmn: Extract AoA phase delta parameters

Add API to extract AoA phase delta and IbfCalValues from
WMI event. Also Add service bit to support the feature

Change-Id: I6f6514711345dd47c4be3673b8c40501feb763e9
This commit is contained in:
Shwetha G K
2021-07-08 21:34:49 +05:30
committed by Madan Koyyalamudi
parent 42c3f92bf4
commit 378a3b351e
2 changed files with 60 additions and 0 deletions

View File

@@ -227,6 +227,57 @@ static QDF_STATUS send_cfr_rcc_cmd_tlv(wmi_unified_t wmi_handle,
return status;
}
#ifdef REPORT_AOA_FOR_RCC
static QDF_STATUS
extract_cfr_phase_param_tlv(wmi_unified_t wmi_handle,
void *evt_buf,
struct wmi_cfr_phase_delta_param *param)
{
WMI_PDEV_AOA_PHASEDELTA_EVENTID_param_tlvs *param_buf;
wmi_pdev_aoa_phasedelta_evt_fixed_param *phase_event;
param_buf = (WMI_PDEV_AOA_PHASEDELTA_EVENTID_param_tlvs *)evt_buf;
if (!param_buf) {
wmi_err("Invalid cfr aoa phase delta buffer");
return QDF_STATUS_E_INVAL;
}
phase_event = param_buf->fixed_param;
if (!phase_event) {
wmi_err("CFR phase AoA delta buffer is NULL");
return QDF_STATUS_E_NULL_VALUE;
}
param->freq = phase_event->freq;
param->pdev_id = wmi_handle->ops->convert_pdev_id_target_to_host
(wmi_handle, phase_event->pdev_id);
param->max_chains = phase_event->chainInfo & 0xFFFF;
param->chain_phase_mask = (phase_event->chainInfo >> 16) & 0xFFFF;
qdf_mem_copy(param->ibf_cal_val,
phase_event->perChainIbfCalVal,
(sizeof(uint32_t) * WMI_MAX_CHAINS_FOR_AOA_RCC));
qdf_mem_copy(param->phase_delta,
phase_event->phasedelta,
(sizeof(uint32_t) *
WMI_MAX_CHAINS_FOR_AOA_RCC *
MAX_AOA_PHASEDELTA));
return QDF_STATUS_SUCCESS;
}
#else
static QDF_STATUS
extract_cfr_phase_param_tlv(wmi_unified_t wmi_handle,
void *evt_buf,
struct wmi_cfr_phase_delta_param *param)
{
return QDF_STATUS_E_NOSUPPORT;
}
#endif /* REPORT_AOA_FOR_RCC */
#endif
static QDF_STATUS send_peer_cfr_capture_cmd_tlv(wmi_unified_t wmi_handle,
@@ -286,6 +337,7 @@ void wmi_cfr_attach_tlv(wmi_unified_t wmi_handle)
ops->send_peer_cfr_capture_cmd = send_peer_cfr_capture_cmd_tlv;
ops->extract_cfr_peer_tx_event_param =
extract_cfr_peer_tx_event_param_tlv;
ops->extract_cfr_phase_param = extract_cfr_phase_param_tlv;
wmi_enh_cfr_attach_tlv(wmi_handle);
}
#endif /* WLAN_CFR_ENABLE */

View File

@@ -16037,6 +16037,10 @@ event_ids[wmi_roam_scan_chan_list_id] =
#endif
event_ids[wmi_pdev_get_halphy_cal_status_event_id] =
WMI_PDEV_GET_HALPHY_CAL_STATUS_EVENTID;
#ifdef REPORT_AOA_FOR_RCC
event_ids[wmi_pdev_aoa_phasedelta_event_id] =
WMI_PDEV_AOA_PHASEDELTA_EVENTID;
#endif
}
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
@@ -16451,6 +16455,10 @@ static void populate_tlv_service(uint32_t *wmi_service)
WMI_SERVICE_RTT_AP_INITIATOR_STAGGERED_MODE_SUPPORTED;
wmi_service[wmi_service_rtt_ap_initiator_bursted_mode_supported] =
WMI_SERVICE_RTT_AP_INITIATOR_BURSTED_MODE_SUPPORTED;
#ifdef REPORT_AOA_FOR_RCC
wmi_service[wmi_service_aoa_for_rcc_supported] =
WMI_SERVICE_AOA_FOR_RCC_SUPPORTED;
#endif
}
/**