IB/mlx5: Support Vxlan tunneling specification
authorMoses Reuben <mosesr@mellanox.com>
Mon, 14 Nov 2016 17:04:50 +0000 (19:04 +0200)
committerDoug Ledford <dledford@redhat.com>
Tue, 13 Dec 2016 18:34:23 +0000 (13:34 -0500)
Add support to receive specific Vxlan packet in ConnectX-4.

Signed-off-by: Moses Reuben <mosesr@mellanox.com>
Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/mlx5/main.c

index 2687a93c4af2d14dfa2b4d5a9aca1ba323839a93..a9e5851365d3e081eb306135925ae1a46990c4f4 100644 (file)
@@ -1539,6 +1539,7 @@ static void set_tos(void *outer_c, void *outer_v, u8 mask, u8 val)
 #define LAST_IPV4_FIELD tos
 #define LAST_IPV6_FIELD traffic_class
 #define LAST_TCP_UDP_FIELD src_port
+#define LAST_TUNNEL_FIELD tunnel_id
 
 /* Field is the last supported field */
 #define FIELDS_NOT_SUPPORTED(filter, field)\
@@ -1722,6 +1723,16 @@ static int parse_flow_attr(u32 *match_c, u32 *match_v,
                MLX5_SET(fte_match_set_lyr_2_4, outer_headers_v, udp_dport,
                         ntohs(ib_spec->tcp_udp.val.dst_port));
                break;
+       case IB_FLOW_SPEC_VXLAN_TUNNEL:
+               if (FIELDS_NOT_SUPPORTED(ib_spec->tunnel.mask,
+                                        LAST_TUNNEL_FIELD))
+                       return -ENOTSUPP;
+
+               MLX5_SET(fte_match_set_misc, misc_params_c, vxlan_vni,
+                        ntohl(ib_spec->tunnel.mask.tunnel_id));
+               MLX5_SET(fte_match_set_misc, misc_params_v, vxlan_vni,
+                        ntohl(ib_spec->tunnel.val.tunnel_id));
+               break;
        default:
                return -EINVAL;
        }