net/mlx5e: Add 802.1ad VLAN insertion support
authorGal Pressman <galp@mellanox.com>
Sun, 10 Sep 2017 10:22:51 +0000 (13:22 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 9 Nov 2017 04:27:35 +0000 (13:27 +0900)
Report VLAN insertion support for S-tagged packets and add support by
choosing the correct VLAN type in the WQE.

Signed-off-by: Gal Pressman <galp@mellanox.com>
Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
include/linux/mlx5/qp.h

index 59b8a2d62b8d308b3e9a7fc7e751169a17d2c2d8..c408b7efa42e4bcd61acff33d70c3f48cf3e2d03 100644 (file)
@@ -4194,6 +4194,7 @@ static void mlx5e_build_nic_netdev(struct net_device *netdev)
        netdev->hw_features      |= NETIF_F_HW_VLAN_CTAG_TX;
        netdev->hw_features      |= NETIF_F_HW_VLAN_CTAG_RX;
        netdev->hw_features      |= NETIF_F_HW_VLAN_CTAG_FILTER;
+       netdev->hw_features      |= NETIF_F_HW_VLAN_STAG_TX;
 
        if (mlx5e_vxlan_allowed(mdev) || MLX5_CAP_ETH(mdev, tunnel_stateless_gre)) {
                netdev->hw_features     |= NETIF_F_GSO_PARTIAL;
index de651de35c9b380eddf49ca46f687041f9d0fd74..c62305b214ccf22d4166fa24724480231dd33a2d 100644 (file)
@@ -369,6 +369,8 @@ static netdev_tx_t mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
                ds_cnt += DIV_ROUND_UP(ihs - sizeof(eseg->inline_hdr.start), MLX5_SEND_WQE_DS);
        } else if (skb_vlan_tag_present(skb)) {
                eseg->insert.type = cpu_to_be16(MLX5_ETH_WQE_INSERT_VLAN);
+               if (skb->vlan_proto == cpu_to_be16(ETH_P_8021AD))
+                       eseg->insert.type |= cpu_to_be16(MLX5_ETH_WQE_SVLAN);
                eseg->insert.vlan_tci = cpu_to_be16(skb_vlan_tag_get(skb));
        }
 
index 66d19b611fe4fe6f6e3906ce262f5c67513065b0..62af7512dabbb6f2bc4aa2ac5c7439a4b9b64600 100644 (file)
@@ -221,6 +221,7 @@ enum {
 };
 
 enum {
+       MLX5_ETH_WQE_SVLAN              = 1 << 0,
        MLX5_ETH_WQE_INSERT_VLAN        = 1 << 15,
 };