FD.io VPP  v18.01-8-g0eacf49
Vector Packet Processing
node.c File Reference
+ Include dependency graph for node.c:

Go to the source code of this file.

Data Structures

struct  memif_input_trace_t
 

Macros

#define foreach_memif_input_error   _(NOT_IP, "not ip packet")
 

Enumerations

enum  memif_input_error_t { MEMIF_INPUT_N_ERROR }
 

Functions

static __clib_unused u8format_memif_input_trace (u8 *s, va_list *args)
 
static_always_inline void memif_prefetch (vlib_main_t *vm, u32 bi)
 
static_always_inline void memif_buffer_add_to_chain (vlib_main_t *vm, u32 bi, u32 first_bi, u32 prev_bi)
 
static_always_inline uword memif_copy_buffer_from_rx_ring (vlib_main_t *vm, memif_if_t *mif, memif_ring_t *ring, memif_queue_t *mq, u16 ring_size, u32 n_buffer_bytes, u32 *n_free_bufs, vlib_buffer_t **first_b, u32 *first_bi, u32 *bi, u16 *num_slots)
 Copy buffer from rx ring. More...
 
static_always_inline u32 memif_next_from_ip_hdr (vlib_node_runtime_t *node, vlib_buffer_t *b)
 
static_always_inline uword memif_device_input_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, memif_if_t *mif, memif_ring_type_t type, u16 qid, memif_interface_mode_t mode)
 
uword CLIB_MULTIARCH_FN() memif_input_fn (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static void __clib_constructor memif_input_multiarch_select (void)
 

Variables

static __clib_unused char * memif_input_error_strings []
 
vlib_node_registration_t memif_input_node
 (constructor) VLIB_REGISTER_NODE (memif_input_node) More...
 
vlib_node_function_t __clib_weak memif_input_fn_avx512
 
vlib_node_function_t __clib_weak memif_input_fn_avx2
 

Macro Definition Documentation

#define foreach_memif_input_error   _(NOT_IP, "not ip packet")

Definition at line 33 of file node.c.

Enumeration Type Documentation

Enumerator
MEMIF_INPUT_N_ERROR 

Definition at line 36 of file node.c.

Function Documentation

static __clib_unused u8* format_memif_input_trace ( u8 s,
va_list *  args 
)
static

Definition at line 58 of file node.c.

+ Here is the call graph for this function:

static_always_inline void memif_buffer_add_to_chain ( vlib_main_t vm,
u32  bi,
u32  first_bi,
u32  prev_bi 
)

Definition at line 81 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline uword memif_copy_buffer_from_rx_ring ( vlib_main_t vm,
memif_if_t mif,
memif_ring_t ring,
memif_queue_t mq,
u16  ring_size,
u32  n_buffer_bytes,
u32 n_free_bufs,
vlib_buffer_t **  first_b,
u32 first_bi,
u32 bi,
u16 num_slots 
)

Copy buffer from rx ring.

Parameters
*vm (in)
*mif (in) pointer to memif interface
*ring (in) pointer to memif ring
*rd (in) pointer to ring data
ring_size(in) ring size
*n_free_bufs (in/out) the number of free vlib buffers available
**first_b (out) the first vlib buffer pointer
*first_bi (out) the first vlib buffer index
*bi (in/out) the current buffer index #param * num_slots (in/out) the number of descriptors available to read
Returns
total bytes read from rx ring also written to vlib buffers

Definition at line 116 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline uword memif_device_input_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
memif_if_t mif,
memif_ring_type_t  type,
u16  qid,
memif_interface_mode_t  mode 
)

Definition at line 221 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword CLIB_MULTIARCH_FN() memif_input_fn ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)

Definition at line 451 of file node.c.

+ Here is the call graph for this function:

static void __clib_constructor memif_input_multiarch_select ( void  )
static

Definition at line 513 of file node.c.

static_always_inline u32 memif_next_from_ip_hdr ( vlib_node_runtime_t node,
vlib_buffer_t b 
)

Definition at line 206 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline void memif_prefetch ( vlib_main_t vm,
u32  bi 
)

Definition at line 73 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

__clib_unused char* memif_input_error_strings[]
static
Initial value:
= {
#define _(n,s)
}
#define foreach_memif_input_error
Definition: node.c:33

Definition at line 44 of file node.c.

vlib_node_function_t __clib_weak memif_input_fn_avx2

Definition at line 509 of file node.c.

vlib_node_function_t __clib_weak memif_input_fn_avx512

Definition at line 508 of file node.c.

vlib_node_registration_t memif_input_node
Initial value:
= {
.function = memif_input_fn,
.name = "memif-input",
.sibling_of = "device-input",
.format_trace = format_memif_input_trace,
.state = VLIB_NODE_STATE_INTERRUPT,
.n_errors = MEMIF_INPUT_N_ERROR,
.error_strings = memif_input_error_strings,
}
static __clib_unused char * memif_input_error_strings[]
Definition: node.c:44
uword CLIB_MULTIARCH_FN() memif_input_fn(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: node.c:451
static __clib_unused u8 * format_memif_input_trace(u8 *s, va_list *args)
Definition: node.c:58

(constructor) VLIB_REGISTER_NODE (memif_input_node)

Definition at line 497 of file node.c.