]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/commit
MFC r256920
authorhiren <hiren@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Thu, 10 Jul 2014 21:02:58 +0000 (21:02 +0000)
committerhiren <hiren@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Thu, 10 Jul 2014 21:02:58 +0000 (21:02 +0000)
commit9a5a60d6ec691eb9f037017050817e7257ccd4dd
tree5658695f8b5a46198688a9edaeadab63ece179f6
parent6ae00d8c139b1aa46ac0bab2c9b40abe9afd4940
MFC r256920

The TCP delayed ACK logic isn't aware of LRO passing up large aggregated
segments thinking it received only one segment. This causes it to enable
the delay the ACK for 100ms to wait for another segment which may never
come because all the data was received already.

Doing delayed ACK for LRO segments is bogus for two reasons: a) it pushes
us further away from acking every other packet; b) it introduces additional
delay in responding to the sender.  The latter is especially bad because it
is in the nature of LRO to aggregated all segments of a burst with no more
coming until an ACK is sent back.

Change the delayed ACK logic to detect LRO segments by being larger than
the MSS for this connection and issuing an immediate ACK for them to keep
the ACK clock ticking without interruption.

git-svn-id: svn://svn.freebsd.org/base/stable/9@268506 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/netinet/tcp_input.c