TCP Segmentation Offload is supported in 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 Net:TCP checksum offloading and 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