======tso======
[[http://en.wikipedia.com/wiki/TCP_segmentation_offloading|TCP Segmentation Offload]] is supported in [[http://en.wikipedia.com/wiki/Linux|Linux]] by the network device layer. A driver that wants to offer TSO needs to set the NETIF_F_TSO bit in the network device structure. In order for a device to support TSO, it needs to also support [[https://www.linuxfoundation.org/node/add/wiki?gids[]=5066|Net:TCP checksum offloading]] and [[https://www.linuxfoundation.org/node/add/wiki?gids[]=5066|Net:Scatter Gather]].
The driver will then receive super-sized **skb'**s. These are indicated to the driver by //skb_shinfo(skb)->gso_size// being non-zero. The gso_size is the size the hardware should fragment the TCP data. TSO may change how and when TCP decides to send data.
If the driver has setup hooks in ETHTOOL_OPS() than TSO can be disabled with:
ethtool -K ethX tso off
and enabled with:
ethtool -K ethX tso on