summaryrefslogtreecommitdiffstats
path: root/src/vlib/buffer.h
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2018-10-31 10:59:02 +0100
committerMarco Varlese <marco.varlese@suse.de>2018-11-02 08:54:02 +0000
commitbd0da97e5ac0f84e1ea8e6e7f9549dd4e1a6a4ab (patch)
tree246454ea45763bdca40b608cc89735ad23dcd00a /src/vlib/buffer.h
parent93468adfc4c5a449532fbfecd575f17d9cae7099 (diff)
vlib: define minimum chained buffer segment size
Change-Id: I9b5f7b264f9978e3dd97b2d1eb103b7d10ac3170 Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vlib/buffer.h')
-rw-r--r--src/vlib/buffer.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/vlib/buffer.h b/src/vlib/buffer.h
index f9750ecf3e1..99f40e840a5 100644
--- a/src/vlib/buffer.h
+++ b/src/vlib/buffer.h
@@ -51,6 +51,14 @@
#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
@@ -224,6 +232,9 @@ vlib_buffer_advance (vlib_buffer_t * b, word 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