Prechádzať zdrojové kódy

qcacld-3.0: Affine tx rings intrs to gold core at very high tputs

Affine tx rings interrupts to gold cores at very high tput
level and to silver cores at tput levels lower than very
high.

Change-Id: I90006645acb82b71c63d2255722e2c67bb7a2f46
CRs-Fixed: 3059716
Yeshwanth Sriram Guntuka 3 rokov pred
rodič
commit
1e31f26b25
1 zmenil súbory, kde vykonal 14 pridanie a 0 odobranie
  1. 14 0
      core/hdd/src/wlan_hdd_main.c

+ 14 - 0
core/hdd/src/wlan_hdd_main.c

@@ -10110,6 +10110,9 @@ static void hdd_pld_request_bus_bandwidth(struct hdd_context *hdd_ctx,
 	enum tput_level tput_level;
 	struct bbm_params param = {0};
 	bool legacy_client = false;
+	void *hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
+	ol_txrx_soc_handle soc = cds_get_context(QDF_MODULE_ID_SOC);
+	static enum tput_level prev_tput_level = TPUT_LEVEL_NONE;
 
 	cpumask_clear(&pm_qos_cpu_mask);
 
@@ -10152,6 +10155,17 @@ static void hdd_pld_request_bus_bandwidth(struct hdd_context *hdd_ctx,
 		hdd_debug("tx_packets: %lld, rx_packets: %lld",
 			  tx_packets, rx_packets);
 
+		/* Set affinity for tx completion grp interrupts */
+		if (tput_level >= TPUT_LEVEL_VERY_HIGH &&
+		    prev_tput_level < TPUT_LEVEL_VERY_HIGH)
+			hif_set_grp_intr_affinity(hif_ctx,
+					cdp_get_tx_rings_grp_bitmap(soc), true);
+		else if (tput_level < TPUT_LEVEL_VERY_HIGH &&
+			 prev_tput_level >= TPUT_LEVEL_VERY_HIGH)
+			hif_set_grp_intr_affinity(hif_ctx,
+				       cdp_get_tx_rings_grp_bitmap(soc), false);
+
+		prev_tput_level = tput_level;
 		hdd_ctx->cur_vote_level = next_vote_level;
 		vote_level_change = true;