Explorar o código

qcacmn: Add ini to set priority for TC ingress filter

Add ini support to configure TC ingress filter priority
value which would be used for TC based dynamic GRO.

Change-Id: I1742f4539353939e3a40ff4096b3f833f2029b12
CRs-Fixed: 3206817
Yeshwanth Sriram Guntuka %!s(int64=3) %!d(string=hai) anos
pai
achega
f2ee56b2fc

+ 4 - 2
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,

+ 5 - 2
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;

+ 4 - 2
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 ",

+ 17 - 4
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)
+
 /*
  * <ini>
  * 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) \

+ 3 - 2
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);

+ 4 - 2
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;