From ecd6a3572b21fee1d9a69e930ecbf10e12f79d05 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 13 Oct 2021 10:49:45 +0900 Subject: [PATCH] net/tcp/Kconfig: Remove NET_TCP_SPLIT While it's a neat idea, it doesn't work well in reality. * Many of modern tcp stacks don't obey the "ack every other packet" rule these days. (Linux, macOS, ...) * Even if a traditional TCP implementation is assumed, we can't predict/control which packets are acked reliably. For example, window updates can easily mess up our strategy. --- net/tcp/Kconfig | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/net/tcp/Kconfig b/net/tcp/Kconfig index e53ee05b3a..d41368b6aa 100644 --- a/net/tcp/Kconfig +++ b/net/tcp/Kconfig @@ -203,34 +203,6 @@ config NET_TCPBACKLOG_CONNS endif # NET_TCPBACKLOG -config NET_TCP_SPLIT - bool "Enable packet splitting" - default n - depends on !NET_TCP_WRITE_BUFFERS - ---help--- - send() will not return until the transfer has been ACKed by the - recipient. But under RFC 1122, the host need not ACK each packet - immediately; the host may wait for 500 MS before ACKing. This - combination can cause very slow performance with small transfers are - made to an RFC 1122 client. However, the RFC 1122 must ACK at least - every second (odd) packet. - - This option enables logic to trick the RFC 1122 host be exploiting - this last RFC 1122 requirement: If an odd number of packets were to - be sent, then send() will split the last even packet to guarantee - that an even number of packets will be sent and the RFC 1122 host - will ACK the final packet immediately. - -if NET_TCP_SPLIT - -config NET_TCP_SPLIT_SIZE - int "Split size threshold" - default 40 - ---help--- - Packets of this size or smaller than this will not be split. - -endif # NET_TCP_SPLIT - config NET_SENDFILE bool "Optimized network sendfile()" default n