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:
Manjunathappa Prakash
2017-10-09 01:41:58 -07:00
committed by snandini
부모 7b6cb00b26
커밋 81ca3a55b2
2개의 변경된 파일20개의 추가작업 그리고 2개의 파일을 삭제

파일 보기

@@ -1764,6 +1764,7 @@ struct hdd_context {
int user_configured_pkt_filter_rules;
bool is_fils_roaming_supported;
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;
}
if (hdd_ctx->config->enable_tcp_delack) {
hdd_ctx->en_tcp_delack_no_lro = 0;
hdd_reset_tcp_delack(hdd_ctx);
}
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);
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);
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);
}
}