There is nothing in the IP that prevents us from enabling TSO for IPv6.
Before patch:
ftp fe80::2aa:bbff:fecc:1336%eth0
ftp> get /dev/zero
882512708 bytes received in 00:14 (56.11 MiB/s)
After patch:
ftp fe80::2aa:bbff:fecc:1336%eth0
ftp> get /dev/zero
1203326784 bytes received in 00:12 (94.52 MiB/s)
Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 
        /* Manage oversized TCP frames for GMAC4 device */
        if (skb_is_gso(skb) && priv->tso) {
-               if (ip_hdr(skb)->protocol == IPPROTO_TCP)
+               if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))
                        return stmmac_tso_xmit(skb, dev);
        }
 
                            NETIF_F_RXCSUM;
 
        if ((priv->plat->tso_en) && (priv->dma_cap.tsoen)) {
-               ndev->hw_features |= NETIF_F_TSO;
+               ndev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6;
                priv->tso = true;
                dev_info(priv->device, "TSO feature enabled\n");
        }