25 #define AF_XDP_NUM_RX_QUEUES_ALL ((u16)-1) 27 #define af_xdp_log(lvl, dev, f, ...) \ 28 vlib_log(lvl, af_xdp_main.log_class, "%v: " f, (dev)->name, ##__VA_ARGS__) 30 #define foreach_af_xdp_device_flags \ 31 _(0, INITIALIZED, "initialized") \ 32 _(1, ERROR, "error") \ 33 _(2, ADMIN_UP, "admin-up") \ 34 _(4, LINK_UP, "link-up") \ 35 _(8, ZEROCOPY, "zero-copy") \ 39 #define _(a, b, c) AF_XDP_DEVICE_F_##b = (1 << a), 44 #define af_xdp_device_error(dev, fmt, ...) \ 47 clib_error_t *err_ = clib_error_return_unix (0, fmt, ## __VA_ARGS__); \ 48 if (!clib_atomic_bool_cmp_and_swap (&(dev)->error, 0, err_)) \ 49 clib_error_free(err_); \ 58 struct xsk_ring_cons rx;
59 struct xsk_ring_prod fq;
74 struct xsk_ring_prod tx;
75 struct xsk_ring_cons cq;
164 #define foreach_af_xdp_tx_func_error \ 165 _(NO_FREE_SLOTS, "no free tx slots") \ 166 _(SENDTO_REQUIRED, "sendto required") \ 167 _(SENDTO_FAILURES, "sendto failures") 171 #define _(f,s) AF_XDP_TX_ERROR_##f,
#define CLIB_CACHE_LINE_ALIGN_MARK(mark)
vnet_device_class_t af_xdp_device_class
u32 per_interface_next_index
format_function_t format_af_xdp_device_name
void af_xdp_delete_if(vlib_main_t *vm, af_xdp_device_t *ad)
struct _vnet_device_class vnet_device_class_t
af_xdp_device_t * devices
vlib_log_class_t log_class
vlib_buffer_t * buffer_template
af_xdp_main_t af_xdp_main
format_function_t format_af_xdp_input_trace
#define foreach_af_xdp_device_flags
void af_xdp_create_if(vlib_main_t *vm, af_xdp_create_if_args_t *args)
unformat_function_t unformat_af_xdp_create_if_args
format_function_t format_af_xdp_device
struct _vlib_node_registration vlib_node_registration_t
#define foreach_af_xdp_tx_func_error
VLIB buffer representation.
vlib_node_registration_t af_xdp_input_node
(constructor) VLIB_REGISTER_NODE (af_xdp_input_node)
struct bpf_object * bpf_obj