diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index b3d4daf23d..18b2c800f2 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/dp/inc/cdp_txrx_cmn_struct.h @@ -2626,7 +2626,8 @@ struct cdp_monitor_filter { * @cfg_dp_tso_enable: get TSO enable config * @cfg_dp_lro_enable: get LRO enable config * @cfg_dp_gro_enable: get GRO enable config - * @cfg_dp_force_gro_enable: get Force GRO enable config + * @cfg_dp_tc_based_dyn_gro_enable: get TC based dynamic gro enable config + * @cfg_dp_tc_ingress_prio: priority value to be checked for tc filters * @cfg_dp_tx_flow_start_queue_offset: get DP TX flow start queue offset * @cfg_dp_tx_flow_stop_queue_threshold: get DP TX flow stop queue threshold * @cfg_dp_ipa_uc_tx_buf_size: get IPA TX buf size config @@ -2649,7 +2650,8 @@ enum cdp_dp_cfg { cfg_dp_tso_enable, cfg_dp_lro_enable, cfg_dp_gro_enable, - cfg_dp_force_gro_enable, + cfg_dp_tc_based_dyn_gro_enable, + cfg_dp_tc_ingress_prio, cfg_dp_sg_enable, cfg_dp_tx_flow_start_queue_offset, cfg_dp_tx_flow_stop_queue_threshold, diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 1300beb8e4..2e623f8a63 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -12246,8 +12246,11 @@ static uint32_t dp_get_cfg(struct cdp_soc_t *soc, enum cdp_dp_cfg cfg) case cfg_dp_gro_enable: value = dpsoc->wlan_cfg_ctx->gro_enabled; break; - case cfg_dp_force_gro_enable: - value = dpsoc->wlan_cfg_ctx->force_gro_enabled; + case cfg_dp_tc_based_dyn_gro_enable: + value = dpsoc->wlan_cfg_ctx->tc_based_dynamic_gro; + break; + case cfg_dp_tc_ingress_prio: + value = dpsoc->wlan_cfg_ctx->tc_ingress_prio; break; case cfg_dp_sg_enable: value = dpsoc->wlan_cfg_ctx->sg_enabled; diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 27e43e6e6c..47d1992a70 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/dp/wifi3.0/dp_stats.c @@ -5367,8 +5367,10 @@ void dp_print_soc_cfg_params(struct dp_soc *soc) soc_cfg_ctx->sg_enabled); DP_PRINT_STATS("Gro enabled: %u ", soc_cfg_ctx->gro_enabled); - DP_PRINT_STATS("Force Gro enabled: %u ", - soc_cfg_ctx->force_gro_enabled); + DP_PRINT_STATS("TC based dynamic GRO: %u ", + soc_cfg_ctx->tc_based_dynamic_gro); + DP_PRINT_STATS("TC ingress prio: %u ", + soc_cfg_ctx->tc_ingress_prio); DP_PRINT_STATS("rawmode enabled: %u ", soc_cfg_ctx->rawmode_enabled); DP_PRINT_STATS("peer flow ctrl enabled: %u ", diff --git a/wlan_cfg/cfg_dp.h b/wlan_cfg/cfg_dp.h index 9f78e131bf..99606595c5 100644 --- a/wlan_cfg/cfg_dp.h +++ b/wlan_cfg/cfg_dp.h @@ -876,7 +876,8 @@ #define WLAN_CFG_GRO_ENABLE_MAX 3 #define WLAN_CFG_GRO_ENABLE_DEFAULT 0 #define DP_GRO_ENABLE_BIT_SET BIT(0) -#define DP_FORCE_USE_GRO_BIT_SET BIT(1) +#define DP_TC_BASED_DYNAMIC_GRO BIT(1) + /* * * CFG_DP_GRO - Enable the GRO feature standalonely @@ -886,9 +887,9 @@ * * This ini entry is used to enable/disable GRO feature standalonely. * Value 0: Disable GRO feature - * Value 1: Enable Dynamic GRO feature, TC rule can control GRO - * behavior of STA mode - * Value 3: Enable GRO feature forcibly + * Value 1: Enable GRO feature always + * Value 3: Enable GRO dynamic feature where TC rule can control GRO + * behavior * * Usage: External * @@ -901,6 +902,17 @@ WLAN_CFG_GRO_ENABLE_DEFAULT, \ CFG_VALUE_OR_DEFAULT, "DP GRO Enable") +#define WLAN_CFG_TC_INGRESS_PRIO_MIN 0 +#define WLAN_CFG_TC_INGRESS_PRIO_MAX 0xFFFF +#define WLAN_CFG_TC_INGRESS_PRIO_DEFAULT 0 + +#define CFG_DP_TC_INGRESS_PRIO \ + CFG_INI_UINT("tc_ingress_prio", \ + WLAN_CFG_TC_INGRESS_PRIO_MIN, \ + WLAN_CFG_TC_INGRESS_PRIO_MAX, \ + WLAN_CFG_TC_INGRESS_PRIO_DEFAULT, \ + CFG_VALUE_OR_DEFAULT, "DP tc ingress prio") + #define CFG_DP_OL_TX_CSUM \ CFG_INI_BOOL("dp_offload_tx_csum_support", false, \ "DP tx csum Enable") @@ -1719,6 +1731,7 @@ CFG(CFG_DP_LRO) \ CFG(CFG_DP_SG) \ CFG(CFG_DP_GRO) \ + CFG(CFG_DP_TC_INGRESS_PRIO) \ CFG(CFG_DP_OL_TX_CSUM) \ CFG(CFG_DP_OL_RX_CSUM) \ CFG(CFG_DP_RAWMODE) \ diff --git a/wlan_cfg/wlan_cfg.c b/wlan_cfg/wlan_cfg.c index 45e6b63599..00a6810e1a 100644 --- a/wlan_cfg/wlan_cfg.c +++ b/wlan_cfg/wlan_cfg.c @@ -2023,9 +2023,10 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc) gro_bit_set = cfg_get(psoc, CFG_DP_GRO); if (gro_bit_set & DP_GRO_ENABLE_BIT_SET) { wlan_cfg_ctx->gro_enabled = true; - if (gro_bit_set & DP_FORCE_USE_GRO_BIT_SET) - wlan_cfg_ctx->force_gro_enabled = true; + if (gro_bit_set & DP_TC_BASED_DYNAMIC_GRO) + wlan_cfg_ctx->tc_based_dynamic_gro = true; } + wlan_cfg_ctx->tc_ingress_prio = cfg_get(psoc, CFG_DP_TC_INGRESS_PRIO); wlan_cfg_ctx->ol_tx_csum_enabled = cfg_get(psoc, CFG_DP_OL_TX_CSUM); wlan_cfg_ctx->ol_rx_csum_enabled = cfg_get(psoc, CFG_DP_OL_RX_CSUM); wlan_cfg_ctx->rawmode_enabled = cfg_get(psoc, CFG_DP_RAWMODE); diff --git a/wlan_cfg/wlan_cfg.h b/wlan_cfg/wlan_cfg.h index b9a437ff1c..7dd0a3919e 100644 --- a/wlan_cfg/wlan_cfg.h +++ b/wlan_cfg/wlan_cfg.h @@ -172,7 +172,8 @@ struct wlan_srng_cfg { * @lro_enabled: enable/disable LRO feature * @sg_enabled: enable disable scatter gather feature * @gro_enabled: enable disable GRO feature - * @force_gro_enabled: force enable GRO feature + * @tc_based_dynamic_gro: enable/disable tc based dynamic gro + * @tc_ingress_prio: ingress prio to be checked for dynamic gro * @ipa_enabled: Flag indicating if IPA is enabled * @ol_tx_csum_enabled: Flag indicating if TX csum is enabled * @ol_rx_csum_enabled: Flag indicating if Rx csum is enabled @@ -308,7 +309,8 @@ struct wlan_cfg_dp_soc_ctxt { bool lro_enabled; bool sg_enabled; bool gro_enabled; - bool force_gro_enabled; + bool tc_based_dynamic_gro; + uint32_t tc_ingress_prio; bool ipa_enabled; bool ol_tx_csum_enabled; bool ol_rx_csum_enabled;