Pārlūkot izejas kodu

qcacld-3.0: Vote performance qos for high throughput use case

With WLAN use case, FPC(Fast Power Collapse) wakeup latency is
too long. Then some use case, FPC feature break performance.
To ensure CPU wakeup, if detected high throughput, vote for
performance qos not to activate FPC.

Change-Id: I4a8dca19ce32944769e85ba5beeae93bb49b29a9
CRs-fixed: 1026370
Nirav Shah 8 gadi atpakaļ
vecāks
revīzija
ffc6a094b4
2 mainītis faili ar 10 papildinājumiem un 0 dzēšanām
  1. 1 0
      core/hdd/inc/wlan_hdd_main.h
  2. 9 0
      core/hdd/src/wlan_hdd_main.c

+ 1 - 0
core/hdd/inc/wlan_hdd_main.h

@@ -1430,6 +1430,7 @@ struct hdd_context_s {
 
 	/* the radio index assigned by cnss_logger */
 	int radio_index;
+	bool hbw_requested;
 };
 
 /*---------------------------------------------------------------------------

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

@@ -4679,10 +4679,19 @@ void hdd_pld_request_bus_bandwidth(hdd_context_t *hdd_ctx,
 		hdd_ctx->cur_vote_level = next_vote_level;
 		pld_request_bus_bandwidth(hdd_ctx->parent_dev, next_vote_level);
 		if (next_vote_level == PLD_BUS_WIDTH_LOW) {
+			if (hdd_ctx->hbw_requested) {
+				pld_remove_pm_qos(hdd_ctx->parent_dev);
+				hdd_ctx->hbw_requested = false;
+			}
 			if (cds_sched_handle_throughput_req(false))
 				hdd_log(LOGE,
 				   FL("low bandwidth set rx affinity fail"));
 		 } else {
+			if (!hdd_ctx->hbw_requested) {
+				pld_request_pm_qos(hdd_ctx->parent_dev, 1);
+				hdd_ctx->hbw_requested = true;
+			}
+
 			if (cds_sched_handle_throughput_req(true))
 				hdd_log(LOGE,
 				   FL("high bandwidth set rx affinity fail"));