X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Fbuffer.h;h=651e7f0dc8fb152629d2d37a137cc4833134e78f;hb=997439170aa3bb562c84e882c45331ba476e7c8e;hp=48988222de713765100dd8eee49eadd60ac869f3;hpb=d1274cb207a48f0142a5a6cbcd22d61c22dbc230;p=vpp.git diff --git a/src/vlib/buffer.h b/src/vlib/buffer.h index 48988222de7..651e7f0dc8f 100644 --- a/src/vlib/buffer.h +++ b/src/vlib/buffer.h @@ -67,11 +67,8 @@ typedef u8 vlib_buffer_free_list_index_t; _( 0, NON_DEFAULT_FREELIST, "non-default-fl") \ _( 1, IS_TRACED, 0) \ _( 2, NEXT_PRESENT, 0) \ - _( 3, IS_RECYCLED, "is-recycled") \ - _( 4, TOTAL_LENGTH_VALID, 0) \ - _( 5, REPL_FAIL, "repl-fail") \ - _( 6, RECYCLE, "recycle") \ - _( 7, EXT_HDR_VALID, "ext-hdr-valid") + _( 3, TOTAL_LENGTH_VALID, 0) \ + _( 4, EXT_HDR_VALID, "ext-hdr-valid") /* NOTE: only buffer generic flags should be defined here, please consider using user flags. i.e. src/vnet/buffer.h */ @@ -113,38 +110,29 @@ typedef struct
VLIB_BUFFER_IS_TRACED: trace this buffer.
VLIB_BUFFER_NEXT_PRESENT: this is a multi-chunk buffer.
VLIB_BUFFER_TOTAL_LENGTH_VALID: as it says -
VLIB_BUFFER_REPL_FAIL: packet replication failure -
VLIB_BUFFER_RECYCLE: as it says
VLIB_BUFFER_EXT_HDR_VALID: buffer contains valid external buffer manager header, set to avoid adding it to a flow report
VLIB_BUFFER_FLAG_USER(n): user-defined bit N */ + u32 flow_id; /**< Generic flow identifier */ - STRUCT_MARK (template_end); u32 next_buffer; /**< Next buffer for this linked-list of buffers. Only valid if VLIB_BUFFER_NEXT_PRESENT flag is set. */ - vlib_error_t error; /**< Error code for buffers to be enqueued - to error handler. - */ + STRUCT_MARK (template_end); + u32 current_config_index; /**< Used by feature subgraph arcs to visit enabled feature nodes */ - - u8 feature_arc_index; /**< Used to identify feature arcs by intermediate - feature node + vlib_error_t error; /**< Error code for buffers to be enqueued + to error handler. */ - u8 n_add_refs; /**< Number of additional references to this buffer. */ u8 buffer_pool_index; /**< index of buffer pool this buffer belongs. */ - u8 dont_waste_me[1]; /**< Available space in the (precious) - first 32 octets of buffer metadata - Before allocating any of it, discussion required! - */ u32 opaque[10]; /**< Opaque data used by sub-graphs for their own purposes. See .../vnet/vnet/buffer.h @@ -377,11 +365,6 @@ typedef struct vlib_buffer_free_list_t struct vlib_buffer_free_list_t * fl, u32 * buffers, u32 n_buffers); - /* Callback function to announce that buffers have been - added to the freelist */ - void (*buffers_added_to_freelist_function) - (struct vlib_main_t * vm, struct vlib_buffer_free_list_t * fl); - uword buffer_init_function_opaque; } __attribute__ ((aligned (16))) vlib_buffer_free_list_t; @@ -565,6 +548,10 @@ static void __vlib_add_buffer_callbacks_t_##x (void) \ clib_panic ("vlib buffer callbacks already registered"); \ vlib_buffer_callbacks = &__##x##_buffer_callbacks; \ } \ +static void __vlib_rm_buffer_callbacks_t_##x (void) \ + __attribute__((__destructor__)) ; \ +static void __vlib_rm_buffer_callbacks_t_##x (void) \ +{ vlib_buffer_callbacks = 0; } \ __VA_ARGS__ vlib_buffer_callbacks_t __##x##_buffer_callbacks /*