net: Fix netdev_fix_features so that TSO_MANGLEID is only available with TSO
authorAlexander Duyck <aduyck@mirantis.com>
Mon, 2 May 2016 16:38:24 +0000 (09:38 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 May 2016 17:32:27 +0000 (13:32 -0400)
This change makes it so that we will strip the TSO_MANGLEID bit if TSO is
not present.  This way we will also handle ECN correctly of TSO is not
present.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index 673d1f118bfb36d5fb579f4fa30542da956719c1..e98ba63fe2800c10d4d407f12d11ca8975dc1e8e 100644 (file)
@@ -6721,6 +6721,10 @@ static netdev_features_t netdev_fix_features(struct net_device *dev,
                features &= ~NETIF_F_TSO6;
        }
 
+       /* TSO with IPv4 ID mangling requires IPv4 TSO be enabled */
+       if ((features & NETIF_F_TSO_MANGLEID) && !(features & NETIF_F_TSO))
+               features &= ~NETIF_F_TSO_MANGLEID;
+
        /* TSO ECN requires that TSO is present as well. */
        if ((features & NETIF_F_ALL_TSO) == NETIF_F_TSO_ECN)
                features &= ~NETIF_F_TSO_ECN;