On Sat, Jul 08, 2023 at 05:15:26PM +0300, Alexander Bluhm wrote: > I am not aware of any more limitations when enabling LRO for TCP > in the network drivers. The feature allows to receive agregated > 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 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. > > Currently only ix(4) and lo(4) support LRO, and ix(4) is limited > to IPv4 and newer than the old 82598 model. If the interface is > added to a bridge(4) or aggr(4), LRO is automatically disabled.
I guess you mean veb(4) not aggr(4). We just avoid the in heritage of the LRO capability in aggr(4) but are using the feature. > So in case you possess any ix(4) hardware or do funky pf routing > on lo(4) please run this diff. If you encounter problems, report > and turn LRO off per interface with ifconfig -tcplro. Diff looks fine to me. I just would keep mentioning the default behavior in the manpage like this: ok jan@ Index: sbin/ifconfig/ifconfig.8 =================================================================== RCS file: /cvs/src/sbin/ifconfig/ifconfig.8,v retrieving revision 1.397 diff -u -p -r1.397 ifconfig.8 --- sbin/ifconfig/ifconfig.8 7 Jun 2023 18:42:40 -0000 1.397 +++ sbin/ifconfig/ifconfig.8 10 Jul 2023 11:54:47 -0000 @@ -517,9 +517,9 @@ It is not possible to use LRO with inter or .Xr tpmr 4 . Changing this option will re-initialize the network interface. +LRO is enabled by default. .It Cm -tcplro Disable LRO. -LRO is disabled by default. .It Cm up Mark an interface .Dq up . > Index: sys/dev/pci/if_ix.c > =================================================================== > RCS file: /data/mirror/openbsd/cvs/src/sys/dev/pci/if_ix.c,v > retrieving revision 1.198 > diff -u -p -r1.198 if_ix.c > --- sys/dev/pci/if_ix.c 8 Jul 2023 09:01:30 -0000 1.198 > +++ sys/dev/pci/if_ix.c 8 Jul 2023 13:51:26 -0000 > @@ -1925,8 +1925,10 @@ ixgbe_setup_interface(struct ix_softc *s > ifp->if_capabilities |= IFCAP_CSUM_IPv4; > > ifp->if_capabilities |= IFCAP_TSOv4 | IFCAP_TSOv6; > - if (sc->hw.mac.type != ixgbe_mac_82598EB) > + if (sc->hw.mac.type != ixgbe_mac_82598EB) { > + ifp->if_xflags |= IFXF_LRO; > ifp->if_capabilities |= IFCAP_LRO; > + } > > /* > * Specify the media types supported by this sc and register > Index: sys/net/if_loop.c > =================================================================== > RCS file: /data/mirror/openbsd/cvs/src/sys/net/if_loop.c,v > retrieving revision 1.95 > diff -u -p -r1.95 if_loop.c > --- sys/net/if_loop.c 2 Jul 2023 19:59:15 -0000 1.95 > +++ sys/net/if_loop.c 8 Jul 2023 13:51:26 -0000 > @@ -172,11 +172,11 @@ loop_clone_create(struct if_clone *ifc, > ifp->if_softc = NULL; > ifp->if_mtu = LOMTU; > ifp->if_flags = IFF_LOOPBACK | IFF_MULTICAST; > - ifp->if_xflags = IFXF_CLONED; > + ifp->if_xflags = IFXF_CLONED | IFXF_LRO; > ifp->if_capabilities = IFCAP_CSUM_IPv4 | > IFCAP_CSUM_TCPv4 | IFCAP_CSUM_UDPv4 | > IFCAP_CSUM_TCPv6 | IFCAP_CSUM_UDPv6 | > - IFCAP_LRO; > + IFCAP_LRO | IFCAP_TSOv4 | IFCAP_TSOv6; > ifp->if_rtrequest = lortrequest; > ifp->if_ioctl = loioctl; > ifp->if_input = loinput; > Index: sbin/ifconfig/ifconfig.8 > =================================================================== > RCS file: /data/mirror/openbsd/cvs/src/sbin/ifconfig/ifconfig.8,v > retrieving revision 1.397 > diff -u -p -r1.397 ifconfig.8 > --- sbin/ifconfig/ifconfig.8 7 Jun 2023 18:42:40 -0000 1.397 > +++ sbin/ifconfig/ifconfig.8 7 Jul 2023 19:57:09 -0000 > @@ -519,7 +519,6 @@ or > Changing this option will re-initialize the network interface. > .It Cm -tcplro > Disable LRO. > -LRO is disabled by default. > .It Cm up > Mark an interface > .Dq up . >