瀏覽代碼

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 年之前
父節點
當前提交
1e31f26b25
共有 1 個文件被更改,包括 14 次插入0 次删除
  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;