diff options
| author | Manjunathappa Prakash <prakashpm@codeaurora.org> | 2018-01-15 17:54:10 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-01-22 14:54:29 -0800 |
| commit | 4d88dd75eb58a7bbdaa23f0ddf40b1844825c121 (patch) | |
| tree | 835329bb3864d7268ba9553fa412aad7c03a2d97 | |
| parent | d41153e3b9c09c561040e9f34502aeef445e18ec (diff) | |
qcacld-3.0: Disable TCP delack if GRO is enabled
Takecare to disable TCP delack internally if GRO is enabled.
This is required as enabling both will have adverse effect with
smaller window size and noisy scenario.
Change-Id: If91236620d87287c9b71901e9d8e3d176eebc648
CRs-Fixed: 2172652
| -rw-r--r-- | core/hdd/inc/wlan_hdd_main.h | 1 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_lro.c | 11 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_main.c | 4 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_tx_rx.c | 10 |
4 files changed, 13 insertions, 13 deletions
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 74351bf9f763..f36186282471 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -2079,6 +2079,7 @@ struct hdd_context_s { bool hbw_requested; uint32_t last_nil_scan_bug_report_timestamp; uint32_t ol_enable; + uint32_t tcp_delack_on; #ifdef WLAN_FEATURE_NAN_DATAPATH bool nan_datapath_enabled; #endif diff --git a/core/hdd/src/wlan_hdd_lro.c b/core/hdd/src/wlan_hdd_lro.c index 81dde75398ee..0f095ec34263 100644 --- a/core/hdd/src/wlan_hdd_lro.c +++ b/core/hdd/src/wlan_hdd_lro.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2015-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -498,11 +498,6 @@ int hdd_lro_enable(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter) adapter->dev->features |= NETIF_F_LRO; - if (hdd_ctx->config->enable_tcp_delack) { - hdd_ctx->config->enable_tcp_delack = 0; - hdd_reset_tcp_delack(hdd_ctx); - } - hdd_debug("LRO Enabled"); return 0; @@ -670,7 +665,7 @@ hdd_lro_set_reset(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter, adapter->dev->features &= ~NETIF_F_LRO; hdd_debug("LRO Disabled"); - if (!hdd_ctx->config->enable_tcp_delack) { + if (hdd_ctx->config->enable_tcp_delack) { struct wlan_rx_tp_data rx_tp_data; hdd_debug("Enable TCP delack as LRO is disabled."); @@ -679,7 +674,7 @@ hdd_lro_set_reset(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter, wlan_hdd_send_svc_nlink_msg(hdd_ctx->radio_index, WLAN_SVC_WLAN_TP_IND, &rx_tp_data, sizeof(rx_tp_data)); - hdd_ctx->config->enable_tcp_delack = 1; + hdd_ctx->tcp_delack_on = 1; } } return 0; diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 907d2ed3e583..f0d0aafc944a 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -6764,7 +6764,7 @@ static void hdd_pld_request_bus_bandwidth(hdd_context_t *hdd_ctx, * to default delayed ack. Note that this will disable the * dynamic delayed ack mechanism across the system */ - if (hdd_ctx->config->enable_tcp_delack) + if (hdd_ctx->tcp_delack_on) rx_tp_data.rx_tp_flags |= TCP_DEL_ACK_IND; if (hdd_ctx->config->enable_tcp_adv_win_scale) @@ -7050,7 +7050,7 @@ void wlan_hdd_display_tx_rx_histogram(hdd_context_t *hdd_ctx) hdd_ctx->config->busBandwidthMediumThreshold, hdd_ctx->config->busBandwidthLowThreshold); hdd_debug("Enable TCP DEL ACK: %d", - hdd_ctx->config->enable_tcp_delack); + hdd_ctx->tcp_delack_on); hdd_debug("TCP DEL High TH: %d TCP DEL Low TH: %d", hdd_ctx->config->tcpDelackThresholdHigh, hdd_ctx->config->tcpDelackThresholdLow); diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 93e2fad23b7b..d4094c3f1d93 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -1613,6 +1613,8 @@ static inline void hdd_register_rx_ol(void) return; } + hdd_ctx->tcp_delack_on = 0; + if (hdd_ctx->ol_enable == CFG_LRO_ENABLED) { hdd_ctx->receive_offload_cb = hdd_lro_rx; /* Register the flush callback */ @@ -1623,6 +1625,8 @@ static inline void hdd_register_rx_ol(void) if (hdd_ctx->enableRxThread) hdd_create_napi_for_rxthread(); hdd_debug("GRO is enabled"); + } else if (hdd_ctx->config->enable_tcp_delack) { + hdd_ctx->tcp_delack_on = 1; } } @@ -1719,7 +1723,7 @@ void hdd_enable_rx_ol_in_concurrency(hdd_context_t *hdd_ctx) { if (hdd_ctx->config->enable_tcp_delack) { hdd_debug("Disable TCP delack as Rx Offload is enabled"); - hdd_ctx->config->enable_tcp_delack = 0; + hdd_ctx->tcp_delack_on = 0; hdd_reset_tcp_delack(hdd_ctx); } qdf_atomic_set(&hdd_ctx->disable_lro_in_concurrency, 0); @@ -1733,7 +1737,7 @@ void hdd_enable_rx_ol_in_concurrency(hdd_context_t *hdd_ctx) */ void hdd_disable_rx_ol_in_concurrency(hdd_context_t *hdd_ctx) { - if (!hdd_ctx->config->enable_tcp_delack) { + if (hdd_ctx->config->enable_tcp_delack) { struct wlan_rx_tp_data rx_tp_data = {0}; hdd_debug("Enable TCP delack as Rx offload disabled in concurrency"); @@ -1741,7 +1745,7 @@ void hdd_disable_rx_ol_in_concurrency(hdd_context_t *hdd_ctx) rx_tp_data.level = hdd_ctx->cur_rx_level; wlan_hdd_send_svc_nlink_msg(hdd_ctx->radio_index, WLAN_SVC_WLAN_TP_IND, &rx_tp_data, sizeof(rx_tp_data)); - hdd_ctx->config->enable_tcp_delack = 1; + hdd_ctx->tcp_delack_on = 1; } qdf_atomic_set(&hdd_ctx->disable_lro_in_concurrency, 1); } |
