From c7f942175b8c25c77ddc21561b52e3e6b5620b80 Mon Sep 17 00:00:00 2001 From: Alberto Compagno Date: Sat, 19 Jan 2019 17:28:57 +0100 Subject: Improved performance on data-fwd node: - Removed full pit entry initialization in favor of a lighter initialization on few fields - Squeezed pit entry size in order to store only the number of incomplete faces (as set in HICN_PARAM_PIT_ENTRY_PHOPS_MAX). The bitmap size is now determined by HICN_PARAM_FACES_MAX and optimized to do a fast lookup Replaced the field is_appface with the field flags in the hicn_buffer_t: - is_appface is now a flag with value 0x01 (HICN_BUFFER_FLAGS_FACE_IS_APP) - Added flag HICN_BUFFER_FLAGS_PKT_LESS_TWO_CL (0x02) to handle the copy of pkt with length < than 2*CACHE_LINES (in this case cloning is prevented by the cloning function in vpp). Such flag is initialized by the incoming face of the pkt. Change-Id: Ia956fd5719a28ee29f7fa2fd23d283964743efd8 Signed-off-by: Alberto Compagno --- hicn-plugin/src/hicn.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'hicn-plugin/src/hicn.h') diff --git a/hicn-plugin/src/hicn.h b/hicn-plugin/src/hicn.h index 02a3dfa52..c0de65de4 100755 --- a/hicn-plugin/src/hicn.h +++ b/hicn-plugin/src/hicn.h @@ -42,6 +42,12 @@ typedef u8 weight_t; #define VLIB_BUFFER_MIN_CHAIN_SEG_SIZE (128) #endif +#define HICN_BUFFER_FLAGS_DEFAULT 0x00 +#define HICN_BUFFER_FLAGS_FACE_IS_APP 0x01 +/* vlib_buffer cloning utilities impose that current_lentgh is more that 2*CLIB_CACHE_LINE_BYTES. */ +/* This flag is used to mark packets whose lenght is less that 2*CLIB_CACHE_LINE_BYTES. */ +#define HICN_BUFFER_FLAGS_PKT_LESS_TWO_CL 0x02 + /* The following is stored in the opaque2 field in the vlib_buffer_t */ typedef struct { @@ -54,8 +60,7 @@ typedef struct u8 hash_entry_id; u8 hash_bucket_flags; - u8 is_appface; /* 1 the incoming face is an - * application face, 0 otherwise */ + u8 flags; u8 dpo_ctx_id; /* used for data path */ u8 vft_id; /* " */ -- cgit 1.2.3-korg