dpdk: code preparation for bumping to DPDK 22.11
[vpp.git] / src / plugins / dpdk / device / dpdk.h
index 196f68f..3f02f20 100644 (file)
 #include <rte_ethdev.h>
 #include <rte_version.h>
 #include <rte_net.h>
+#if RTE_VERSION >= RTE_VERSION_NUM(22, 11, 0, 0)
+#include <rte_bus.h>
+#include <rte_pci.h>
+#include <ctype.h>
+
+#include <bus_driver.h>
+#include <bus_pci_driver.h>
+#include <bus_vmbus_driver.h>
+#endif
 
 #include <vnet/devices/devices.h>
 
@@ -94,6 +103,7 @@ typedef struct
 {
   CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
   clib_spinlock_t lock;
+  u32 queue_index;
 } dpdk_tx_queue_t;
 
 typedef struct
@@ -201,7 +211,7 @@ typedef struct
   u8 *default_mac_address;
 
   /* maximum supported max frame size */
-  u16 max_supported_frame_size;
+  u32 max_supported_frame_size;
 
   /* due to lack of API to get ethernet max_frame_size we store information
    * deducted from device info */
@@ -242,6 +252,7 @@ typedef struct
   };
   dpdk_device_addr_type_t dev_addr_type;
   u8 *name;
+  u8 *tag;
   u8 is_blacklisted;
 
 #define _(x) uword x;
@@ -264,6 +275,7 @@ typedef struct
   u8 **eal_init_args;
   u8 *eal_init_args_str;
   u8 *uio_driver_name;
+  u8 uio_bind_force;
   u8 enable_telemetry;
   u16 max_simd_bitwidth;
 
@@ -393,32 +405,32 @@ 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")                                                \
-  _ (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")
+  _ (0, RTE_ETH_RSS_FRAG_IPV4, "ipv4-frag")                                   \
+  _ (1, RTE_ETH_RSS_NONFRAG_IPV4_TCP, "ipv4-tcp")                             \
+  _ (2, RTE_ETH_RSS_NONFRAG_IPV4_UDP, "ipv4-udp")                             \
+  _ (3, RTE_ETH_RSS_NONFRAG_IPV4_SCTP, "ipv4-sctp")                           \
+  _ (4, RTE_ETH_RSS_NONFRAG_IPV4_OTHER, "ipv4-other")                         \
+  _ (5, RTE_ETH_RSS_IPV4, "ipv4")                                             \
+  _ (6, RTE_ETH_RSS_IPV6_TCP_EX, "ipv6-tcp-ex")                               \
+  _ (7, RTE_ETH_RSS_IPV6_UDP_EX, "ipv6-udp-ex")                               \
+  _ (8, RTE_ETH_RSS_FRAG_IPV6, "ipv6-frag")                                   \
+  _ (9, RTE_ETH_RSS_NONFRAG_IPV6_TCP, "ipv6-tcp")                             \
+  _ (10, RTE_ETH_RSS_NONFRAG_IPV6_UDP, "ipv6-udp")                            \
+  _ (11, RTE_ETH_RSS_NONFRAG_IPV6_SCTP, "ipv6-sctp")                          \
+  _ (12, RTE_ETH_RSS_NONFRAG_IPV6_OTHER, "ipv6-other")                        \
+  _ (13, RTE_ETH_RSS_IPV6_EX, "ipv6-ex")                                      \
+  _ (14, RTE_ETH_RSS_IPV6, "ipv6")                                            \
+  _ (15, RTE_ETH_RSS_L2_PAYLOAD, "l2-payload")                                \
+  _ (16, RTE_ETH_RSS_PORT, "port")                                            \
+  _ (17, RTE_ETH_RSS_VXLAN, "vxlan")                                          \
+  _ (18, RTE_ETH_RSS_GENEVE, "geneve")                                        \
+  _ (19, RTE_ETH_RSS_NVGRE, "nvgre")                                          \
+  _ (20, RTE_ETH_RSS_GTPU, "gtpu")                                            \
+  _ (21, RTE_ETH_RSS_ESP, "esp")                                              \
+  _ (60, RTE_ETH_RSS_L4_DST_ONLY, "l4-dst-only")                              \
+  _ (61, RTE_ETH_RSS_L4_SRC_ONLY, "l4-src-only")                              \
+  _ (62, RTE_ETH_RSS_L3_DST_ONLY, "l3-dst-only")                              \
+  _ (63, RTE_ETH_RSS_L3_SRC_ONLY, "l3-src-only")
 
 format_function_t format_dpdk_device_name;
 format_function_t format_dpdk_device;