Ver código fonte

qcacld-3.0: Vote for Max snoc/ddr votes for DBS ultra_high TPUTs

Add new MAX TPUT level to vote for Max snoc/DDR vote levels.
MAX TPUT level is only required for DBS ultra_high TPUT level.
DBS mode ultra high TPUT require highest snoc/ddr clocks.

Change-Id: Iac41f7157d61858c72ef1b28ba9ad6f768da325c
CRs-Fixed: 3071101
Prakash Manjunathappa 3 anos atrás
pai
commit
514d54117e

+ 32 - 30
core/hdd/src/wlan_hdd_bus_bandwidth.c

@@ -36,27 +36,27 @@ static bus_bw_table_type bus_bw_table_default = {
 	[QCA_WLAN_802_11_MODE_11B] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_1,
 				      BUS_BW_LEVEL_2, BUS_BW_LEVEL_3,
 				      BUS_BW_LEVEL_4, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_7},
+				      BUS_BW_LEVEL_7, BUS_BW_LEVEL_8},
 	[QCA_WLAN_802_11_MODE_11G] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_5,
 				      BUS_BW_LEVEL_5, BUS_BW_LEVEL_5,
 				      BUS_BW_LEVEL_5, BUS_BW_LEVEL_5,
-				      BUS_BW_LEVEL_5},
+				      BUS_BW_LEVEL_5, BUS_BW_LEVEL_5},
 	[QCA_WLAN_802_11_MODE_11A] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_5,
 				      BUS_BW_LEVEL_5, BUS_BW_LEVEL_5,
 				      BUS_BW_LEVEL_5, BUS_BW_LEVEL_5,
-				      BUS_BW_LEVEL_5},
+				      BUS_BW_LEVEL_5, BUS_BW_LEVEL_5},
 	[QCA_WLAN_802_11_MODE_11N] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_1,
 				      BUS_BW_LEVEL_2, BUS_BW_LEVEL_3,
 				      BUS_BW_LEVEL_4, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_7},
+				      BUS_BW_LEVEL_7, BUS_BW_LEVEL_8},
 	[QCA_WLAN_802_11_MODE_11AC] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_1,
 				       BUS_BW_LEVEL_2, BUS_BW_LEVEL_3,
 				       BUS_BW_LEVEL_4, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_7},
+				       BUS_BW_LEVEL_7, BUS_BW_LEVEL_8},
 	[QCA_WLAN_802_11_MODE_11AX] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_1,
 				       BUS_BW_LEVEL_2, BUS_BW_LEVEL_3,
 				       BUS_BW_LEVEL_4, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_7},
+				       BUS_BW_LEVEL_7, BUS_BW_LEVEL_8},
 };
 
 /**
@@ -65,30 +65,30 @@ static bus_bw_table_type bus_bw_table_default = {
  *  latency setting.
  */
 static bus_bw_table_type bus_bw_table_low_latency = {
-	[QCA_WLAN_802_11_MODE_11B] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6},
-	[QCA_WLAN_802_11_MODE_11G] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6},
-	[QCA_WLAN_802_11_MODE_11A] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6},
-	[QCA_WLAN_802_11_MODE_11N] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				      BUS_BW_LEVEL_6},
-	[QCA_WLAN_802_11_MODE_11AC] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_6},
-	[QCA_WLAN_802_11_MODE_11AX] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_6, BUS_BW_LEVEL_6,
-				       BUS_BW_LEVEL_6},
+	[QCA_WLAN_802_11_MODE_11B] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8},
+	[QCA_WLAN_802_11_MODE_11G] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8},
+	[QCA_WLAN_802_11_MODE_11A] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8},
+	[QCA_WLAN_802_11_MODE_11N] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				      BUS_BW_LEVEL_8, BUS_BW_LEVEL_8},
+	[QCA_WLAN_802_11_MODE_11AC] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_8,
+				       BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				       BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				       BUS_BW_LEVEL_8, BUS_BW_LEVEL_8},
+	[QCA_WLAN_802_11_MODE_11AX] = {BUS_BW_LEVEL_NONE, BUS_BW_LEVEL_8,
+				       BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				       BUS_BW_LEVEL_8, BUS_BW_LEVEL_8,
+				       BUS_BW_LEVEL_8, BUS_BW_LEVEL_8}
 };
 
 /**
@@ -116,6 +116,8 @@ bbm_convert_to_pld_bus_lvl(enum bus_bw_level vote_lvl)
 		return PLD_BUS_WIDTH_VERY_HIGH;
 	case BUS_BW_LEVEL_7:
 		return PLD_BUS_WIDTH_ULTRA_HIGH;
+	case BUS_BW_LEVEL_8:
+		return PLD_BUS_WIDTH_MAX;
 	case BUS_BW_LEVEL_NONE:
 	default:
 		return PLD_BUS_WIDTH_NONE;

+ 3 - 0
core/hdd/src/wlan_hdd_bus_bandwidth.h

@@ -48,6 +48,7 @@ enum bus_bw_level {
 	BUS_BW_LEVEL_5,
 	BUS_BW_LEVEL_6,
 	BUS_BW_LEVEL_7,
+	BUS_BW_LEVEL_8,
 	BUS_BW_LEVEL_MAX,
 };
 
@@ -63,6 +64,7 @@ enum bus_bw_level {
  * @TPUT_LEVEL_HIGH: high throughput level
  * @TPUT_LEVEL_VERY_HIGH: very high throughput level
  * @TPUT_LEVEL_ULTRA_HIGH: ultra high throughput level
+ * @TPUT_LEVEL_SUPER_HIGH: super high throughput level
  */
 enum tput_level {
 	TPUT_LEVEL_NONE,
@@ -72,6 +74,7 @@ enum tput_level {
 	TPUT_LEVEL_HIGH,
 	TPUT_LEVEL_VERY_HIGH,
 	TPUT_LEVEL_ULTRA_HIGH,
+	TPUT_LEVEL_SUPER_HIGH,
 	TPUT_LEVEL_MAX,
 };
 

+ 8 - 4
core/hdd/src/wlan_hdd_main.c

@@ -10135,10 +10135,14 @@ static void hdd_pld_request_bus_bandwidth(struct hdd_context *hdd_ctx,
 	 * for other cases, follow general voting logic
 	 */
 	if (!ucfg_ipa_is_fw_wdi_activated(hdd_ctx->pdev) &&
-	    policy_mgr_is_current_hwmode_dbs(hdd_ctx->psoc) &&
-	    (total_pkts > hdd_ctx->config->bus_bw_dbs_threshold)) {
-		next_vote_level = PLD_BUS_WIDTH_ULTRA_HIGH;
-		tput_level = TPUT_LEVEL_ULTRA_HIGH;
+	    policy_mgr_is_current_hwmode_dbs(hdd_ctx->psoc)) {
+		if (total_pkts > hdd_ctx->config->bus_bw_ultra_high_threshold) {
+			next_vote_level = PLD_BUS_WIDTH_MAX;
+			tput_level = TPUT_LEVEL_SUPER_HIGH;
+		} else if (total_pkts > hdd_ctx->config->bus_bw_dbs_threshold) {
+			next_vote_level = PLD_BUS_WIDTH_ULTRA_HIGH;
+			tput_level = TPUT_LEVEL_ULTRA_HIGH;
+		}
 	}
 
 	param.policy = BBM_TPUT_POLICY;

+ 1 - 0
core/pld/inc/pld_common.h

@@ -97,6 +97,7 @@ enum pld_bus_width_type {
 	PLD_BUS_WIDTH_HIGH,
 	PLD_BUS_WIDTH_VERY_HIGH,
 	PLD_BUS_WIDTH_ULTRA_HIGH,
+	PLD_BUS_WIDTH_MAX,
 	PLD_BUS_WIDTH_LOW_LATENCY,
 };