How should TCP LRO handle TH_PUSH?

From: Ryan Stone <>
Date: Thu, 06 Jan 2022 23:10:11 UTC
I've been working on writing unit tests for LRO (see my message to
freebsd-testing@ for more details on this).  I've submitted reviews
for two issues found by my tests that I believe to be outright bugs.
I did find one more issue where I'm not sure whether it's really a bug
or not.  If LRO sees a TCP packet that does not have TH_PUSH set, and
then merges a subsequent packet that does have TH_PUSH set into it,
what should the value of the TH_PUSH flag in the merged packet be?

When I wrote my test I expected to see TH_PUSH set, but that isn't our
current behaviour.  On the one hand I'm not sure that this is strictly
correct, but on the other hand I don't think we do anything with
TH_PUSH on a received packet anyway.  I did code up a proposed fix for
this, but I wanted to get feedback as to whether it's worth worrying
about before sending the review.  Does anybody have any opinions?