Enable LRO for TCP per default in the network drivers.
authorbluhm <bluhm@openbsd.org>
Tue, 18 Jul 2023 16:01:20 +0000 (16:01 +0000)
committerbluhm <bluhm@openbsd.org>
Tue, 18 Jul 2023 16:01:20 +0000 (16:01 +0000)
commit3e1926f859efd008e94373bdb5bd5e8d9fb98874
treee17f15e19e0b5d4bcdc4e908d5b0222f38f40e25
parentf6f278519334f87945f239a56341ebddb3ec915e
Enable LRO for TCP per default in the network drivers.

Large Receive Offload allows to receive aggregated packets larger
than the MTU.  Receiving TCP streams becomes much faster.  As the
network hardware is not aware whether a packet is received locally
or to be forwarded, everything is aggregated.  In case of forwarding
it is split on output to packets not larger than the original
packets.  So path MTU discovery should still work.  If the outgoing
interface supports TSO, the packet is chopped in hardware by TCP
Segmentation Offload.

Currently only ix(4) and lo(4) devices support LRO, and ix(4) is
limited to IPv4 and hardware newer than the old 82598 model.  If
the interface is added to a tpmr(4), bridge(4) or veb(4), LRO is
automatically disabled.  All ix(4) devices support outgoing TSO for
IPv4 and IPv6.  Enabling LRO on lo(4) automatically enables TSO and
TCP packets larger than the MTU pass the loopback interface.

LRO can be turned off per interface with ifconfig -tcplro.

OK jan@
sbin/ifconfig/ifconfig.8
sys/dev/pci/if_ix.c
sys/net/if_loop.c