summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirav Shah <nnshah@codeaurora.org>2016-06-09 16:09:08 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2016-07-06 13:30:30 -0700
commitffc6a094b47b33c5bc734ed9d2638d7242013c0d (patch)
treec9324ab1b251b00a966f6603ddfb68138d2ad2b5
parent3bbfa5140437f1629dbbb1606992877f914e8e93 (diff)
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
-rw-r--r--core/hdd/inc/wlan_hdd_main.h1
-rw-r--r--core/hdd/src/wlan_hdd_main.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h
index 3e311ecff5c3..1707474991ce 100644
--- a/core/hdd/inc/wlan_hdd_main.h
+++ b/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;
};
/*---------------------------------------------------------------------------
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 0d0727264105..6ced63e18900 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/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"));