From 3235382f23074e7f5b413b862f8cfed37142dbcd Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Sun, 20 Jan 2019 02:24:53 +0100 Subject: [PATCH] buffers: remove VLIB_BUFFER_DEFAULT_FREE_LIST macro and fl->n_data_bytes Change-Id: I0ba5175be077c40556f2a3ce629c5bbcd71e0a81 Signed-off-by: Damjan Marion --- src/plugins/avf/device.c | 2 +- src/plugins/marvell/pp2/pp2.c | 2 +- src/vlib/buffer.c | 27 ++++++++++----------------- src/vlib/buffer.h | 4 ---- src/vlib/buffer_funcs.h | 36 +++--------------------------------- src/vlib/main.c | 3 +-- src/vlib/unix/mc_socket.c | 8 +++----- 7 files changed, 19 insertions(+), 63 deletions(-) diff --git a/src/plugins/avf/device.c b/src/plugins/avf/device.c index 38af1cbcf8b..ff893056de9 100644 --- a/src/plugins/avf/device.c +++ b/src/plugins/avf/device.c @@ -590,7 +590,7 @@ avf_op_config_vsi_queues (vlib_main_t * vm, avf_device_t * ad) { avf_rxq_t *q = vec_elt_at_index (ad->rxqs, i); rxq->ring_len = q->size; - rxq->databuffer_size = VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES; + rxq->databuffer_size = VLIB_BUFFER_DATA_SIZE; rxq->dma_ring_addr = avf_dma_addr (vm, ad, (void *) q->descs); avf_reg_write (ad, AVF_QRX_TAIL (i), q->size - 1); } diff --git a/src/plugins/marvell/pp2/pp2.c b/src/plugins/marvell/pp2/pp2.c index 016ad53cc96..ec35a0d92b7 100644 --- a/src/plugins/marvell/pp2/pp2.c +++ b/src/plugins/marvell/pp2/pp2.c @@ -244,7 +244,7 @@ mrvl_pp2_create_if (mrvl_pp2_create_if_args_t * args) /* FIXME bpool bit select per pp */ s = format (s, "pool-%d:%d%c", pp2_id, pp2_id + 8, 0); bpool_params.match = (char *) s; - bpool_params.buff_len = VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES; + bpool_params.buff_len = VLIB_BUFFER_DATA_SIZE; /* FIXME +64 ? */ if (pp2_bpool_init (&bpool_params, &ppif->inqs[0].bpool)) { diff --git a/src/vlib/buffer.c b/src/vlib/buffer.c index 9459551a0fc..643f2c50342 100644 --- a/src/vlib/buffer.c +++ b/src/vlib/buffer.c @@ -178,17 +178,13 @@ vlib_validate_buffer_helper (vlib_main_t * vm, uword follow_buffer_next, uword ** unique_hash) { vlib_buffer_t *b = vlib_get_buffer (vm, bi); - vlib_buffer_free_list_t *fl; - - fl = pool_elt_at_index (vm->buffer_free_list_pool, - VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX); if ((signed) b->current_data < (signed) -VLIB_BUFFER_PRE_DATA_SIZE) return format (0, "current data %d before pre-data", b->current_data); - if (b->current_data + b->current_length > fl->n_data_bytes) + if (b->current_data + b->current_length > VLIB_BUFFER_DATA_SIZE) return format (0, "%d-%d beyond end of buffer %d", - b->current_data, b->current_length, fl->n_data_bytes); + b->current_data, b->current_length, VLIB_BUFFER_DATA_SIZE); if (follow_buffer_next && (b->flags & VLIB_BUFFER_NEXT_PRESENT)) { @@ -362,7 +358,7 @@ vlib_buffer_create_free_list_helper (vlib_main_t * vm, default_free_free_list_index = vlib_buffer_create_free_list_helper (vm, - /* default buffer size */ VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES, + /* default buffer size */ VLIB_BUFFER_DATA_SIZE, /* is_public */ 1, /* is_default */ 1, (u8 *) "default"); @@ -370,7 +366,7 @@ vlib_buffer_create_free_list_helper (vlib_main_t * vm, ASSERT (default_free_free_list_index == VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX); - if (n_data_bytes == VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES && is_public) + if (n_data_bytes == VLIB_BUFFER_DATA_SIZE && is_public) return default_free_free_list_index; } @@ -380,7 +376,6 @@ vlib_buffer_create_free_list_helper (vlib_main_t * vm, f->index = f - vm->buffer_free_list_pool; vec_validate (f->buffers, 0); vec_reset_length (f->buffers); - f->n_data_bytes = vlib_buffer_round_size (n_data_bytes); f->min_n_buffers_each_alloc = VLIB_FRAME_SIZE; f->buffer_pool_index = 0; f->name = clib_mem_is_vec (name) ? name : format (0, "%s", name); @@ -390,9 +385,9 @@ vlib_buffer_create_free_list_helper (vlib_main_t * vm, if (is_public) { - uword *p = hash_get (bm->free_list_by_size, f->n_data_bytes); + uword *p = hash_get (bm->free_list_by_size, VLIB_BUFFER_DATA_SIZE); if (!p) - hash_set (bm->free_list_by_size, f->n_data_bytes, f->index); + hash_set (bm->free_list_by_size, VLIB_BUFFER_DATA_SIZE, f->index); } for (i = 1; i < vec_len (vlib_mains); i++) @@ -718,8 +713,7 @@ vlib_buffer_chain_append_data_with_alloc (vlib_main_t * vm, u16 data_len) { vlib_buffer_t *l = *last; - u32 n_buffer_bytes = - vlib_buffer_free_list_buffer_size (vm, free_list_index); + u32 n_buffer_bytes = VLIB_BUFFER_DATA_SIZE; u16 copied = 0; ASSERT (n_buffer_bytes >= l->current_length + l->current_data); while (data_len) @@ -800,13 +794,13 @@ format_vlib_buffer_free_list (u8 * s, va_list * va) "Thread", "Name", "Index", "Size", "Alloc", "Free", "#Alloc", "#Free"); - size = sizeof (vlib_buffer_t) + f->n_data_bytes; + size = sizeof (vlib_buffer_t) + VLIB_BUFFER_DATA_SIZE; n_free = vec_len (f->buffers); bytes_alloc = size * f->n_alloc; bytes_free = size * n_free; s = format (s, "%7d%30v%12d%12d%=12U%=12U%=12d%=12d", threadnum, - f->name, f->index, f->n_data_bytes, + f->name, f->index, VLIB_BUFFER_DATA_SIZE, format_memory_size, bytes_alloc, format_memory_size, bytes_free, f->n_alloc, n_free); @@ -900,8 +894,7 @@ retry: pool_index = vlib_buffer_register_physmem_map (vm, physmem_map_index); vlib_buffer_pool_t *bp = vlib_buffer_pool_get (vm, pool_index); clib_spinlock_init (&bp->lock); - bp->buffer_size = VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES + - sizeof (vlib_buffer_t); + bp->buffer_size = VLIB_BUFFER_DATA_SIZE + sizeof (vlib_buffer_t); return 0; } diff --git a/src/vlib/buffer.h b/src/vlib/buffer.h index af9df685376..505a5839a18 100644 --- a/src/vlib/buffer.h +++ b/src/vlib/buffer.h @@ -367,9 +367,6 @@ typedef struct vlib_buffer_free_list_t /* Our index into vlib_main_t's buffer_free_list_pool. */ vlib_buffer_free_list_index_t index; - /* Number of data bytes for buffers in this free list. */ - u32 n_data_bytes; - /* Number of buffers to allocate when we need to allocate new buffers */ u32 min_n_buffers_each_alloc; @@ -437,7 +434,6 @@ typedef struct u32 * buffers, u32 n_buffers, u32 follow_buffer_next); #define VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX (0) -#define VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES VLIB_BUFFER_DATA_SIZE /* Hash table mapping buffer size (rounded to next unit of sizeof (vlib_buffer_t)) to free list index. */ diff --git a/src/vlib/buffer_funcs.h b/src/vlib/buffer_funcs.h index db1d9611005..60eb8cde09a 100644 --- a/src/vlib/buffer_funcs.h +++ b/src/vlib/buffer_funcs.h @@ -614,28 +614,6 @@ vlib_buffer_free_list_index_t vlib_buffer_create_free_list (vlib_main_t * vm, u32 n_data_bytes, char *fmt, ...); -always_inline vlib_buffer_free_list_t * -vlib_buffer_get_free_list (vlib_main_t * vm, - vlib_buffer_free_list_index_t free_list_index) -{ - vlib_buffer_free_list_t *f; - - f = pool_elt_at_index (vm->buffer_free_list_pool, free_list_index); - - /* Sanity: indices must match. */ - ASSERT (f->index == free_list_index); - - return f; -} - -always_inline u32 -vlib_buffer_free_list_buffer_size (vlib_main_t * vm, - vlib_buffer_free_list_index_t index) -{ - vlib_buffer_free_list_t *f = vlib_buffer_get_free_list (vm, index); - return f->n_data_bytes; -} - /* Append given data to end of buffer, possibly allocating new buffers. */ int vlib_buffer_add_data (vlib_main_t * vm, u32 * buffer_index, void *data, u32 n_data_bytes); @@ -886,8 +864,7 @@ vlib_buffer_chain_append_data (vlib_main_t * vm, vlib_buffer_t * first, vlib_buffer_t * last, void *data, u16 data_len) { - u32 n_buffer_bytes = - vlib_buffer_free_list_buffer_size (vm, free_list_index); + u32 n_buffer_bytes = VLIB_BUFFER_DATA_SIZE; ASSERT (n_buffer_bytes >= last->current_length + last->current_data); u16 len = clib_min (data_len, n_buffer_bytes - last->current_length - @@ -1073,14 +1050,9 @@ vlib_buffer_chain_compress (vlib_main_t * vm, /* this is already big enough or not a chain */ return; } - /* probe free list to find allocated buffer size to avoid overfill */ - vlib_buffer_free_list_t *free_list; - - free_list = pool_elt_at_index (vm->buffer_free_list_pool, - VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX); u32 want_first_size = clib_min (VLIB_BUFFER_CHAIN_MIN_FIRST_DATA_SIZE, - free_list->n_data_bytes - + VLIB_BUFFER_DATA_SIZE - first->current_data); do { @@ -1127,9 +1099,7 @@ always_inline int vlib_buffer_chain_linearize (vlib_main_t * vm, vlib_buffer_t * first) { vlib_buffer_t *b = first; - vlib_buffer_free_list_t *fl = - vlib_buffer_get_free_list (vm, VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX); - u32 buf_len = fl->n_data_bytes; + u32 buf_len = VLIB_BUFFER_DATA_SIZE; // free buffer chain starting from the second buffer int free_count = (b->flags & VLIB_BUFFER_NEXT_PRESENT) != 0; u32 chain_to_free = b->next_buffer; diff --git a/src/vlib/main.c b/src/vlib/main.c index 160050486c5..afdf2e42c69 100644 --- a/src/vlib/main.c +++ b/src/vlib/main.c @@ -1990,8 +1990,7 @@ vlib_main (vlib_main_t * volatile vm, unformat_input_t * input) goto done; /* Create default buffer free list. */ - vlib_buffer_create_free_list (vm, VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES, - "default"); + vlib_buffer_create_free_list (vm, VLIB_BUFFER_DATA_SIZE, "default"); nm->timing_wheel = clib_mem_alloc_aligned (sizeof (TWT (tw_timer_wheel)), CLIB_CACHE_LINE_BYTES); diff --git a/src/vlib/unix/mc_socket.c b/src/vlib/unix/mc_socket.c index c820981dae0..aaf73ae5e1e 100644 --- a/src/vlib/unix/mc_socket.c +++ b/src/vlib/unix/mc_socket.c @@ -165,7 +165,7 @@ recvmsg_helper (mc_socket_main_t * msm, vlib_main_t *vm = msm->mc_main.vlib_main; vlib_buffer_t *b; uword n_left, n_alloc, n_mtu, i, i_rx; - const uword buffer_size = VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES; + const uword buffer_size = VLIB_BUFFER_DATA_SIZE; word n_bytes_left; /* Make sure we have at least a MTU worth of buffers. */ @@ -1011,10 +1011,8 @@ mc_socket_main_init (mc_socket_main_t * msm, char **intfc_probe_list, } msm->rx_mtu_n_bytes = mtu; - msm->rx_mtu_n_buffers = - msm->rx_mtu_n_bytes / VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES; - msm->rx_mtu_n_buffers += - (msm->rx_mtu_n_bytes % VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES) != 0; + msm->rx_mtu_n_buffers = msm->rx_mtu_n_bytes / VLIB_BUFFER_DATA_SIZE; + msm->rx_mtu_n_buffers += (msm->rx_mtu_n_bytes % VLIB_BUFFER_DATA_SIZE) != 0; error = socket_setup (msm); if (error) -- 2.16.6