net/mlx5e: Add missing capability bit check for IP-in-IP
authorMarina Varshaver <marinav@mellanox.com>
Tue, 19 Nov 2019 16:52:13 +0000 (18:52 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Wed, 20 Nov 2019 20:33:06 +0000 (12:33 -0800)
Device that doesn't support IP-in-IP offloads has to filter csum and gso
offload support, otherwise kernel will conclude that device is capable of
offloading csum and gso for IP-in-IP tunnels and that might result in
IP-in-IP tunnel not functioning.

Fixes: 25948b87dda2 ("net/mlx5e: Support TSO and TX checksum offloads for IP-in-IP")
Signed-off-by: Marina Varshaver <marinav@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_main.c

index 772bfdbdeb9c601f93354a654f02163c6db3fc17..2a56e66f58d86d44913a8d9f7c30b1381ad76187 100644 (file)
@@ -4252,9 +4252,12 @@ static netdev_features_t mlx5e_tunnel_features_check(struct mlx5e_priv *priv,
 
        switch (proto) {
        case IPPROTO_GRE:
+               return features;
        case IPPROTO_IPIP:
        case IPPROTO_IPV6:
-               return features;
+               if (mlx5e_tunnel_proto_supported(priv->mdev, IPPROTO_IPIP))
+                       return features;
+               break;
        case IPPROTO_UDP:
                udph = udp_hdr(skb);
                port = be16_to_cpu(udph->dest);