qcacld-3.0: Add INI to control tcp_limit_output_bytes tuning

Current driver posts the high and low Tx TPUT indications to cnss-daemon to
tune  the tcp_limit_output_byte system parameter. Add option to disable it.

Change-Id: Ic65fe0bd762024425cabf2f1f07123211dce5dce
CRs-Fixed: 2197112
This commit is contained in:
Prakash Manjunathappa
2018-02-27 18:56:22 -08:00
committed by Nitesh Shrivastav
parent a63fc0c2e3
commit e73e3b57db
3 changed files with 36 additions and 1 deletions

View File

@@ -8267,6 +8267,29 @@ enum hdd_link_speed_rpt_type {
#define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_DEFAULT (100) #define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_DEFAULT (100)
#define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN (0) #define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN (0)
#define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX (10000) #define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX (10000)
/*
* <ini>
* gEnableTcpLimitOutput - Control to enable TCP limit output byte
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to enable dynamic configuration of TCP limit output bytes
* tcp_limit_output_bytes param. Enabling this will let driver post message to
* cnss-daemon, accordingly cnss-daemon will modify the tcp_limit_output_bytes.
*
* Supported Feature: Tcp limit output bytes
*
* Usage: Internal
*
* </ini>
*/
#define CFG_ENABLE_TCP_LIMIT_OUTPUT "gTcpLimitOutputEnable"
#define CFG_ENABLE_TCP_LIMIT_OUTPUT_DEFAULT (1)
#define CFG_ENABLE_TCP_LIMIT_OUTPUT_MIN (0)
#define CFG_ENABLE_TCP_LIMIT_OUTPUT_MAX (1)
/* /*
* <ini> * <ini>
* gTcpAdvWinScaleEnable - Control to enable TCP adv window scaling * gTcpAdvWinScaleEnable - Control to enable TCP adv window scaling
@@ -14883,6 +14906,7 @@ struct hdd_config {
uint32_t busBandwidthLowThreshold; uint32_t busBandwidthLowThreshold;
uint32_t busBandwidthComputeInterval; uint32_t busBandwidthComputeInterval;
uint32_t enable_tcp_delack; uint32_t enable_tcp_delack;
bool enable_tcp_limit_output;
uint32_t enable_tcp_adv_win_scale; uint32_t enable_tcp_adv_win_scale;
uint32_t tcpDelackThresholdHigh; uint32_t tcpDelackThresholdHigh;
uint32_t tcpDelackThresholdLow; uint32_t tcpDelackThresholdLow;

View File

@@ -3217,6 +3217,13 @@ struct reg_table_entry g_registry_table[] = {
CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN, CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN,
CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX), CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX),
REG_VARIABLE(CFG_ENABLE_TCP_LIMIT_OUTPUT, WLAN_PARAM_Integer,
struct hdd_config, enable_tcp_limit_output,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_TCP_LIMIT_OUTPUT_DEFAULT,
CFG_ENABLE_TCP_LIMIT_OUTPUT_MIN,
CFG_ENABLE_TCP_LIMIT_OUTPUT_MAX),
REG_VARIABLE(CFG_ENABLE_TCP_ADV_WIN_SCALE, WLAN_PARAM_Integer, REG_VARIABLE(CFG_ENABLE_TCP_ADV_WIN_SCALE, WLAN_PARAM_Integer,
struct hdd_config, enable_tcp_adv_win_scale, struct hdd_config, enable_tcp_adv_win_scale,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -6877,6 +6884,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
hdd_ctx->config->busBandwidthLowThreshold); hdd_ctx->config->busBandwidthLowThreshold);
hdd_debug("Name = [gbusBandwidthComputeInterval] Value = [%u] ", hdd_debug("Name = [gbusBandwidthComputeInterval] Value = [%u] ",
hdd_ctx->config->busBandwidthComputeInterval); hdd_ctx->config->busBandwidthComputeInterval);
hdd_debug("Name = [%s] Value = [%u] ",
CFG_ENABLE_TCP_LIMIT_OUTPUT,
hdd_ctx->config->enable_tcp_limit_output);
hdd_debug("Name = [%s] Value = [%u] ", hdd_debug("Name = [%s] Value = [%u] ",
CFG_ENABLE_TCP_ADV_WIN_SCALE, CFG_ENABLE_TCP_ADV_WIN_SCALE,
hdd_ctx->config->enable_tcp_adv_win_scale); hdd_ctx->config->enable_tcp_adv_win_scale);

View File

@@ -6931,7 +6931,8 @@ static void hdd_pld_request_bus_bandwidth(struct hdd_context *hdd_ctx,
else else
next_tx_level = WLAN_SVC_TP_LOW; next_tx_level = WLAN_SVC_TP_LOW;
if (hdd_ctx->cur_tx_level != next_tx_level) { if ((hdd_ctx->config->enable_tcp_limit_output) &&
(hdd_ctx->cur_tx_level != next_tx_level)) {
hdd_debug("change TCP TX trigger level %d, average_tx: %llu", hdd_debug("change TCP TX trigger level %d, average_tx: %llu",
next_tx_level, temp_tx); next_tx_level, temp_tx);
hdd_ctx->cur_tx_level = next_tx_level; hdd_ctx->cur_tx_level = next_tx_level;