TSO (TCP Segmentation Offload) is a NIC feature that moves TCP segmentation from the host CPU to the network adapter hardware. The OS passes a single large buffer (up to 64 KB) to the NIC, and the NIC splits it into MTU-sized segments with correct sequence numbers and checksums. Without TSO, the CPU must build each frame individually (IEEE 802.3; Microsoft NDLSO specification).
TSO shifts segmentation from software to hardware through four steps:
Large Buffer Submission: The OS TCP stack constructs one large send request (typically 64 KB) and passes it to the NIC driver as a single descriptor.
Descriptor Handoff: The driver programs the NIC DMA engine with the buffer address, length, and a TSO mode flag, plus a TCP header template with sequence number base and checksum seed.
Hardware Segmentation: The NIC slices the buffer into wire-MTU-sized chunks (typically 1500 bytes). For each chunk, it generates a complete Ethernet/IP/TCP frame with correct sequence number, IP ID, and checksums.
Wire Transmission: The NIC transmits frames at line rate, producing them faster than the CPU could in software.
The CPU issues one send operation instead of hundreds, cutting per-packet overhead dramatically.

CPU Reduction: TSO cuts TCP/IP stack CPU overhead by 30 to 50 percent. A 10GbE link at 1500-byte MTU generates 812,000 packets per second; without TSO, the CPU must build each one (Intel E810 datasheet, 2023).
Higher Throughput: Benchmarks on Intel E810 NICs show 10 to 20 percent throughput gains for large transfers with TSO enabled (Intel Performance Brief, 2023).
Storage and Backup Performance: iSCSI and NFS workloads transfer large contiguous data. TSO lets 25GbE NICs like the LRES1027PF-4SFP28 handle multi-gigabyte transfers with minimal CPU overhead, keeping host resources free for application work.
Virtualization Efficiency: Hypervisors sharing physical NIC ports across dozens of VMs reduce per-VM network I/O cost, enabling higher consolidation ratios on each server.
Speed Scalability: At 100GbE with 1500-byte MTU, the link produces 7.6 million packets per second, a rate no CPU can sustain without hardware offload.

LRO is the receive-path complement to TSO. TSO segments large buffers into small frames on transmit; LRO reassembles incoming frames into large buffers on receive.
GRO performs the same reassembly as LRO but in the kernel stack, making it compatible with routed and bridged traffic.
MTU defines the wire frame size. TSO does not change the wire MTU; it lets the OS submit buffers larger than the MTU and relies on the NIC to segment them. Jumbo frames (9000 bytes) combined with TSO further reduce segment count.