diff --git a/ipa/core/src/wlan_ipa_core.c b/ipa/core/src/wlan_ipa_core.c index 8ccdf50b30..79f49cc0b8 100644 --- a/ipa/core/src/wlan_ipa_core.c +++ b/ipa/core/src/wlan_ipa_core.c @@ -1160,6 +1160,12 @@ QDF_STATUS wlan_ipa_suspend(struct wlan_ipa_priv *ipa_ctx) ipa_ctx->suspended = true; qdf_spin_unlock_bh(&ipa_ctx->pm_lock); + if (ipa_ctx->config->ipa_force_voting && + !ipa_ctx->ipa_pipes_down) + wlan_ipa_set_perf_level(ipa_ctx, + ipa_ctx->config->bus_bw_high, + ipa_ctx->config->bus_bw_high); + return QDF_STATUS_SUCCESS; } diff --git a/ipa/core/src/wlan_ipa_main.c b/ipa/core/src/wlan_ipa_main.c index fadf08963d..e8f4a7a365 100644 --- a/ipa/core/src/wlan_ipa_main.c +++ b/ipa/core/src/wlan_ipa_main.c @@ -635,6 +635,8 @@ void ipa_component_config_update(struct wlan_objmgr_psoc *psoc) cfg_get(psoc, CFG_DP_BUS_BANDWIDTH_MEDIUM_THRESHOLD); g_ipa_config->bus_bw_low = cfg_get(psoc, CFG_DP_BUS_BANDWIDTH_LOW_THRESHOLD); + g_ipa_config->ipa_force_voting = + cfg_get(psoc, CFG_DP_IPA_ENABLE_FORCE_VOTING); } uint32_t ipa_get_tx_buf_count(void) diff --git a/ipa/dispatcher/inc/cfg_ipa.h b/ipa/dispatcher/inc/cfg_ipa.h index 085367967c..4fc90e0a3f 100644 --- a/ipa/dispatcher/inc/cfg_ipa.h +++ b/ipa/dispatcher/inc/cfg_ipa.h @@ -155,6 +155,25 @@ 100, \ CFG_VALUE_OR_DEFAULT, "IPA low bw threshold") +/* + * + * gIPAForceVotingEnable - IPA force voting enable + * @Default: false + * + * This ini specifies to enable IPA force voting + * + * Related: N/A + * + * Supported Feature: IPA + * + * Usage: Internal + * + * + */ +#define CFG_DP_IPA_ENABLE_FORCE_VOTING \ + CFG_INI_BOOL("gIPAForceVotingEnable", \ + false, "Ctrl to enable force voting") + /* * * IpaUcTxBufCount - IPA tx buffer count @@ -185,6 +204,7 @@ CFG(CFG_DP_IPA_HIGH_BANDWIDTH_MBPS) \ CFG(CFG_DP_IPA_MEDIUM_BANDWIDTH_MBPS) \ CFG(CFG_DP_IPA_LOW_BANDWIDTH_MBPS) \ + CFG(CFG_DP_IPA_ENABLE_FORCE_VOTING) \ CFG(CFG_DP_IPA_UC_TX_BUF_COUNT) #endif /* _CFG_IPA_H_ */ diff --git a/ipa/dispatcher/inc/wlan_ipa_public_struct.h b/ipa/dispatcher/inc/wlan_ipa_public_struct.h index ca3a01faf1..c86ee4b363 100644 --- a/ipa/dispatcher/inc/wlan_ipa_public_struct.h +++ b/ipa/dispatcher/inc/wlan_ipa_public_struct.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2018, 2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -38,6 +38,7 @@ * @ipa_bw_high: IPA bandwidth high threshold * @ipa_bw_medium: IPA bandwidth medium threshold * @ipa_bw_low: IPA bandwidth low threshold + * @ipa_force_voting: support force bw voting */ struct wlan_ipa_config { uint32_t ipa_config; @@ -49,6 +50,7 @@ struct wlan_ipa_config { uint32_t ipa_bw_high; uint32_t ipa_bw_medium; uint32_t ipa_bw_low; + bool ipa_force_voting; }; /**