diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index 2a45634ac826..19f1ec682dfa 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -8012,6 +8012,25 @@ enum hdd_link_speed_rpt_type { #define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_DEFAULT (100) #define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN (0) #define CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX (10000) +/* + * + * gTcpAdvWinScaleEnable - Control to enable TCP adv window scaling + * @Min: -0 + * @Max: 1 + * @Default: 1 + * + * This ini is used to enable dynamic configuration of TCP adv window scaling system parameter. + * + * Supported Feature: Tcp Advance Window Scaling + * + * Usage: Internal + * + * + */ +#define CFG_ENABLE_TCP_ADV_WIN_SCALE "gTcpAdvWinScaleEnable" +#define CFG_ENABLE_TCP_ADV_WIN_SCALE_DEFAULT (1) +#define CFG_ENABLE_TCP_ADV_WIN_SCALE_MIN (0) +#define CFG_ENABLE_TCP_ADV_WIN_SCALE_MAX (1) /* * @@ -14040,6 +14059,7 @@ struct hdd_config { uint32_t busBandwidthLowThreshold; uint32_t busBandwidthComputeInterval; uint32_t enable_tcp_delack; + uint32_t enable_tcp_adv_win_scale; uint32_t tcpDelackThresholdHigh; uint32_t tcpDelackThresholdLow; uint32_t tcp_tx_high_tput_thres; diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index c79da6d2e0dd..96bbd5580e85 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -3210,6 +3210,13 @@ struct reg_table_entry g_registry_table[] = { CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN, CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX), + REG_VARIABLE(CFG_ENABLE_TCP_ADV_WIN_SCALE, WLAN_PARAM_Integer, + struct hdd_config, enable_tcp_adv_win_scale, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_ENABLE_TCP_ADV_WIN_SCALE_DEFAULT, + CFG_ENABLE_TCP_ADV_WIN_SCALE_MIN, + CFG_ENABLE_TCP_ADV_WIN_SCALE_MAX), + REG_VARIABLE(CFG_ENABLE_TCP_DELACK, WLAN_PARAM_Integer, struct hdd_config, enable_tcp_delack, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -6571,6 +6578,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx) hdd_ctx->config->busBandwidthLowThreshold); hdd_debug("Name = [gbusBandwidthComputeInterval] Value = [%u] ", hdd_ctx->config->busBandwidthComputeInterval); + hdd_debug("Name = [%s] Value = [%u] ", + CFG_ENABLE_TCP_ADV_WIN_SCALE, + hdd_ctx->config->enable_tcp_adv_win_scale); hdd_debug("Name = [%s] Value = [%u] ", CFG_ENABLE_TCP_DELACK, hdd_ctx->config->enable_tcp_delack); diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 9568bac393a2..ade06d2cef33 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -6508,7 +6508,9 @@ static void hdd_pld_request_bus_bandwidth(struct hdd_context *hdd_ctx, if (hdd_ctx->config->enable_tcp_delack) rx_tp_data.rx_tp_flags |= TCP_DEL_ACK_IND; - rx_tp_data.rx_tp_flags |= TCP_ADV_WIN_SCL; + if (hdd_ctx->config->enable_tcp_adv_win_scale) + rx_tp_data.rx_tp_flags |= TCP_ADV_WIN_SCL; + rx_tp_data.level = next_rx_level; wlan_hdd_send_svc_nlink_msg(hdd_ctx->radio_index, WLAN_SVC_WLAN_TP_IND, &rx_tp_data,