qcacmn: update TX ILP capability to DP and target

After receiving WMI service ready ext2 event and htt msdu index to
qtype map is derived, call CDP API to evaluate whether TX ILP can be
supported or not, update the TX ILP capability to DP, also send WMI
INIT CMD to FW to notify if host has enabled the TX ILP support or
not.

Change-Id: I472ebc5c7fa4b2996b790b58274fa3c048f6d7f9
CRs-Fixed: 3447519
Este commit está contenido en:
Jinwei Chen
2023-03-28 04:26:15 -07:00
cometido por Madan Koyyalamudi
padre ebdd12b6a9
commit 499696eab5
Se han modificado 3 ficheros con 48 adiciones y 0 borrados

Ver fichero

@@ -33,6 +33,9 @@
#include <service_ready_param.h>
#include <init_cmd_api.h>
#include <cdp_txrx_cmn.h>
#ifdef DP_TX_PACKET_INSPECT_FOR_ILP
#include <cdp_txrx_misc.h>
#endif
#include <wlan_reg_ucfg_api.h>
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
#include <wlan_mlo_mgr_cmn.h>
@@ -136,6 +139,27 @@ init_deinit_update_roam_stats_cap(struct wmi_unified *wmi_handle,
{}
#endif
#ifdef DP_TX_PACKET_INSPECT_FOR_ILP
static void
init_deinit_update_tx_ilp_cap(struct wlan_objmgr_psoc *psoc,
struct tgt_info *info)
{
ol_txrx_soc_handle soc;
soc = wlan_psoc_get_dp_handle(psoc);
info->wlan_res_cfg.tx_ilp_enable =
cdp_evaluate_update_tx_ilp_cfg(
soc, info->service_ext2_param.num_msdu_idx_qtype_map,
info->msdu_idx_qtype_map);
}
#else
static void
init_deinit_update_tx_ilp_cap(struct wlan_objmgr_psoc *psoc,
struct tgt_info *info)
{
}
#endif
#ifdef MULTI_CLIENT_LL_SUPPORT
/**
* init_deinit_update_multi_client_ll_caps() - Update multi client service
@@ -536,6 +560,8 @@ static int init_deinit_service_ext2_ready_event_handler(ol_scn_t scn_handle,
goto exit;
}
init_deinit_update_tx_ilp_cap(psoc, info);
err_code = init_deinit_populate_twt_cap_ext2(psoc, wmi_handle, event,
info);

Ver fichero

@@ -6715,6 +6715,7 @@ struct target_feature_set {
* support
* @notify_frame_support: capability to mark notify frames from host
* @dp_peer_meta_data_ver: datapath peer meta data version flag
* @tx_ilp_enable: capability to support TX ILP from host
*/
typedef struct {
uint32_t num_vdevs;
@@ -6843,6 +6844,9 @@ typedef struct {
uint32_t num_max_active_vdevs;
uint8_t notify_frame_support;
uint8_t dp_peer_meta_data_ver;
#ifdef DP_TX_PACKET_INSPECT_FOR_ILP
uint8_t tx_ilp_enable;
#endif
} target_resource_config;
/**

Ver fichero

@@ -9093,6 +9093,23 @@ void wmi_copy_afc_deployment_config(wmi_resource_config *resource_cfg,
}
#endif
#ifdef DP_TX_PACKET_INSPECT_FOR_ILP
static inline
void wmi_copy_latency_flowq_support(wmi_resource_config *resource_cfg,
target_resource_config *tgt_res_cfg)
{
if (tgt_res_cfg->tx_ilp_enable)
WMI_RSRC_CFG_FLAGS2_LATENCY_FLOWQ_SUPPORT_SET(
resource_cfg->flags2, 1);
}
#else
static inline
void wmi_copy_latency_flowq_support(wmi_resource_config *resource_cfg,
target_resource_config *tgt_res_cfg)
{
}
#endif
static
void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
target_resource_config *tgt_res_cfg)
@@ -9390,6 +9407,7 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
WMI_RSRC_CFG_FLAGS2_NOTIFY_FRAME_CONFIG_ENABLE_SET(
resource_cfg->flags2, 1);
wmi_copy_latency_flowq_support(resource_cfg, tgt_res_cfg);
}
#ifdef FEATURE_SET