In a June 2006 post to the firstname.lastname@example.org mailing list, Herbert Xu explained GSO (Generic Segmentation Offload). Before GSO, Linux had separate support for Large-Send Offload (LSO) for TCP (called "TSO" or TCP Segmentation Offload) and for UDP (called "UFO" or UDP Fragmentation Offload), but only for devices that have hardware "offloading" support for these features.
The GSO code was added to the Linux kernel tree in 2.6.18.
In February 2018, a patch to the Linux kernel was submitted by Éric Dumazet (Google) to always enable GSO for TCP. The rationale is that most TCP optimizations now assume GSO is used. The immediate problem solved by this patch is that the built-in pacing for BBR became a performance bottleneck when "small" (non-GSO) segments were used.
- GSO Definition, Networking Workgroup, Linux Foundation
- GSO: Generic Segmentation Offload, Herbert Xu, LWN.net, June 2006
-- Main.SimonLeinen - 20142018-1206-2625