Jelajahi Sumber

qcacld-3.0: Add threshold for SUPER_HIGH throughput in DP Component

Added new threshold corresponding to SUPER_HIGH
throughput and maxed out vote level to PLD_BUS_WIDTH_MAX.

Change-Id: I3d249fde7101d780bcfb6fba830ae2b255f02063
CRs-Fixed: 3194303
Azmath Mohammed 2 tahun lalu
induk
melakukan
d4b45548e7

+ 2 - 0
components/dp/core/inc/wlan_dp_priv.h

@@ -91,6 +91,8 @@ struct wlan_dp_psoc_cfg {
 	uint32_t periodic_stats_timer_duration;
 #endif /* WLAN_FEATURE_PERIODIC_STA_STATS */
 #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
+	/* bandwidth threshold for super high bandwidth */
+	uint32_t bus_bw_super_high_threshold;
 	/* bandwidth threshold for ultra high bandwidth */
 	uint32_t bus_bw_ultra_high_threshold;
 	/* bandwidth threshold for very high bandwidth */

+ 5 - 1
components/dp/core/src/wlan_dp_bus_bandwidth.c

@@ -1449,6 +1449,9 @@ static void dp_pld_request_bus_bandwidth(struct wlan_dp_psoc_context *dp_ctx,
 	if (dp_ctx->high_bus_bw_request) {
 		next_vote_level = PLD_BUS_WIDTH_VERY_HIGH;
 		tput_level = TPUT_LEVEL_VERY_HIGH;
+	} else if (total_pkts > dp_ctx->dp_cfg.bus_bw_super_high_threshold) {
+		next_vote_level = PLD_BUS_WIDTH_MAX;
+		tput_level = TPUT_LEVEL_SUPER_HIGH;
 	} else if (total_pkts > dp_ctx->dp_cfg.bus_bw_ultra_high_threshold) {
 		next_vote_level = PLD_BUS_WIDTH_ULTRA_HIGH;
 		tput_level = TPUT_LEVEL_ULTRA_HIGH;
@@ -1476,7 +1479,8 @@ static void dp_pld_request_bus_bandwidth(struct wlan_dp_psoc_context *dp_ctx,
 	 */
 	if (!ucfg_ipa_is_fw_wdi_activated(dp_ctx->pdev) &&
 	    policy_mgr_is_current_hwmode_dbs(dp_ctx->psoc) &&
-	    (total_pkts > dp_ctx->dp_cfg.bus_bw_dbs_threshold)) {
+	    (total_pkts > dp_ctx->dp_cfg.bus_bw_dbs_threshold) &&
+	    (tput_level < TPUT_LEVEL_SUPER_HIGH)) {
 		next_vote_level = PLD_BUS_WIDTH_ULTRA_HIGH;
 		tput_level = TPUT_LEVEL_ULTRA_HIGH;
 	}

+ 2 - 0
components/dp/core/src/wlan_dp_main.c

@@ -366,6 +366,8 @@ void dp_set_dump_dp_trace(uint16_t cmd_type, uint16_t count)
 static void dp_ini_bus_bandwidth(struct wlan_dp_psoc_cfg *config,
 				 struct wlan_objmgr_psoc *psoc)
 {
+	config->bus_bw_super_high_threshold =
+		cfg_get(psoc, CFG_DP_BUS_BANDWIDTH_SUPER_HIGH_THRESHOLD);
 	config->bus_bw_ultra_high_threshold =
 		cfg_get(psoc, CFG_DP_BUS_BANDWIDTH_ULTRA_HIGH_THRESHOLD);
 	config->bus_bw_very_high_threshold =

+ 24 - 0
components/dp/dispatcher/inc/wlan_dp_cfg.h

@@ -108,6 +108,29 @@
 #define CFG_DP_RX_SOFTIRQ_MAX_YIELD_TIME_NS_MAX (10 * 1000 * 1000)
 
 #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
+/*
+ * <ini>
+ * gBusBandwidthSuperHighThreshold - bus bandwidth super high threshold
+ *
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 22000
+ *
+ * This ini specifies the bus bandwidth super high threshold
+ *
+ * Usage: Internal
+ *
+ * </ini>
+ */
+#define CFG_DP_BUS_BANDWIDTH_SUPER_HIGH_THRESHOLD \
+		CFG_INI_UINT( \
+		"gBusBandwidthSuperHighThreshold", \
+		0, \
+		4294967295UL, \
+		22000, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Bus bandwidth super high threshold")
+
 /*
  * <ini>
  * gBusBandwidthUltraHighThreshold - bus bandwidth ultra high threshold
@@ -1155,6 +1178,7 @@
 
 #ifdef WLAN_FEATURE_DP_BUS_BANDWIDTH
 #define CFG_DP_BUS_BANDWIDTH \
+	CFG(CFG_DP_BUS_BANDWIDTH_SUPER_HIGH_THRESHOLD) \
 	CFG(CFG_DP_BUS_BANDWIDTH_ULTRA_HIGH_THRESHOLD) \
 	CFG(CFG_DP_BUS_BANDWIDTH_VERY_HIGH_THRESHOLD) \
 	CFG(CFG_DP_BUS_BANDWIDTH_DBS_THRESHOLD) \