FD.io VPP  v18.07-34-g55fbdb9
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, int maybe_next)
 
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 (vlib_buffer_t *b)
 
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 610 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 132 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 152 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 178 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 395 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 403 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 690 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 542 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 724 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 412 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 454 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 ( vlib_buffer_t b)

Definition at line 271 of file buffer.c.

+ 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,
int  maybe_next 
)

Definition at line 103 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 280 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 429 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 310 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 717 of file buffer.c.

vlib_buffer_fill_free_list_cb_t __clib_weak dpdk_buffer_fill_free_list_avx512

Definition at line 716 of file buffer.c.

vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_avx2

Definition at line 719 of file buffer.c.

vlib_buffer_free_cb_t __clib_weak dpdk_buffer_free_avx512

Definition at line 718 of file buffer.c.

vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_avx2

Definition at line 721 of file buffer.c.

vlib_buffer_free_no_next_cb_t __clib_weak dpdk_buffer_free_no_next_avx512

Definition at line 720 of file buffer.c.

dpdk_buffer_main_t dpdk_buffer_main

Definition at line 100 of file buffer.c.

void* vlib_buffer_state_heap

Definition at line 607 of file buffer.c.

uword* vlib_buffer_state_validation_hash

Definition at line 606 of file buffer.c.

u32* vlib_buffer_state_validation_lock

Definition at line 605 of file buffer.c.