diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 3e311ecff5..1707474991 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 0d07272641..6ced63e189 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"));