FD.io VPP  v18.10-34-gcce845e
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.

Functions

uword vlib_buffer_length_in_chain_slow_path (vlib_main_t *vm, vlib_buffer_t *b_first)
 
u8format_vlib_buffer (u8 *s, va_list *args)
 
u8format_vlib_buffer_and_data (u8 *s, va_list *args)
 
static u8format_vlib_buffer_known_state (u8 *s, va_list *args)
 
u8format_vlib_buffer_contents (u8 *s, va_list *va)
 
static u8vlib_validate_buffer_helper (vlib_main_t *vm, u32 bi, uword follow_buffer_next, uword **unique_hash)
 
u8vlib_validate_buffer (vlib_main_t *vm, u32 bi, uword follow_buffer_next)
 
u8vlib_validate_buffers (vlib_main_t *vm, u32 *buffers, uword next_buffer_stride, uword n_buffers, vlib_buffer_known_state_t known_state, uword follow_buffer_next)
 
void vlib_buffer_validate_alloc_free (vlib_main_t *vm, u32 *buffers, uword n_buffers, vlib_buffer_known_state_t expected_state)
 
static vlib_buffer_free_list_index_t vlib_buffer_create_free_list_helper (vlib_main_t *vm, u32 n_data_bytes, u32 is_public, u32 is_default, u8 *name)
 
vlib_buffer_free_list_index_t vlib_buffer_create_free_list (vlib_main_t *vm, u32 n_data_bytes, char *fmt,...)
 
static void del_free_list (vlib_main_t *vm, vlib_buffer_free_list_t *f)
 
void vlib_buffer_delete_free_list_internal (vlib_main_t *vm, vlib_buffer_free_list_index_t index)
 
static_always_inline void * vlib_buffer_pool_get_buffer (vlib_buffer_pool_t *bp)
 
static uword vlib_buffer_fill_free_list_internal (vlib_main_t *vm, vlib_buffer_free_list_t *fl, uword min_free_buffers)
 
void * vlib_set_buffer_free_callback (vlib_main_t *vm, void *fp)
 
static_always_inline void recycle_or_free (vlib_main_t *vm, vlib_buffer_main_t *bm, u32 bi, vlib_buffer_t *b, u32 follow_buffer_next)
 
static_always_inline void vlib_buffer_free_inline (vlib_main_t *vm, u32 *buffers, u32 n_buffers, u32 follow_buffer_next)
 
static void vlib_buffer_free_internal (vlib_main_t *vm, u32 *buffers, u32 n_buffers)
 
static void vlib_buffer_free_no_next_internal (vlib_main_t *vm, u32 *buffers, u32 n_buffers)
 
static void vlib_packet_template_buffer_init (vlib_main_t *vm, vlib_buffer_free_list_t *fl, u32 *buffers, u32 n_buffers)
 
void vlib_packet_template_init (vlib_main_t *vm, vlib_packet_template_t *t, void *packet_data, uword n_packet_data_bytes, uword min_n_buffers_each_alloc, char *fmt,...)
 
void * vlib_packet_template_get_packet (vlib_main_t *vm, vlib_packet_template_t *t, u32 *bi_result)
 
void vlib_packet_template_get_packet_helper (vlib_main_t *vm, vlib_packet_template_t *t)
 
u32 vlib_buffer_add_data (vlib_main_t *vm, vlib_buffer_free_list_index_t free_list_index, u32 buffer_index, void *data, u32 n_data_bytes)
 
u16 vlib_buffer_chain_append_data_with_alloc (vlib_main_t *vm, vlib_buffer_free_list_index_t free_list_index, vlib_buffer_t *first, vlib_buffer_t **last, void *data, u16 data_len)
 
u8 vlib_buffer_pool_create (vlib_main_t *vm, vlib_physmem_region_index_t pri, u16 buffer_size)
 
static u8format_vlib_buffer_free_list (u8 *s, va_list *va)
 
static clib_error_tshow_buffers (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
clib_error_tvlib_buffer_main_init (struct vlib_main_t *vm)
 
static clib_error_tvlib_buffers_configure (vlib_main_t *vm, unformat_input_t *input)
 

Variables

vlib_buffer_callbacks_tvlib_buffer_callbacks = 0
 
static u32 vlib_buffer_physmem_sz = 32 << 20
 
vlib_buffer_main_t buffer_main
 
vlib_main_t ** vlib_mains = &__bootstrap_vlib_main_vector.vm
 
static vlib_cli_command_t show_buffers_command
 (constructor) VLIB_CLI_COMMAND (show_buffers_command) More...
 

Detailed Description

Allocate/free network buffers.

Definition in file buffer.c.

Function Documentation

static void del_free_list ( vlib_main_t vm,
vlib_buffer_free_list_t f 
)
static

Definition at line 432 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_vlib_buffer ( u8 s,
va_list *  args 
)

Definition at line 72 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_vlib_buffer_and_data ( u8 s,
va_list *  args 
)

Definition at line 114 of file buffer.c.

+ Here is the call graph for this function:

u8* format_vlib_buffer_contents ( u8 s,
va_list *  va 
)

Definition at line 154 of file buffer.c.

+ Here is the call graph for this function:

static u8* format_vlib_buffer_free_list ( u8 s,
va_list *  va 
)
static

Definition at line 923 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* format_vlib_buffer_known_state ( u8 s,
va_list *  args 
)
static

Definition at line 126 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,
u32  follow_buffer_next 
)

Definition at line 571 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* show_buffers ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 948 of file buffer.c.

+ Here is the call graph for this function:

u32 vlib_buffer_add_data ( vlib_main_t vm,
vlib_buffer_free_list_index_t  free_list_index,
u32  buffer_index,
void *  data,
u32  n_data_bytes 
)

Definition at line 776 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u16 vlib_buffer_chain_append_data_with_alloc ( vlib_main_t vm,
vlib_buffer_free_list_index_t  free_list_index,
vlib_buffer_t first,
vlib_buffer_t **  last,
void *  data,
u16  data_len 
)

Definition at line 833 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

vlib_buffer_free_list_index_t vlib_buffer_create_free_list ( vlib_main_t vm,
u32  n_data_bytes,
char *  fmt,
  ... 
)

Definition at line 415 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_buffer_free_list_index_t vlib_buffer_create_free_list_helper ( vlib_main_t vm,
u32  n_data_bytes,
u32  is_public,
u32  is_default,
u8 name 
)
static

Definition at line 348 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_buffer_delete_free_list_internal ( vlib_main_t vm,
vlib_buffer_free_list_index_t  index 
)

Definition at line 447 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_buffer_fill_free_list_internal ( vlib_main_t vm,
vlib_buffer_free_list_t fl,
uword  min_free_buffers 
)
static

Definition at line 497 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline void vlib_buffer_free_inline ( vlib_main_t vm,
u32 buffers,
u32  n_buffers,
u32  follow_buffer_next 
)

Definition at line 599 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_buffer_free_internal ( vlib_main_t vm,
u32 buffers,
u32  n_buffers 
)
static

Definition at line 655 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_buffer_free_no_next_internal ( vlib_main_t vm,
u32 buffers,
u32  n_buffers 
)
static

Definition at line 662 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword vlib_buffer_length_in_chain_slow_path ( vlib_main_t vm,
vlib_buffer_t b_first 
)

Definition at line 55 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

clib_error_t* vlib_buffer_main_init ( struct vlib_main_t vm)

Definition at line 983 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8 vlib_buffer_pool_create ( vlib_main_t vm,
vlib_physmem_region_index_t  pri,
u16  buffer_size 
)

Definition at line 869 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline void* vlib_buffer_pool_get_buffer ( vlib_buffer_pool_t bp)

Definition at line 473 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_buffer_validate_alloc_free ( vlib_main_t vm,
u32 buffers,
uword  n_buffers,
vlib_buffer_known_state_t  expected_state 
)

Definition at line 309 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* vlib_buffers_configure ( vlib_main_t vm,
unformat_input_t input 
)
static

Definition at line 1028 of file buffer.c.

+ Here is the call graph for this function:

static void vlib_packet_template_buffer_init ( vlib_main_t vm,
vlib_buffer_free_list_t fl,
u32 buffers,
u32  n_buffers 
)
static

Definition at line 671 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void* vlib_packet_template_get_packet ( vlib_main_t vm,
vlib_packet_template_t t,
u32 bi_result 
)

Definition at line 738 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_packet_template_get_packet_helper ( vlib_main_t vm,
vlib_packet_template_t t 
)

Definition at line 758 of file buffer.c.

+ Here is the call graph for this function:

void vlib_packet_template_init ( vlib_main_t vm,
vlib_packet_template_t t,
void *  packet_data,
uword  n_packet_data_bytes,
uword  min_n_buffers_each_alloc,
char *  fmt,
  ... 
)

Definition at line 690 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void* vlib_set_buffer_free_callback ( vlib_main_t vm,
void *  fp 
)

Definition at line 561 of file buffer.c.

u8* vlib_validate_buffer ( vlib_main_t vm,
u32  bi,
uword  follow_buffer_next 
)

Definition at line 225 of file buffer.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8* vlib_validate_buffer_helper ( vlib_main_t vm,
u32  bi,
uword  follow_buffer_next,
uword **  unique_hash 
)
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:

u8* vlib_validate_buffers ( vlib_main_t vm,
u32 buffers,
uword  next_buffer_stride,
uword  n_buffers,
vlib_buffer_known_state_t  known_state,
uword  follow_buffer_next 
)

Definition at line 232 of file buffer.c.

+ Here is the call graph for this function:

Variable Documentation

vlib_buffer_main_t buffer_main

Definition at line 52 of file buffer.c.

Definition at line 293 of file buffer.c.

vlib_cli_command_t show_buffers_command
static
Initial value:
= {
.path = "show buffers",
.short_help = "Show packet buffer allocation",
.function = show_buffers,
}
static clib_error_t * show_buffers(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: buffer.c:948

(constructor) VLIB_CLI_COMMAND (show_buffers_command)

Definition at line 975 of file buffer.c.

vlib_buffer_callbacks_t* vlib_buffer_callbacks = 0

Definition at line 49 of file buffer.c.

u32 vlib_buffer_physmem_sz = 32 << 20
static

Definition at line 50 of file buffer.c.

Definition at line 303 of file buffer.c.

Definition at line 294 of file buffer.c.