dpdk: remove vlan-strip offload code
[vpp.git] / src / plugins / dpdk / device / dpdk.h
index d860a0c..8522ff0 100644 (file)
 
 #include <rte_config.h>
 
-#include <rte_common.h>
-#include <rte_dev.h>
-#include <rte_memory.h>
 #include <rte_eal.h>
-#include <rte_per_lcore.h>
-#include <rte_cycles.h>
-#include <rte_lcore.h>
-#include <rte_per_lcore.h>
-#include <rte_interrupts.h>
-#include <rte_pci.h>
+#include <rte_bus_pci.h>
 #include <rte_bus_vmbus.h>
-#include <rte_ether.h>
 #include <rte_ethdev.h>
-#include <rte_ring.h>
-#include <rte_mempool.h>
-#include <rte_mbuf.h>
 #include <rte_version.h>
-#include <rte_sched.h>
 #include <rte_net.h>
-#include <rte_bus_pci.h>
-#include <rte_flow.h>
 
 #include <vnet/devices/devices.h>
 
@@ -66,33 +51,34 @@ extern vlib_node_registration_t admin_up_down_process_node;
 #define DPDK_MLX5_PMD_NAME "mlx5_pci"
 #endif
 
-#define foreach_dpdk_pmd          \
-  _ ("net_thunderx", THUNDERX)    \
-  _ ("net_e1000_em", E1000EM)     \
-  _ ("net_e1000_igb", IGB)        \
-  _ ("net_e1000_igb_vf", IGBVF)   \
-  _ ("net_ixgbe", IXGBE)          \
-  _ ("net_ixgbe_vf", IXGBEVF)     \
-  _ ("net_i40e", I40E)            \
-  _ ("net_i40e_vf", I40EVF)       \
-  _ ("net_ice", ICE)              \
-  _ ("net_iavf", IAVF)            \
-  _ ("net_virtio", VIRTIO)        \
-  _ ("net_enic", ENIC)            \
-  _ ("net_vmxnet3", VMXNET3)      \
-  _ ("AF_PACKET PMD", AF_PACKET)  \
-  _ ("net_fm10k", FM10K)          \
-  _ ("net_cxgbe", CXGBE)          \
-  _ ("net_mlx4", MLX4)            \
-  _ (DPDK_MLX5_PMD_NAME, MLX5)    \
-  _ ("net_dpaa2", DPAA2)          \
-  _ ("net_virtio_user", VIRTIO_USER) \
-  _ ("net_vhost", VHOST_ETHER)    \
-  _ ("net_ena", ENA)              \
-  _ ("net_failsafe", FAILSAFE)    \
-  _ ("net_liovf", LIOVF_ETHER)    \
-  _ ("net_qede", QEDE)           \
-  _ ("net_netvsc", NETVSC)        \
+#define foreach_dpdk_pmd                                                      \
+  _ ("net_thunderx", THUNDERX)                                                \
+  _ ("net_e1000_em", E1000EM)                                                 \
+  _ ("net_e1000_igb", IGB)                                                    \
+  _ ("net_e1000_igb_vf", IGBVF)                                               \
+  _ ("net_ixgbe", IXGBE)                                                      \
+  _ ("net_ixgbe_vf", IXGBEVF)                                                 \
+  _ ("net_i40e", I40E)                                                        \
+  _ ("net_i40e_vf", I40EVF)                                                   \
+  _ ("net_ice", ICE)                                                          \
+  _ ("net_iavf", IAVF)                                                        \
+  _ ("net_igc", IGC)                                                          \
+  _ ("net_virtio", VIRTIO)                                                    \
+  _ ("net_enic", ENIC)                                                        \
+  _ ("net_vmxnet3", VMXNET3)                                                  \
+  _ ("AF_PACKET PMD", AF_PACKET)                                              \
+  _ ("net_fm10k", FM10K)                                                      \
+  _ ("net_cxgbe", CXGBE)                                                      \
+  _ ("net_mlx4", MLX4)                                                        \
+  _ (DPDK_MLX5_PMD_NAME, MLX5)                                                \
+  _ ("net_dpaa2", DPAA2)                                                      \
+  _ ("net_virtio_user", VIRTIO_USER)                                          \
+  _ ("net_vhost", VHOST_ETHER)                                                \
+  _ ("net_ena", ENA)                                                          \
+  _ ("net_failsafe", FAILSAFE)                                                \
+  _ ("net_liovf", LIOVF_ETHER)                                                \
+  _ ("net_qede", QEDE)                                                        \
+  _ ("net_netvsc", NETVSC)                                                    \
   _ ("net_bnxt", BNXT)
 
 typedef enum
@@ -250,11 +236,12 @@ typedef struct
 #define DPDK_LINK_POLL_INTERVAL       (3.0)
 #define DPDK_MIN_LINK_POLL_INTERVAL   (0.001)  /* 1msec */
 
-#define foreach_dpdk_device_config_item \
-  _ (num_rx_queues) \
-  _ (num_tx_queues) \
-  _ (num_rx_desc) \
-  _ (num_tx_desc) \
+#define foreach_dpdk_device_config_item                                       \
+  _ (num_rx_queues)                                                           \
+  _ (num_tx_queues)                                                           \
+  _ (num_rx_desc)                                                             \
+  _ (num_tx_desc)                                                             \
+  _ (max_lro_pkt_size)                                                        \
   _ (rss_fn)
 
 typedef enum
@@ -274,10 +261,6 @@ typedef struct
   dpdk_device_addr_type_t dev_addr_type;
   u8 *name;
   u8 is_blacklisted;
-  u8 vlan_strip_offload;
-#define DPDK_DEVICE_VLAN_STRIP_DEFAULT 0
-#define DPDK_DEVICE_VLAN_STRIP_OFF 1
-#define DPDK_DEVICE_VLAN_STRIP_ON  2
 
 #define _(x) uword x;
     foreach_dpdk_device_config_item
@@ -300,7 +283,9 @@ typedef struct
   u8 *eal_init_args_str;
   u8 *uio_driver_name;
   u8 no_multi_seg;
+  u8 enable_lro;
   u8 enable_tcp_udp_checksum;
+  u8 enable_outer_checksum_offload;
   u8 no_tx_checksum_offload;
   u8 enable_telemetry;
   u16 max_simd_bitwidth;
@@ -309,13 +294,6 @@ typedef struct
 #define DPDK_MAX_SIMD_BITWIDTH_256     256
 #define DPDK_MAX_SIMD_BITWIDTH_512     512
 
-  /* Required config parameters */
-  u8 coremask_set_manually;
-  u8 nchannels_set_manually;
-  u32 coremask;
-  u32 nchannels;
-  u32 num_crypto_mbufs;
-
   /*
    * format interface names ala xxxEthernet%d/%d/%d instead of
    * xxxEthernet%x/%x/%x.
@@ -346,7 +324,7 @@ typedef struct
   u32 buffers[DPDK_RX_BURST_SZ];
   u16 next[DPDK_RX_BURST_SZ];
   u16 etype[DPDK_RX_BURST_SZ];
-  u16 flags[DPDK_RX_BURST_SZ];
+  u32 flags[DPDK_RX_BURST_SZ];
   vlib_buffer_t buffer_template;
 } dpdk_per_thread_data_t;
 
@@ -370,9 +348,6 @@ typedef struct
   f64 link_state_poll_interval;
   f64 stat_poll_interval;
 
-  /* convenience */
-  vlib_main_t *vlib_main;
-  vnet_main_t *vnet_main;
   dpdk_config_main_t *conf;
 
   /* API message ID base */
@@ -442,32 +417,33 @@ typedef enum
 
 void dpdk_update_link_state (dpdk_device_t * xd, f64 now);
 
-#define foreach_dpdk_rss_hf                    \
-  _(0, ETH_RSS_FRAG_IPV4,           "ipv4-frag")    \
-  _(1, ETH_RSS_NONFRAG_IPV4_TCP,    "ipv4-tcp")     \
-  _(2, ETH_RSS_NONFRAG_IPV4_UDP,    "ipv4-udp")     \
-  _(3, ETH_RSS_NONFRAG_IPV4_SCTP,   "ipv4-sctp")    \
-  _(4, ETH_RSS_NONFRAG_IPV4_OTHER,  "ipv4-other")   \
-  _(5, ETH_RSS_IPV4,                "ipv4")         \
-  _(6, ETH_RSS_IPV6_TCP_EX,         "ipv6-tcp-ex")  \
-  _(7, ETH_RSS_IPV6_UDP_EX,         "ipv6-udp-ex")  \
-  _(8, ETH_RSS_FRAG_IPV6,           "ipv6-frag")    \
-  _(9, ETH_RSS_NONFRAG_IPV6_TCP,    "ipv6-tcp")     \
-  _(10, ETH_RSS_NONFRAG_IPV6_UDP,   "ipv6-udp")     \
-  _(11, ETH_RSS_NONFRAG_IPV6_SCTP,  "ipv6-sctp")    \
-  _(12, ETH_RSS_NONFRAG_IPV6_OTHER, "ipv6-other")   \
-  _(13, ETH_RSS_IPV6_EX,            "ipv6-ex")      \
-  _(14, ETH_RSS_IPV6,               "ipv6")         \
-  _(15, ETH_RSS_L2_PAYLOAD,         "l2-payload")   \
-  _(16, ETH_RSS_PORT,               "port")         \
-  _(17, ETH_RSS_VXLAN,              "vxlan")        \
-  _(18, ETH_RSS_GENEVE,             "geneve")       \
-  _(19, ETH_RSS_NVGRE,              "nvgre")        \
-  _(20, ETH_RSS_GTPU,               "gtpu")         \
-  _(60, ETH_RSS_L4_DST_ONLY,        "l4-dst-only")  \
-  _(61, ETH_RSS_L4_SRC_ONLY,        "l4-src-only")  \
-  _(62, ETH_RSS_L3_DST_ONLY,        "l3-dst-only")  \
-  _(63, ETH_RSS_L3_SRC_ONLY,        "l3-src-only")
+#define foreach_dpdk_rss_hf                                                   \
+  _ (0, ETH_RSS_FRAG_IPV4, "ipv4-frag")                                       \
+  _ (1, ETH_RSS_NONFRAG_IPV4_TCP, "ipv4-tcp")                                 \
+  _ (2, ETH_RSS_NONFRAG_IPV4_UDP, "ipv4-udp")                                 \
+  _ (3, ETH_RSS_NONFRAG_IPV4_SCTP, "ipv4-sctp")                               \
+  _ (4, ETH_RSS_NONFRAG_IPV4_OTHER, "ipv4-other")                             \
+  _ (5, ETH_RSS_IPV4, "ipv4")                                                 \
+  _ (6, ETH_RSS_IPV6_TCP_EX, "ipv6-tcp-ex")                                   \
+  _ (7, ETH_RSS_IPV6_UDP_EX, "ipv6-udp-ex")                                   \
+  _ (8, ETH_RSS_FRAG_IPV6, "ipv6-frag")                                       \
+  _ (9, ETH_RSS_NONFRAG_IPV6_TCP, "ipv6-tcp")                                 \
+  _ (10, ETH_RSS_NONFRAG_IPV6_UDP, "ipv6-udp")                                \
+  _ (11, ETH_RSS_NONFRAG_IPV6_SCTP, "ipv6-sctp")                              \
+  _ (12, ETH_RSS_NONFRAG_IPV6_OTHER, "ipv6-other")                            \
+  _ (13, ETH_RSS_IPV6_EX, "ipv6-ex")                                          \
+  _ (14, ETH_RSS_IPV6, "ipv6")                                                \
+  _ (15, ETH_RSS_L2_PAYLOAD, "l2-payload")                                    \
+  _ (16, ETH_RSS_PORT, "port")                                                \
+  _ (17, ETH_RSS_VXLAN, "vxlan")                                              \
+  _ (18, ETH_RSS_GENEVE, "geneve")                                            \
+  _ (19, ETH_RSS_NVGRE, "nvgre")                                              \
+  _ (20, ETH_RSS_GTPU, "gtpu")                                                \
+  _ (21, ETH_RSS_ESP, "esp")                                                  \
+  _ (60, ETH_RSS_L4_DST_ONLY, "l4-dst-only")                                  \
+  _ (61, ETH_RSS_L4_SRC_ONLY, "l4-src-only")                                  \
+  _ (62, ETH_RSS_L3_DST_ONLY, "l3-dst-only")                                  \
+  _ (63, ETH_RSS_L3_SRC_ONLY, "l3-src-only")
 
 format_function_t format_dpdk_device_name;
 format_function_t format_dpdk_device;