CVSROOT:        /cvs
Module name:    src
Changes by:     bl...@cvs.openbsd.org   2023/05/22 10:08:34

Modified files:
        sys/netinet    : ip_output.c 
        sys/netinet6   : ip6_output.c 

Log message:
Fix TSO for traffic to a local address on a physical interface.

When sending TCP packets with software TSO to the local address of
a physical interface, the TCP checksum was miscalculated.  As the
small MSS is taken from the physical interface, but the large MTU
of the loopback interface is used, large TSO packets are generated,
but sent directly to the loopback interface.  There we need the
regular pseudo header checksum and not the modified without packet
length.

To avoid this confusion, use the same decision for checksum generation
in in_proto_cksum_out() as for using hardware TSO in tcp_if_output_tso().

bug reported and tested by robert@ bket@ Hrvoje Popovski
OK claudio@ jan@

Reply via email to