16 #define rte_mbuf_from_vlib_buffer(x) (((struct rte_mbuf *)x) - 1) 17 #define vlib_buffer_from_rte_mbuf(x) ((vlib_buffer_t *)(x+1)) 19 #define DPDK_NB_RX_DESC_DEFAULT 1024 20 #define DPDK_NB_TX_DESC_DEFAULT 1024 21 #define DPDK_NB_RX_DESC_VIRTIO 256 22 #define DPDK_NB_TX_DESC_VIRTIO 256 24 #define I40E_DEV_ID_SFP_XL710 0x1572 25 #define I40E_DEV_ID_QSFP_A 0x1583 26 #define I40E_DEV_ID_QSFP_B 0x1584 27 #define I40E_DEV_ID_QSFP_C 0x1585 28 #define I40E_DEV_ID_10G_BASE_T 0x1586 29 #define I40E_DEV_ID_VF 0x154C 32 #define foreach_eal_double_hyphen_predicate_arg \ 38 #define foreach_eal_single_hyphen_mandatory_arg \ 42 #define foreach_eal_single_hyphen_arg \ 44 _(mem-alloc-request, m) \ 48 #define foreach_eal_double_hyphen_arg \ 57 struct rte_pktmbuf_pool_private mbp_priv;
80 _vec_len (xd->
xstats) = len;
93 u64 rxerrors, last_rxerrors;
110 xd->
stats.rx_nombuf -
124 rxerrors = xd->
stats.ierrors;
133 rxerrors - last_rxerrors);
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment) ...
vnet_main_t * vnet_get_main(void)
struct rte_eth_stats last_stats
vnet_interface_main_t interface_main
static void vlib_increment_simple_counter(vlib_simple_counter_main_t *cm, u32 thread_index, u32 index, u64 increment)
Increment a simple counter.
struct rte_eth_xstat * last_cleared_xstats
#define DPDK_DEVICE_FLAG_PMD
struct rte_eth_stats stats
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
A collection of simple counters.
static void dpdk_get_xstats(dpdk_device_t *xd)
f64 time_last_stats_update
vlib_simple_counter_main_t * sw_if_counters
#define DPDK_DEVICE_FLAG_ADMIN_UP
static_always_inline uword vlib_get_thread_index(void)
static void dpdk_update_counters(dpdk_device_t *xd, f64 now)
#define clib_memcpy(a, b, c)
struct rte_eth_xstat * xstats
dpdk_portid_t device_index
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)