ConnectX-3 Pro can offload transmission of VLAN packets with VXLAN inside:
enable tunnel offloads in dev->vlan_features, like it's done with other
NIC drivers (e.g. be2net and ixgbe).

Signed-off-by: Davide Caratti <dcara...@redhat.com>
---
 .../net/ethernet/mellanox/mlx4/en_netdev.c    | 21 ++++++++++---------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c 
b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index c1438ae52a11..52500f744a0e 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -3415,6 +3415,17 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int 
port,
        if (mdev->LSO_support)
                dev->hw_features |= NETIF_F_TSO | NETIF_F_TSO6;
 
+       if (mdev->dev->caps.tunnel_offload_mode ==
+           MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) {
+               dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL |
+                                   NETIF_F_GSO_UDP_TUNNEL_CSUM |
+                                   NETIF_F_GSO_PARTIAL;
+               dev->features    |= NETIF_F_GSO_UDP_TUNNEL |
+                                   NETIF_F_GSO_UDP_TUNNEL_CSUM |
+                                   NETIF_F_GSO_PARTIAL;
+               dev->gso_partial_features = NETIF_F_GSO_UDP_TUNNEL_CSUM;
+       }
+
        dev->vlan_features = dev->hw_features;
 
        dev->hw_features |= NETIF_F_RXCSUM | NETIF_F_RXHASH;
@@ -3483,16 +3494,6 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int 
port,
                priv->rss_hash_fn = ETH_RSS_HASH_TOP;
        }
 
-       if (mdev->dev->caps.tunnel_offload_mode == 
MLX4_TUNNEL_OFFLOAD_MODE_VXLAN) {
-               dev->hw_features |= NETIF_F_GSO_UDP_TUNNEL |
-                                   NETIF_F_GSO_UDP_TUNNEL_CSUM |
-                                   NETIF_F_GSO_PARTIAL;
-               dev->features    |= NETIF_F_GSO_UDP_TUNNEL |
-                                   NETIF_F_GSO_UDP_TUNNEL_CSUM |
-                                   NETIF_F_GSO_PARTIAL;
-               dev->gso_partial_features = NETIF_F_GSO_UDP_TUNNEL_CSUM;
-       }
-
        /* MTU range: 68 - hw-specific max */
        dev->min_mtu = ETH_MIN_MTU;
        dev->max_mtu = priv->max_mtu;
-- 
2.20.1

Reply via email to