qcacmn: Extract enhanced AoA caps to tgt_info
Changes to extract enhanced AoA (multi gain table support) capabilities from SERVICE_READY_EXT2 event CRs-Fixed: 3553378 Change-Id: I8db093cfce7b8c8cacedef39f97911eabe062c19
This commit is contained in:

committed by
Rahul Choudhary

parent
dd3ebd6336
commit
6828824ccd
@@ -210,6 +210,7 @@ struct target_version_info {
|
|||||||
* @sbs_lower_band_end_freq: sbs lower band end frequency
|
* @sbs_lower_band_end_freq: sbs lower band end frequency
|
||||||
* @health_mon_param: health monitor params
|
* @health_mon_param: health monitor params
|
||||||
* @aux_dev_caps: aux device capability
|
* @aux_dev_caps: aux device capability
|
||||||
|
* @aoa_caps: aoa capabilities from target
|
||||||
*/
|
*/
|
||||||
struct tgt_info {
|
struct tgt_info {
|
||||||
struct host_fw_ver version;
|
struct host_fw_ver version;
|
||||||
@@ -250,6 +251,9 @@ struct tgt_info {
|
|||||||
struct wmi_health_mon_params health_mon_param;
|
struct wmi_health_mon_params health_mon_param;
|
||||||
#endif /* HEALTH_MON_SUPPORT */
|
#endif /* HEALTH_MON_SUPPORT */
|
||||||
struct wlan_psoc_host_aux_dev_caps *aux_dev_caps;
|
struct wlan_psoc_host_aux_dev_caps *aux_dev_caps;
|
||||||
|
#ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT
|
||||||
|
struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 *aoa_caps;
|
||||||
|
#endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1483,6 +1487,26 @@ static inline uint32_t target_psoc_get_num_dbr_ring_caps
|
|||||||
return psoc_info->info.service_ext2_param.num_dbr_ring_caps;
|
return psoc_info->info.service_ext2_param.num_dbr_ring_caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_psoc_get_aoa_caps() - get aoa_caps
|
||||||
|
* @psoc_info: pointer to structure target_psoc_info
|
||||||
|
*
|
||||||
|
* API to get aoa_caps
|
||||||
|
*
|
||||||
|
* Return: structure pointer to wlan_psoc_host_rcc_enh_aoa_caps_ext2
|
||||||
|
*/
|
||||||
|
#ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT
|
||||||
|
static inline
|
||||||
|
struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 *target_psoc_get_aoa_caps
|
||||||
|
(struct target_psoc_info *psoc_info)
|
||||||
|
{
|
||||||
|
if (!psoc_info)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return psoc_info->info.aoa_caps;
|
||||||
|
}
|
||||||
|
#endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* target_psoc_get_num_scan_radio_caps() - get no of scan_radio_caps
|
* target_psoc_get_num_scan_radio_caps() - get no of scan_radio_caps
|
||||||
* @psoc_info: pointer to structure target_psoc_info
|
* @psoc_info: pointer to structure target_psoc_info
|
||||||
|
@@ -794,6 +794,7 @@ QDF_STATUS target_if_psoc_tgt_info_mem_free(
|
|||||||
init_deinit_scan_radio_cap_free(tgt_psoc_info);
|
init_deinit_scan_radio_cap_free(tgt_psoc_info);
|
||||||
init_deinit_msdu_idx_qtype_map_free(tgt_psoc_info);
|
init_deinit_msdu_idx_qtype_map_free(tgt_psoc_info);
|
||||||
init_deinit_aux_dev_cap_free(tgt_psoc_info);
|
init_deinit_aux_dev_cap_free(tgt_psoc_info);
|
||||||
|
init_deinit_rcc_aoa_cap_ext2_free(tgt_psoc_info);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@@ -356,6 +356,36 @@ struct wlan_psoc_host_spectral_scaling_params {
|
|||||||
uint32_t default_agc_max_gain;
|
uint32_t default_agc_max_gain;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT
|
||||||
|
/**
|
||||||
|
* struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 - aoa capabilities
|
||||||
|
* @max_agc_gain_tbls: max number of AGC gain tables supported
|
||||||
|
* @max_agc_gain_per_tbl_2g: max AGC gain value per each table on 2GHz band.
|
||||||
|
* Each entry in max_agc_gain_per_table indicates
|
||||||
|
* max AGC gain value corresponding AGC gain table
|
||||||
|
* index.
|
||||||
|
* @max_agc_gain_per_tbl_5g: max AGC gain value per each table on 5GHz band.
|
||||||
|
* Each entry in max_agc_gain_per_table indicates
|
||||||
|
* max AGC gain value corresponding AGC gain table
|
||||||
|
* index.
|
||||||
|
* @max_agc_gain_per_tbl_6g: max AGC gain value per each table on 5GHz band.
|
||||||
|
* Each entry in max_agc_gain_per_table indicates
|
||||||
|
* max AGC gain value corresponding AGC gain table
|
||||||
|
* index.
|
||||||
|
* @max_bdf_entries_per_tbl: max entries in phase_array and gain_array per
|
||||||
|
* each gain table index. Each entry in this array
|
||||||
|
* indicates max entries used to store required data
|
||||||
|
* for corresponding AGC gain table index.
|
||||||
|
*/
|
||||||
|
struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 {
|
||||||
|
uint32_t max_agc_gain_tbls;
|
||||||
|
uint16_t max_agc_gain_per_tbl_2g[PSOC_MAX_NUM_AGC_GAIN_TBLS];
|
||||||
|
uint16_t max_agc_gain_per_tbl_5g[PSOC_MAX_NUM_AGC_GAIN_TBLS];
|
||||||
|
uint16_t max_agc_gain_per_tbl_6g[PSOC_MAX_NUM_AGC_GAIN_TBLS];
|
||||||
|
uint8_t max_bdf_entries_per_tbl[PSOC_MAX_NUM_AGC_GAIN_TBLS];
|
||||||
|
};
|
||||||
|
#endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_psoc_host_chainmask_capabilities - chain mask capabilities list
|
* struct wlan_psoc_host_chainmask_capabilities - chain mask capabilities list
|
||||||
* @supports_chan_width_20: channel width 20 support for this chain mask.
|
* @supports_chan_width_20: channel width 20 support for this chain mask.
|
||||||
|
@@ -312,6 +312,33 @@ int init_deinit_populate_hal_reg_cap_ext2(wmi_unified_t handle, uint8_t *event,
|
|||||||
int init_deinit_populate_mac_phy_cap_ext2(wmi_unified_t handle, uint8_t *event,
|
int init_deinit_populate_mac_phy_cap_ext2(wmi_unified_t handle, uint8_t *event,
|
||||||
struct tgt_info *info);
|
struct tgt_info *info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* init_deinit_populate_rcc_aoa_cap_ext2() - populate aoa capabilities from
|
||||||
|
* service ready ext2 event
|
||||||
|
* @psoc: PSOC object
|
||||||
|
* @handle: WMI handle pointer
|
||||||
|
* @event: event buffer received from FW
|
||||||
|
* @info: tgt_info object
|
||||||
|
*
|
||||||
|
* API to populate aoa capability from service ready ext2 event.
|
||||||
|
*
|
||||||
|
* Return: zero on successful population of aoa capability or failure
|
||||||
|
*/
|
||||||
|
int init_deinit_populate_rcc_aoa_cap_ext2(struct wlan_objmgr_psoc *psoc,
|
||||||
|
wmi_unified_t handle, uint8_t *event,
|
||||||
|
struct tgt_info *info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* init_deinit_rcc_aoa_cap_ext2_free() - free aoa capability
|
||||||
|
* @tgt_psoc_info: target psoc info object
|
||||||
|
*
|
||||||
|
* API to free aoa capability
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS init_deinit_rcc_aoa_cap_ext2_free(
|
||||||
|
struct target_psoc_info *tgt_psoc_info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* init_deinit_populate_scan_radio_cap_ext2() - populate scan radio capabilities
|
* init_deinit_populate_scan_radio_cap_ext2() - populate scan radio capabilities
|
||||||
* from service ready ext2 event
|
* from service ready ext2 event
|
||||||
|
@@ -595,6 +595,15 @@ static int init_deinit_service_ext2_ready_event_handler(ol_scn_t scn_handle,
|
|||||||
target_if_debug("failed to populate aux_dev cap ext2");
|
target_if_debug("failed to populate aux_dev cap ext2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wmi_service_enabled(wmi_handle,
|
||||||
|
wmi_service_aoa_for_rcc_supported)) {
|
||||||
|
err_code = init_deinit_populate_rcc_aoa_cap_ext2(psoc,
|
||||||
|
wmi_handle,
|
||||||
|
event, info);
|
||||||
|
if (err_code)
|
||||||
|
target_if_debug("failed to populate aoa cap ext2");
|
||||||
|
}
|
||||||
|
|
||||||
legacy_callback = target_if_get_psoc_legacy_service_ready_cb();
|
legacy_callback = target_if_get_psoc_legacy_service_ready_cb();
|
||||||
if (legacy_callback)
|
if (legacy_callback)
|
||||||
if (legacy_callback(wmi_service_ready_ext2_event_id,
|
if (legacy_callback(wmi_service_ready_ext2_event_id,
|
||||||
|
@@ -562,6 +562,66 @@ exit:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT
|
||||||
|
int init_deinit_populate_rcc_aoa_cap_ext2(struct wlan_objmgr_psoc *psoc,
|
||||||
|
wmi_unified_t handle,
|
||||||
|
uint8_t *event,
|
||||||
|
struct tgt_info *info)
|
||||||
|
{
|
||||||
|
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
info->aoa_caps = qdf_mem_malloc(
|
||||||
|
sizeof(struct wlan_psoc_host_rcc_enh_aoa_caps_ext2));
|
||||||
|
|
||||||
|
if (!info->aoa_caps) {
|
||||||
|
target_if_err("Mem alloc for aoa cap failed");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = wmi_extract_aoa_caps_service_ready_ext2(
|
||||||
|
handle, event,
|
||||||
|
info->aoa_caps);
|
||||||
|
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
|
target_if_err("Extraction of aoa caps failed");
|
||||||
|
goto free_and_return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
free_and_return:
|
||||||
|
qdf_mem_free(info->aoa_caps);
|
||||||
|
info->aoa_caps = NULL;
|
||||||
|
|
||||||
|
return qdf_status_to_os_return(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS init_deinit_rcc_aoa_cap_ext2_free(
|
||||||
|
struct target_psoc_info *tgt_psoc_info)
|
||||||
|
{
|
||||||
|
qdf_mem_free(tgt_psoc_info->info.aoa_caps);
|
||||||
|
tgt_psoc_info->info.aoa_caps = NULL;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int init_deinit_populate_rcc_aoa_cap_ext2(struct wlan_objmgr_psoc *psoc,
|
||||||
|
wmi_unified_t handle,
|
||||||
|
uint8_t *event,
|
||||||
|
struct tgt_info *info)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS init_deinit_rcc_aoa_cap_ext2_free(
|
||||||
|
struct target_psoc_info *tgt_psoc_info)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */
|
||||||
|
|
||||||
|
qdf_export_symbol(init_deinit_rcc_aoa_cap_ext2_free);
|
||||||
|
|
||||||
int init_deinit_populate_dbs_or_sbs_cap_ext2(struct wlan_objmgr_psoc *psoc,
|
int init_deinit_populate_dbs_or_sbs_cap_ext2(struct wlan_objmgr_psoc *psoc,
|
||||||
wmi_unified_t handle,
|
wmi_unified_t handle,
|
||||||
uint8_t *event,
|
uint8_t *event,
|
||||||
|
Reference in New Issue
Block a user