Meaning of tcp_delack_min
the current Linux Kernel (e.g. 2.6.36) uses Delayed Acknowledgments (delack).
In /include/net/tcp.h it says:
define TCP_DELACK_MIN ((unsigned)(HZ/25))
So, for a Kernel using a HZ value of 1000, an ACK should be delayed by a minimum of 40 ms.
However, RFC 2581 says a TCP implementation should acknowledge every second full sized segment without further delay.
Does anybody know whether the Linux Kernel follows that 'should' or whether the TCP_DELACK_MIN value means that even after a full sized segment was received, the ACK continues to be delayed until 40 ms have passed?
I researched in the source code. If I read it correctly, Linux follows the SHOULD of RFC 2581.
The relevant piece of code is contained in the function __tcp_ack_snd_check() in tcp_input.c.