net: stmmac: enable TSO for IPv6
authorNiklas Cassel <niklas.cassel@axis.com>
Mon, 19 Jun 2017 16:36:44 +0000 (18:36 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Jun 2017 19:18:47 +0000 (15:18 -0400)
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>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

index 6a1cb59728fe54dbc8cc63e1d1e32fcc97e80f00..fefbf817399ab524c27cc89b9034509986a492ef 100644 (file)
@@ -2965,7 +2965,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
 
        /* 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);
        }
 
@@ -4126,7 +4126,7 @@ int stmmac_dvr_probe(struct device *device,
                            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");
        }