net: add new header file for VXLAN
authorFlavia Musatescu <flavia.musatescu@intel.com>
Wed, 23 Oct 2019 13:19:27 +0000 (14:19 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 25 Oct 2019 17:00:22 +0000 (19:00 +0200)
The VXLAN related definitions and structures are moved from
rte_ether.h to a new header file: rte_xvlan.h.

Also introducing a new define macro for VXLAN default port id:
RTE_VXLAN_DEFAULT_PORT

Signed-off-by: Flavia Musatescu <flavia.musatescu@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Raslan Darawsheh <rasland@mellanox.com>
18 files changed:
app/test-pmd/csumonly.c
app/test-pmd/util.c
doc/api/doxy-api-index.md
drivers/net/enic/enic.h
drivers/net/enic/enic_ethdev.c
drivers/net/enic/enic_main.c
drivers/net/hns3/hns3_rxtx.c
drivers/net/ixgbe/ixgbe_fdir.c
drivers/net/mlx5/mlx5_defs.h
drivers/net/mlx5/mlx5_flow_dv.c
examples/tep_termination/vxlan.c
examples/tep_termination/vxlan.h
lib/librte_gro/gro_tcp4.h
lib/librte_net/Makefile
lib/librte_net/meson.build
lib/librte_net/rte_ether.h
lib/librte_net/rte_vxlan.h [new file with mode: 0644]
lib/librte_pipeline/rte_table_action.c

index c3fd5e1..e12695d 100644 (file)
@@ -35,6 +35,7 @@
 #include <rte_ip.h>
 #include <rte_tcp.h>
 #include <rte_udp.h>
+#include <rte_vxlan.h>
 #include <rte_sctp.h>
 #include <rte_gtp.h>
 #include <rte_prefetch.h>
index 1570270..f20531d 100644 (file)
@@ -8,6 +8,7 @@
 #include <rte_net.h>
 #include <rte_mbuf.h>
 #include <rte_ether.h>
+#include <rte_vxlan.h>
 #include <rte_ethdev.h>
 #include <rte_flow.h>
 
index 49ac0d1..b11f853 100644 (file)
@@ -107,7 +107,8 @@ The public API headers are grouped by topics:
   [GSO]                (@ref rte_gso.h),
   [frag/reass]         (@ref rte_ip_frag.h),
   [LPM IPv4 route]     (@ref rte_lpm.h),
-  [LPM IPv6 route]     (@ref rte_lpm6.h)
+  [LPM IPv6 route]     (@ref rte_lpm6.h),
+  [VXLAN]              (@ref rte_vxlan.h)
 
 - **QoS**:
   [metering]           (@ref rte_meter.h),
index 14563db..4cf7372 100644 (file)
@@ -6,6 +6,8 @@
 #ifndef _ENIC_H_
 #define _ENIC_H_
 
+#include <rte_vxlan.h>
+
 #include "vnic_enet.h"
 #include "vnic_dev.h"
 #include "vnic_flowman.h"
@@ -51,9 +53,6 @@
 
 #define ENICPMD_FDIR_MAX           64
 
-/* HW default VXLAN port */
-#define ENIC_DEFAULT_VXLAN_PORT           4789
-
 /*
  * Interrupt 0: LSC and errors
  * Interrupt 1: rx queue 0
index 746e045..12c59a3 100644 (file)
@@ -1056,7 +1056,7 @@ static int enicpmd_dev_udp_tunnel_port_del(struct rte_eth_dev *eth_dev,
                             tnl->udp_port);
                return -EINVAL;
        }
-       return update_vxlan_port(enic, ENIC_DEFAULT_VXLAN_PORT);
+       return update_vxlan_port(enic, RTE_VXLAN_DEFAULT_PORT);
 }
 
 static int enicpmd_dev_fw_version_get(struct rte_eth_dev *eth_dev,
index cb07aa5..dda0afe 100644 (file)
@@ -1767,14 +1767,14 @@ static int enic_dev_init(struct enic *enic)
         * enable/disable.
         */
        if (enic->vxlan) {
-               enic->vxlan_port = ENIC_DEFAULT_VXLAN_PORT;
+               enic->vxlan_port = RTE_VXLAN_DEFAULT_PORT;
                /*
                 * Reset the vxlan port to the default, as the NIC firmware
                 * does not reset it automatically and keeps the old setting.
                 */
                if (vnic_dev_overlay_offload_cfg(enic->vdev,
                                                 OVERLAY_CFG_VXLAN_PORT_UPDATE,
-                                                ENIC_DEFAULT_VXLAN_PORT)) {
+                                                RTE_VXLAN_DEFAULT_PORT)) {
                        dev_err(enic, "failed to update vxlan port\n");
                        return -EINVAL;
                }
index 184b8e4..fdac55a 100644 (file)
@@ -15,6 +15,7 @@
 #include <rte_dev.h>
 #include <rte_eal.h>
 #include <rte_ether.h>
+#include <rte_vxlan.h>
 #include <rte_ethdev_driver.h>
 #include <rte_io.h>
 #include <rte_ip.h>
index e559f0f..166dae1 100644 (file)
@@ -12,7 +12,7 @@
 #include <rte_log.h>
 #include <rte_debug.h>
 #include <rte_pci.h>
-#include <rte_ether.h>
+#include <rte_vxlan.h>
 #include <rte_ethdev_driver.h>
 #include <rte_malloc.h>
 
@@ -77,7 +77,6 @@
        rte_memcpy((ipaddr), ipv6_addr, sizeof(ipv6_addr));\
 } while (0)
 
-#define DEFAULT_VXLAN_PORT 4789
 #define IXGBE_FDIRIP6M_INNER_MAC_SHIFT 4
 
 static int fdir_erase_filter_82599(struct ixgbe_hw *hw, uint32_t fdirhash);
@@ -366,7 +365,7 @@ fdir_set_input_mask_x550(struct rte_eth_dev *dev)
 
        /* set the default UDP port for VxLAN */
        if (mode == RTE_FDIR_MODE_PERFECT_TUNNEL)
-               IXGBE_WRITE_REG(hw, IXGBE_VXLANCTRL, DEFAULT_VXLAN_PORT);
+               IXGBE_WRITE_REG(hw, IXGBE_VXLANCTRL, RTE_VXLAN_DEFAULT_PORT);
 
        /* some bits must be set for mac vlan or tunnel mode */
        fdirm |= IXGBE_FDIRM_L4P | IXGBE_FDIRM_L3P;
index 248ef3c..e36ab55 100644 (file)
@@ -7,6 +7,7 @@
 #define RTE_PMD_MLX5_DEFS_H_
 
 #include <rte_ethdev_driver.h>
+#include <rte_vxlan.h>
 
 #include "mlx5_autoconf.h"
 
index b1aa427..e5f4c4c 100644 (file)
@@ -26,6 +26,7 @@
 #include <rte_malloc.h>
 #include <rte_ip.h>
 #include <rte_gre.h>
+#include <rte_vxlan.h>
 
 #include "mlx5.h"
 #include "mlx5_defs.h"
index 52c35a7..0ba6b8b 100644 (file)
@@ -159,7 +159,7 @@ decapsulation(struct rte_mbuf *pkt)
        /** check udp destination port, 4789 is the default vxlan port
         * (rfc7348) or that the rx offload flag is set (i40e only
         * currently)*/
-       if (udp_hdr->dst_port != rte_cpu_to_be_16(DEFAULT_VXLAN_PORT) &&
+       if (udp_hdr->dst_port != rte_cpu_to_be_16(RTE_VXLAN_DEFAULT_PORT) &&
                (pkt->packet_type & RTE_PTYPE_TUNNEL_MASK) == 0)
                return -1;
        outer_header_len = info.outer_l2_len + info.outer_l3_len
index 689aea4..587fb9f 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <rte_ether.h>
 #include <rte_ip.h>
+#include <rte_vxlan.h>
 
 #define PORT_MIN       49152
 #define PORT_MAX       65535
@@ -14,7 +15,6 @@
 
 #define VXLAN_N_PORTS  2
 #define VXLAN_HF_VNI 0x08000000
-#define DEFAULT_VXLAN_PORT 4789
 
 extern struct rte_ipv4_hdr app_ip_hdr[VXLAN_N_PORTS];
 extern struct rte_ether_hdr app_l2_hdr[VXLAN_N_PORTS];
index 9fe2911..bb875a5 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <rte_ip.h>
 #include <rte_tcp.h>
+#include <rte_vxlan.h>
 
 #define INVALID_ARRAY_INDEX 0xffffffffUL
 #define GRO_TCP4_TBL_MAX_ITEM_NUM (1024UL * 1024UL)
index 9379e11..c79f84d 100644 (file)
@@ -22,6 +22,6 @@ SYMLINK-$(CONFIG_RTE_LIBRTE_NET)-include := rte_ip.h rte_tcp.h rte_udp.h rte_esp
 SYMLINK-$(CONFIG_RTE_LIBRTE_NET)-include += rte_sctp.h rte_icmp.h rte_arp.h
 SYMLINK-$(CONFIG_RTE_LIBRTE_NET)-include += rte_ether.h rte_gre.h rte_net.h
 SYMLINK-$(CONFIG_RTE_LIBRTE_NET)-include += rte_net_crc.h rte_mpls.h rte_higig.h
-SYMLINK-$(CONFIG_RTE_LIBRTE_NET)-include += rte_gtp.h
+SYMLINK-$(CONFIG_RTE_LIBRTE_NET)-include += rte_gtp.h rte_vxlan.h
 
 include $(RTE_SDK)/mk/rte.lib.mk
index b017168..090284b 100644 (file)
@@ -11,6 +11,7 @@ headers = files('rte_ip.h',
        'rte_icmp.h',
        'rte_arp.h',
        'rte_ether.h',
+       'rte_vxlan.h',
        'rte_gre.h',
        'rte_gtp.h',
        'rte_net.h',
index 7c89626..13210f2 100644 (file)
@@ -285,15 +285,7 @@ struct rte_vlan_hdr {
        uint16_t eth_proto;/**< Ethernet type of encapsulated frame. */
 } __attribute__((__packed__));
 
-/**
- * VXLAN protocol header.
- * Contains the 8-bit flag, 24-bit VXLAN Network Identifier and
- * Reserved fields (24 bits and 8 bits)
- */
-struct rte_vxlan_hdr {
-       uint32_t vx_flags; /**< flag (8) + Reserved (24). */
-       uint32_t vx_vni;   /**< VNI (24) + Reserved (8). */
-} __attribute__((__packed__));
+
 
 /* Ethernet frame types */
 #define RTE_ETHER_TYPE_IPV4 0x0800 /**< IPv4 Protocol. */
@@ -313,35 +305,6 @@ struct rte_vxlan_hdr {
 #define RTE_ETHER_TYPE_MPLS 0x8847 /**< MPLS ethertype. */
 #define RTE_ETHER_TYPE_MPLSM 0x8848 /**< MPLS multicast ethertype. */
 
-#define RTE_ETHER_VXLAN_HLEN \
-       (sizeof(struct rte_udp_hdr) + sizeof(struct rte_vxlan_hdr))
-       /**< VXLAN tunnel header length. */
-
-/**
- * VXLAN-GPE protocol header (draft-ietf-nvo3-vxlan-gpe-05).
- * Contains the 8-bit flag, 8-bit next-protocol, 24-bit VXLAN Network
- * Identifier and Reserved fields (16 bits and 8 bits).
- */
-struct rte_vxlan_gpe_hdr {
-       uint8_t vx_flags;    /**< flag (8). */
-       uint8_t reserved[2]; /**< Reserved (16). */
-       uint8_t proto;       /**< next-protocol (8). */
-       uint32_t vx_vni;     /**< VNI (24) + Reserved (8). */
-} __attribute__((__packed__));
-
-/* VXLAN-GPE next protocol types */
-#define RTE_VXLAN_GPE_TYPE_IPV4 1 /**< IPv4 Protocol. */
-#define RTE_VXLAN_GPE_TYPE_IPV6 2 /**< IPv6 Protocol. */
-#define RTE_VXLAN_GPE_TYPE_ETH  3 /**< Ethernet Protocol. */
-#define RTE_VXLAN_GPE_TYPE_NSH  4 /**< NSH Protocol. */
-#define RTE_VXLAN_GPE_TYPE_MPLS 5 /**< MPLS Protocol. */
-#define RTE_VXLAN_GPE_TYPE_GBP  6 /**< GBP Protocol. */
-#define RTE_VXLAN_GPE_TYPE_VBNG 7 /**< vBNG Protocol. */
-
-#define RTE_ETHER_VXLAN_GPE_HLEN (sizeof(struct rte_udp_hdr) + \
-                             sizeof(struct rte_vxlan_gpe_hdr))
-/**< VXLAN-GPE tunnel header length. */
-
 /**
  * Extract VLAN tag information into mbuf
  *
diff --git a/lib/librte_net/rte_vxlan.h b/lib/librte_net/rte_vxlan.h
new file mode 100644 (file)
index 0000000..63fc272
--- /dev/null
@@ -0,0 +1,71 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018-2019 Intel Corporation
+ */
+
+#ifndef _RTE_VXLAN_H_
+#define _RTE_VXLAN_H_
+
+/**
+ * @file
+ *
+ * VXLAN-related definitions
+ */
+
+#include <stdint.h>
+
+#include <rte_udp.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** VXLAN default port. */
+#define RTE_VXLAN_DEFAULT_PORT 4789
+
+/**
+ * VXLAN protocol header.
+ * Contains the 8-bit flag, 24-bit VXLAN Network Identifier and
+ * Reserved fields (24 bits and 8 bits)
+ */
+struct rte_vxlan_hdr {
+       uint32_t vx_flags; /**< flag (8) + Reserved (24). */
+       uint32_t vx_vni;   /**< VNI (24) + Reserved (8). */
+} __attribute__((__packed__));
+
+/** VXLAN tunnel header length. */
+#define RTE_ETHER_VXLAN_HLEN \
+       (sizeof(struct rte_udp_hdr) + sizeof(struct rte_vxlan_hdr))
+
+
+/**
+ * VXLAN-GPE protocol header (draft-ietf-nvo3-vxlan-gpe-05).
+ * Contains the 8-bit flag, 8-bit next-protocol, 24-bit VXLAN Network
+ * Identifier and Reserved fields (16 bits and 8 bits).
+ */
+struct rte_vxlan_gpe_hdr {
+       uint8_t vx_flags;    /**< flag (8). */
+       uint8_t reserved[2]; /**< Reserved (16). */
+       uint8_t proto;       /**< next-protocol (8). */
+       uint32_t vx_vni;     /**< VNI (24) + Reserved (8). */
+} __attribute__((__packed__));
+
+/** VXLAN-GPE tunnel header length. */
+#define RTE_ETHER_VXLAN_GPE_HLEN (sizeof(struct rte_udp_hdr) + \
+               sizeof(struct rte_vxlan_gpe_hdr))
+
+/* VXLAN-GPE next protocol types */
+#define RTE_VXLAN_GPE_TYPE_IPV4 1 /**< IPv4 Protocol. */
+#define RTE_VXLAN_GPE_TYPE_IPV6 2 /**< IPv6 Protocol. */
+#define RTE_VXLAN_GPE_TYPE_ETH  3 /**< Ethernet Protocol. */
+#define RTE_VXLAN_GPE_TYPE_NSH  4 /**< NSH Protocol. */
+#define RTE_VXLAN_GPE_TYPE_MPLS 5 /**< MPLS Protocol. */
+#define RTE_VXLAN_GPE_TYPE_GBP  6 /**< GBP Protocol. */
+#define RTE_VXLAN_GPE_TYPE_VBNG 7 /**< vBNG Protocol. */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* RTE_VXLAN_H_ */
index 45dde71..961f006 100644 (file)
@@ -14,6 +14,7 @@
 #include <rte_esp.h>
 #include <rte_tcp.h>
 #include <rte_udp.h>
+#include <rte_vxlan.h>
 #include <rte_cryptodev.h>
 #include <rte_cryptodev_pmd.h>