diff options
author | Alberto Compagno <acompagn+fdio@cisco.com> | 2019-01-19 17:28:57 +0100 |
---|---|---|
committer | Alberto Compagno <acompagn+fdio@cisco.com> | 2019-01-19 17:35:54 +0100 |
commit | c7f942175b8c25c77ddc21561b52e3e6b5620b80 (patch) | |
tree | d9cecc4574ae9ed2f4a9e041010c8794e6001363 /hicn-plugin/src/data_pcslookup_node.c | |
parent | d13d37534d9449dd54277af664310d5f957dc44a (diff) |
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 <acompagn+fdio@cisco.com>
Diffstat (limited to 'hicn-plugin/src/data_pcslookup_node.c')
-rwxr-xr-x | hicn-plugin/src/data_pcslookup_node.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/hicn-plugin/src/data_pcslookup_node.c b/hicn-plugin/src/data_pcslookup_node.c index 222545106..231d8557e 100755 --- a/hicn-plugin/src/data_pcslookup_node.c +++ b/hicn-plugin/src/data_pcslookup_node.c @@ -127,7 +127,9 @@ hicn_data_pcslookup_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, int res = hicn_hashtb_lookup_node (rt->pitcs->pcs_table, nameptr, namelen, name_hash, - !(hb0->is_appface) /* take lock */ , + !(hb0->flags & + HICN_BUFFER_FLAGS_FACE_IS_APP) + /* take lock */ , &node_id0, &dpo_ctx_id0, &vft_id0, &is_cs0, &hash_entry_id, &bucket_id, @@ -137,7 +139,7 @@ hicn_data_pcslookup_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, if ((res == HICN_ERROR_HASHTB_HASH_NOT_FOUND || (res == HICN_ERROR_NONE && is_cs0)) - && (hb0->is_appface)) + && (hb0->flags & HICN_BUFFER_FLAGS_FACE_IS_APP)) { next0 = HICN_DATA_PCSLOOKUP_NEXT_STORE_DATA; } |