Ethernet Offloading

If the network adapter(modern NIC do have this support in-build) on your system supports hardware offload functionality, the kernel can offload part of its task to the adapter and it can reduce CPU utilization. There are two types of offloads one is based on checksum and another one is on TCP segment.


Checksum offload


IP/TCP/UDP checksum is performed to make sure that the packet is correctly transferred by comparing the value of the checksum field in protocol headers and the calculated values by the packet data.


TCP segmentation offload (TSO)


When data greater than the supported maximum transmission unit (MTU) is sent to the network adapter, the data should be divided into MTU sized packets. The adapter takes care of that on behalf of the kernel.


Offload configuration


You can use the ethtool command to check the current offload configurations. For example if you want to check the status on eth0


  • # ethtool -k eth0


The output may look similar as below.





Change the configuration command syntax is as follows:


ethtool -K DEVNAME [ rx on|off ] [ tx on|off ] [ sg on|off ] [ tso on|off ] [ ufo on|off ] [ gso on|off ]


For example :

  • # ethtool -k eth0 sg on tso on gso off


NOTE : Supported offload capability might differ by network interface device, Linux distribution, kernel version, and the platform you choose. If you issue an unsupported offload parameter, you might get error messages.