extern vlib_node_registration_t dpdk_input_node;
extern vlib_node_registration_t handoff_dispatch_node;
-#if RTE_VERSION >= RTE_VERSION_NUM(16, 11, 0, 0)
#define foreach_dpdk_pmd \
_ ("net_thunderx", THUNDERX) \
_ ("net_e1000_em", E1000EM) \
_ ("net_cxgbe", CXGBE) \
_ ("net_mlx5", MLX5) \
_ ("net_dpaa2", DPAA2)
-#else
-#define foreach_dpdk_pmd \
- _ ("rte_nicvf_pmd", THUNDERX) \
- _ ("rte_em_pmd", E1000EM) \
- _ ("rte_igb_pmd", IGB) \
- _ ("rte_igbvf_pmd", IGBVF) \
- _ ("rte_ixgbe_pmd", IXGBE) \
- _ ("rte_ixgbevf_pmd", IXGBEVF) \
- _ ("rte_i40e_pmd", I40E) \
- _ ("rte_i40evf_pmd", I40EVF) \
- _ ("rte_virtio_pmd", VIRTIO) \
- _ ("rte_enic_pmd", ENIC) \
- _ ("rte_vmxnet3_pmd", VMXNET3) \
- _ ("AF_PACKET PMD", AF_PACKET) \
- _ ("rte_bond_pmd", BOND) \
- _ ("rte_pmd_fm10k", FM10K) \
- _ ("rte_cxgbe_pmd", CXGBE) \
- _ ("rte_dpaa2_dpni", DPAA2)
-#endif
typedef enum
{
#define DPDK_LINK_POLL_INTERVAL (3.0)
#define DPDK_MIN_LINK_POLL_INTERVAL (0.001) /* 1msec */
-typedef struct
-{
- CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
-
- /* total input packet counter */
- u64 aggregate_rx_packets;
-} dpdk_worker_t;
-
-typedef struct
-{
- CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
-
- /* total input packet counter */
- u64 aggregate_rx_packets;
-} dpdk_hqos_thread_t;
-
typedef struct
{
u32 device;
/* vlib buffer free list, must be same size as an rte_mbuf */
u32 vlib_buffer_free_list_index;
- /* dpdk worker "threads" */
- dpdk_worker_t *workers;
-
- /* dpdk HQoS "threads" */
- dpdk_hqos_thread_t *hqos_threads;
-
/* Ethernet input node index */
u32 ethernet_input_node_index;
void dpdk_device_lock_init (dpdk_device_t * xd);
void dpdk_device_lock_free (dpdk_device_t * xd);
-static inline u64
-vnet_get_aggregate_rx_packets (void)
-{
- dpdk_main_t *dm = &dpdk_main;
- u64 sum = 0;
- dpdk_worker_t *dw;
-
- vec_foreach (dw, dm->workers) sum += dw->aggregate_rx_packets;
-
- return sum;
-}
-
void dpdk_rx_trace (dpdk_main_t * dm,
vlib_node_runtime_t * node,
dpdk_device_t * xd,