Page MenuHomeFreeBSD

tcp/lro: If timestamps mismatch or it's a FIN, force flush.
ClosedPublic

Authored by sepherosa_gmail.com on Aug 4 2016, 8:50 AM.
Tags
None
Referenced Files
F82778365: D7415.id19063.diff
Thu, May 2, 1:00 PM
F82778326: D7415.id19032.diff
Thu, May 2, 12:59 PM
F82771235: D7415.id.diff
Thu, May 2, 11:21 AM
F82770574: D7415.id19031.diff
Thu, May 2, 11:12 AM
F82768920: D7415.diff
Thu, May 2, 10:48 AM
Unknown Object (File)
Thu, Apr 25, 9:22 AM
Unknown Object (File)
Mar 2 2024, 5:31 AM
Unknown Object (File)
Mar 2 2024, 5:30 AM
Subscribers

Details

Summary
This keeps the segments/ACK/FIN delivery order.

Before this patch, it was observed: if A sent FIN immediately after
an ACK, B would deliver FIN first to the TCP stack, then the ACK.
This out-of-order delivery causes one unnecessary ACK sent from B.

Obtained from:  gallatin, rrs

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

sepherosa_gmail.com retitled this revision from to tcp/lro: If timestamps mismatch or it's a FIN, force flush..
sepherosa_gmail.com updated this object.
sepherosa_gmail.com edited the test plan for this revision. (Show Details)
sys/netinet/tcp_lro.c
852 ↗(On Diff #19031)

Should there be added:

if (force_flush)

return (TCP_LRO_CANNOT);

If no match is found in the list?

sys/netinet/tcp_lro.c
852 ↗(On Diff #19031)

Ah, yeah, it was in the original patch from rrs, got lost by me :P

Don't create entry for segments cant be further aggregated/delayed. Noticed-by: hps

hselasky edited edge metadata.

Looks good to me.

--HPS

gallatin edited edge metadata.
This revision was automatically updated to reflect the committed changes.