Change-Id: I9b5f7b264f9978e3dd97b2d1eb103b7d10ac3170
Signed-off-by: Damjan Marion <damarion@cisco.com>
#define VLIB_BUFFER_DATA_SIZE (2048)
#define VLIB_BUFFER_PRE_DATA_SIZE __PRE_DATA_SIZE
#define VLIB_BUFFER_DATA_SIZE (2048)
#define VLIB_BUFFER_PRE_DATA_SIZE __PRE_DATA_SIZE
+/* Minimum buffer chain segment size. Does not apply to last buffer in chain.
+ Dataplane code can safely asume that specified amount of data is not split
+ into 2 chained buffers */
+#define VLIB_BUFFER_MIN_CHAIN_SEG_SIZE (128)
+
+/* Amount of head buffer data copied to each replica head buffer */
+#define VLIB_BUFFER_CLONE_HEAD_SIZE (256)
+
typedef u8 vlib_buffer_free_list_index_t;
/** \file
typedef u8 vlib_buffer_free_list_index_t;
/** \file
ASSERT (b->current_length >= l);
b->current_data += l;
b->current_length -= l;
ASSERT (b->current_length >= l);
b->current_data += l;
b->current_length -= l;
+
+ ASSERT ((b->flags & VLIB_BUFFER_NEXT_PRESENT) == 0 ||
+ b->current_length >= VLIB_BUFFER_MIN_CHAIN_SEG_SIZE);
}
/** \brief Check if there is enough space in buffer to advance
}
/** \brief Check if there is enough space in buffer to advance
num_cloned = vlib_buffer_clone(vm, bi0,
blm->blm_clones[thread_index],
n_clones,
num_cloned = vlib_buffer_clone(vm, bi0,
blm->blm_clones[thread_index],
n_clones,
+ VLIB_BUFFER_CLONE_HEAD_SIZE);
if (num_cloned != vec_len(blm->blm_fmasks[thread_index]))
{
if (num_cloned != vec_len(blm->blm_fmasks[thread_index]))
{
vec_validate (rm->clones[thread_index], rep0->rep_n_buckets - 1);
num_cloned = vlib_buffer_clone (vm, bi0, rm->clones[thread_index],
vec_validate (rm->clones[thread_index], rep0->rep_n_buckets - 1);
num_cloned = vlib_buffer_clone (vm, bi0, rm->clones[thread_index],
- rep0->rep_n_buckets, 128);
+ rep0->rep_n_buckets,
+ VLIB_BUFFER_CLONE_HEAD_SIZE);
if (num_cloned != rep0->rep_n_buckets)
{
if (num_cloned != rep0->rep_n_buckets)
{
n_cloned = vlib_buffer_clone (vm, bi0,
msm->clones[thread_index],
n_clones,
n_cloned = vlib_buffer_clone (vm, bi0,
msm->clones[thread_index],
n_clones,
- (vnet_buffer (b0)->l2.l2_len +
- sizeof (udp_header_t) +
- 2 * sizeof (ip6_header_t)));
+ VLIB_BUFFER_CLONE_HEAD_SIZE);
if (PREDICT_FALSE (n_cloned != n_clones))
{
if (PREDICT_FALSE (n_cloned != n_clones))
{