FD.io VPP  v18.04-17-g3a0d853
Vector Packet Processing
buffer.c File Reference

Allocate/free network buffers. More...

+ Include dependency graph for buffer.c:

Go to the source code of this file.

Data Structures

struct  dpdk_buffer_per_thread_data
 
struct  dpdk_buffer_main_t
 

Functions

 STATIC_ASSERT (VLIB_BUFFER_PRE_DATA_SIZE==RTE_PKTMBUF_HEADROOM,"VLIB_BUFFER_PRE_DATA_SIZE must be equal to RTE_PKTMBUF_HEADROOM")
 
static_always_inline void dpdk_rte_pktmbuf_free (vlib_main_t *vm, u32 thread_index, vlib_buffer_t *b)
 
static void del_free_list (vlib_main_t *vm, vlib_buffer_free_list_t *f)
 
static void dpdk_buffer_delete_free_list (vlib_main_t *vm, vlib_buffer_free_list_index_t free_list_index)
 
uword CLIB_MULTIARCH_FN() dpdk_buffer_fill_free_list (vlib_main_t *vm, vlib_buffer_free_list_t *fl, uword min_free_buffers)
 
static_always_inline void dpdk_prefetch_buffer_by_index (vlib_main_t *vm, u32 bi)
 
static_always_inline void recycle_or_free (vlib_main_t *vm, vlib_buffer_main_t *bm, u32 bi, vlib_buffer_t *b)
 
static_always_inline void vlib_buffer_free_inline (vlib_main_t *vm, u32 *buffers, u32 n_buffers, u32 follow_buffer_next)
 
void CLIB_MULTIARCH_FN() dpdk_buffer_free (vlib_main_t *vm, u32 *buffers, u32 n_buffers)
 
void CLIB_MULTIARCH_FN() dpdk_buffer_free_no_next (vlib_main_t *vm, u32 *buffers, u32 n_buffers)
 
static void dpdk_packet_template_init (vlib_main_t *vm, void *vt, void *packet_data, uword n_packet_data_bytes, uword min_n_buffers_each_alloc, u8 *name)
 
static clib_error_tscan_vfio_fd (void *arg, u8 *path_name, u8 *file_name)
 
clib_error_tdpdk_pool_create (vlib_main_t *vm, u8 *pool_name, u32 elt_size, u32 num_elts, u32 pool_priv_size, u16 cache_size, u8 numa, struct rte_mempool **_mp, vlib_physmem_region_index_t *pri)
 
clib_error_tdpdk_buffer_pool_create (vlib_main_t *vm, unsigned num_mbufs, unsigned socket_id)
 
static clib_error_tbuffer_state_validation_init (vlib_main_t *vm)
 
static clib_error_tdpdk_buffer_init (vlib_main_t *vm)
 
 VLIB_BUFFER_REGISTER_CALLBACKS (dpdk, static)
 
static void __clib_constructor dpdk_input_multiarch_select (void)
 

Variables

dpdk_buffer_main_t dpdk_buffer_main
 
u32vlib_buffer_state_validation_lock
 
uwordvlib_buffer_state_validation_hash
 
void * vlib_buffer_state_heap
 
vlib_buffer_fill_free_list_cb_t __clib_weak dpdk_buffer_fill_free_list_avx512
 
vlib_buffer_fill_free_list_cb_t __clib_weak dpdk_buffer_fill_free_list_avx2
 
vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_avx512
 
vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_avx2
 
vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_avx512
 
vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_avx2
 

Detailed Description

Allocate/free network buffers.

Definition in file buffer.c.

Function Documentation

static clib_error_t* buffer_state_validation_init ( vlib_main_t vm)
static

Definition at line 633 of file buffer.c.

+ Here is the call graph for this function:

static void del_free_list ( vlib_main_t vm,
vlib_buffer_free_list_t f 
)
static

Definition at line 151 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void dpdk_buffer_delete_free_list ( vlib_main_t vm,
vlib_buffer_free_list_index_t  free_list_index 
)
static

Definition at line 171 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword CLIB_MULTIARCH_FN() dpdk_buffer_fill_free_list ( vlib_main_t vm,
vlib_buffer_free_list_t fl,
uword  min_free_buffers 
)

Definition at line 197 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void CLIB_MULTIARCH_FN() dpdk_buffer_free ( vlib_main_t vm,
u32 buffers,
u32  n_buffers 
)

Definition at line 424 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void CLIB_MULTIARCH_FN() dpdk_buffer_free_no_next ( vlib_main_t vm,
u32 buffers,
u32  n_buffers 
)

Definition at line 432 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* dpdk_buffer_init ( vlib_main_t vm)
static

Definition at line 713 of file buffer.c.

+ Here is the call graph for this function:

clib_error_t* dpdk_buffer_pool_create ( vlib_main_t vm,
unsigned  num_mbufs,
unsigned  socket_id 
)

Definition at line 557 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void __clib_constructor dpdk_input_multiarch_select ( void  )
static

Definition at line 747 of file buffer.c.

static void dpdk_packet_template_init ( vlib_main_t vm,
void *  vt,
void *  packet_data,
uword  n_packet_data_bytes,
uword  min_n_buffers_each_alloc,
u8 name 
)
static

Definition at line 441 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* dpdk_pool_create ( vlib_main_t vm,
u8 pool_name,
u32  elt_size,
u32  num_elts,
u32  pool_priv_size,
u16  cache_size,
u8  numa,
struct rte_mempool **  _mp,
vlib_physmem_region_index_t pri 
)

Definition at line 483 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline void dpdk_prefetch_buffer_by_index ( vlib_main_t vm,
u32  bi 
)

Definition at line 305 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline void dpdk_rte_pktmbuf_free ( vlib_main_t vm,
u32  thread_index,
vlib_buffer_t b 
)

Definition at line 107 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline void recycle_or_free ( vlib_main_t vm,
vlib_buffer_main_t bm,
u32  bi,
vlib_buffer_t b 
)

Definition at line 316 of file buffer.c.

+ Here is the call graph for this function:

static clib_error_t* scan_vfio_fd ( void *  arg,
u8 path_name,
u8 file_name 
)
static

Definition at line 458 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

STATIC_ASSERT ( VLIB_BUFFER_PRE_DATA_SIZE  = =RTE_PKTMBUF_HEADROOM,
"VLIB_BUFFER_PRE_DATA_SIZE must be equal to RTE_PKTMBUF_HEADROOM"   
)
static_always_inline void vlib_buffer_free_inline ( vlib_main_t vm,
u32 buffers,
u32  n_buffers,
u32  follow_buffer_next 
)

Definition at line 349 of file buffer.c.

+ Here is the call graph for this function:

VLIB_BUFFER_REGISTER_CALLBACKS ( dpdk  ,
static   
)

+ Here is the caller graph for this function:

Variable Documentation

vlib_buffer_fill_free_list_cb_t __clib_weak dpdk_buffer_fill_free_list_avx2

Definition at line 740 of file buffer.c.

vlib_buffer_fill_free_list_cb_t __clib_weak dpdk_buffer_fill_free_list_avx512

Definition at line 739 of file buffer.c.

vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_avx2

Definition at line 742 of file buffer.c.

vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_avx512

Definition at line 741 of file buffer.c.

vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_avx2

Definition at line 744 of file buffer.c.

vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_avx512

Definition at line 743 of file buffer.c.

dpdk_buffer_main_t dpdk_buffer_main

Definition at line 104 of file buffer.c.

void* vlib_buffer_state_heap

Definition at line 630 of file buffer.c.

uword* vlib_buffer_state_validation_hash

Definition at line 629 of file buffer.c.

u32* vlib_buffer_state_validation_lock

Definition at line 628 of file buffer.c.