]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
LRO: Fix lost packets when merging 1 payload with an ACK
authorRyan Stone <rstone@FreeBSD.org>
Fri, 31 Dec 2021 17:56:20 +0000 (12:56 -0500)
committerRyan Stone <rstone@FreeBSD.org>
Thu, 13 Jan 2022 16:17:48 +0000 (11:17 -0500)
commit24fe6643dac0780dc02676626f70052e525b9b22
tree6b492282043e171df4bc253a9d7b2e2dd53818bb
parent7d06c761c8ab210e0bb0644a65be1c81ea521bea
LRO: Fix lost packets when merging 1 payload with an ACK

To check if it needed to regenerate a packet's header before
sending it up the stack, LRO was checking if more than one payload
had been merged into the packet.  This failed in the case where
a single payload was merged with one or more pure ACKs.  This
results in lost ACKs.

Fix this by precisely tracking whether header regeneration is
required instead of using an incorrect heuristic.

Found with: Sysunit test
Differential Revision: https://reviews.freebsd.org/D33774
Reviewed by: rrs
sys/netinet/tcp_lro.c
sys/netinet/tcp_lro.h