CVSROOT: /cvs Module name: src Changes by: j...@cvs.openbsd.org 2025/04/16 11:17:06
Modified files: sys/dev/pci : if_ixl.c sys/netinet : tcp_input.c tcp_var.h Log message: Add a software implementation of TCP Large Receive Offload. This diff adds a SoftLRO implementation in tcp_input.c as its counter part tcp_chopper() (which is a SoftTSO implementation) in tcp_output.c. We just use SoftLRO in ixl(4) for now, but default off. Because of some unclear bugs in ixl(4) and our network stack. The mbuf chain length produced by SoftLRO is limited to a maximum of 8. This avoids m_defrag() calls in which leads to races in ixl(4) tx/rx interrupts and mbuf handling. We also use the packet type field in the receive descriptors to differentiate between TCP and other Packets. So, we have two mbuf lists and non-TCP traffic it not influenced by SoftLRO. This it not necessary for all drivers, but helps to avoid a decrease of UDP bulk traffic. Thanks to all the testers: Mark Patruck, Yuichiro NAITO, Hrvoje Popovski jj@, lucas@ and bluhm@. With tweaks from dlg@ and bluhm@. ok bluhm@