qcacld-3.0: Disable TCP delayed ack if LRO is enabled
Coexistence of TCP delayed ack and LRO could be detrimental with a smaller window size. So disable TCP delayed ack dynamically if LRO is enabled. Change-Id: I0660e78269da548bc3a5ad0ed6b8f3865046b8b4 CRs-Fixed: 1114687
This commit is contained in:

committed by
snandini

parent
7b6cb00b26
commit
81ca3a55b2
@@ -1764,6 +1764,7 @@ struct hdd_context {
|
|||||||
int user_configured_pkt_filter_rules;
|
int user_configured_pkt_filter_rules;
|
||||||
bool is_fils_roaming_supported;
|
bool is_fils_roaming_supported;
|
||||||
qdf_atomic_t disable_lro_in_concurrency;
|
qdf_atomic_t disable_lro_in_concurrency;
|
||||||
|
bool en_tcp_delack_no_lro;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -109,6 +109,10 @@ int hdd_lro_init(struct hdd_context *hdd_ctx)
|
|||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hdd_ctx->config->enable_tcp_delack) {
|
||||||
|
hdd_ctx->en_tcp_delack_no_lro = 0;
|
||||||
|
hdd_reset_tcp_delack(hdd_ctx);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,8 +219,21 @@ void hdd_disable_lro_in_concurrency(bool disable)
|
|||||||
{
|
{
|
||||||
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
|
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
|
||||||
|
|
||||||
if (disable)
|
if (disable) {
|
||||||
|
if (hdd_ctx->en_tcp_delack_no_lro) {
|
||||||
|
hdd_info("Enable TCP delack as LRO disabled in concurrency");
|
||||||
|
wlan_hdd_send_svc_nlink_msg(hdd_ctx->radio_index,
|
||||||
|
WLAN_SVC_WLAN_TP_IND, &hdd_ctx->cur_rx_level,
|
||||||
|
sizeof(hdd_ctx->cur_rx_level));
|
||||||
|
hdd_ctx->en_tcp_delack_no_lro = 1;
|
||||||
|
}
|
||||||
qdf_atomic_set(&hdd_ctx->disable_lro_in_concurrency, 1);
|
qdf_atomic_set(&hdd_ctx->disable_lro_in_concurrency, 1);
|
||||||
else
|
} else {
|
||||||
|
if (hdd_ctx->en_tcp_delack_no_lro) {
|
||||||
|
hdd_info("Disable TCP delack as LRO is enabled");
|
||||||
|
hdd_ctx->en_tcp_delack_no_lro = 0;
|
||||||
|
hdd_reset_tcp_delack(hdd_ctx);
|
||||||
|
}
|
||||||
qdf_atomic_set(&hdd_ctx->disable_lro_in_concurrency, 0);
|
qdf_atomic_set(&hdd_ctx->disable_lro_in_concurrency, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user