diff options
Diffstat (limited to 'hicn-plugin')
-rw-r--r-- | hicn-plugin/README.md | 2 | ||||
-rw-r--r-- | hicn-plugin/src/data_fwd.h | 38 | ||||
-rw-r--r-- | hicn-plugin/src/data_fwd_node.c | 11 | ||||
-rw-r--r-- | hicn-plugin/src/interest_hitcs_node.c | 4 | ||||
-rw-r--r-- | hicn-plugin/src/pg.c | 8 |
5 files changed, 22 insertions, 41 deletions
diff --git a/hicn-plugin/README.md b/hicn-plugin/README.md index e0e0580de..22e38a015 100644 --- a/hicn-plugin/README.md +++ b/hicn-plugin/README.md @@ -65,7 +65,7 @@ hICN-plugin has been tested in: Build dependencies: -- VPP 19.01 +- VPP 19.04 - DEB packages: - vpp - vpp-lib diff --git a/hicn-plugin/src/data_fwd.h b/hicn-plugin/src/data_fwd.h index 4e37e6087..742bb2882 100644 --- a/hicn-plugin/src/data_fwd.h +++ b/hicn-plugin/src/data_fwd.h @@ -20,17 +20,6 @@ #include "pcs.h" -/* - * Node context data; we think this is per-thread/instance - */ -typedef struct hicn_data_fwd_runtime_s -{ - vlib_combined_counter_main_t repm_counters; - - /* per-cpu vector of cloned packets */ - u32 **clones; -} hicn_data_fwd_runtime_t; - /* Trace context struct */ typedef struct { @@ -86,9 +75,8 @@ vlib_buffer_clone_256_2 (vlib_main_t * vm, u32 src_buffer, u32 * buffers, } return n_buffers; } - n_buffers = vlib_buffer_alloc_from_free_list (vm, buffers, n_buffers, - vlib_buffer_get_free_list_index - (s)); + n_buffers = vlib_buffer_alloc_from_pool (vm, buffers, n_buffers, + s->buffer_pool_index); for (i = 0; i < n_buffers; i++) { @@ -96,8 +84,6 @@ vlib_buffer_clone_256_2 (vlib_main_t * vm, u32 src_buffer, u32 * buffers, d->current_data = s->current_data; d->current_length = head_end_offset; d->trace_index = s->trace_index; - vlib_buffer_set_free_list_index (d, - vlib_buffer_get_free_list_index (s)); d->total_length_not_including_first_buffer = s->current_length - head_end_offset; @@ -116,11 +102,11 @@ vlib_buffer_clone_256_2 (vlib_main_t * vm, u32 src_buffer, u32 * buffers, d->next_buffer = src_buffer; } vlib_buffer_advance (s, head_end_offset); - s->n_add_refs = n_buffers - 1; + s->ref_count = n_buffers - 1; while (s->flags & VLIB_BUFFER_NEXT_PRESENT) { s = vlib_get_buffer (vm, s->next_buffer); - s->n_add_refs = n_buffers - 1; + s->ref_count = n_buffers - 1; } return n_buffers; @@ -129,7 +115,7 @@ vlib_buffer_clone_256_2 (vlib_main_t * vm, u32 src_buffer, u32 * buffers, /** * @brief Create multiple clones of buffer and store them * in the supplied array. Unlike the function in the vlib library, - * we allow src_buffer to have n_add_refs != 0. + * we allow src_buffer to have ref_count != 0. * * @param vm - (vlib_main_t *) vlib main data structure pointer * @param src_buffer - (u32) source buffer index @@ -154,13 +140,13 @@ vlib_buffer_clone2 (vlib_main_t * vm, u32 src_buffer, u32 * buffers, s->total_length_not_including_first_buffer = 0; u16 n_cloned = 0; - u8 n_clone_src = 255 - s->n_add_refs; + u8 n_clone_src = 255 - s->ref_count; /* * We need to copy src for all the clones that cannot be chained in * the src_buffer */ - /* MAX(n_add_refs) = 256 */ + /* MAX(ref_count) = 256 */ if (n_buffers > n_clone_src) { vlib_buffer_t *copy; @@ -174,25 +160,25 @@ vlib_buffer_clone2 (vlib_main_t * vm, u32 src_buffer, u32 * buffers, n_buffers -= n_cloned; } /* - * vlib_buffer_clone_256 check if n_add_refs is 0. We force it to be + * vlib_buffer_clone_256 check if ref_count is 0. We force it to be * 0 before calling the function and we retore it to the right value * after the function has been called */ - u8 tmp_n_add_refs = s->n_add_refs; + u8 tmp_ref_count = s->ref_count; - s->n_add_refs = 0; + s->ref_count = 0; /* * The regular vlib_buffer_clone_256 does copy if we need to clone * only one packet. While this is not a problem per se, it adds * complexity to the code, especially because we need to add 1 to - * n_add_refs when the packet is cloned. + * ref_count when the packet is cloned. */ n_cloned += vlib_buffer_clone_256_2 (vm, src_buffer, (buffers + n_cloned), n_buffers, head_end_offset); - s->n_add_refs += tmp_n_add_refs; + s->ref_count += tmp_ref_count; return n_cloned; } diff --git a/hicn-plugin/src/data_fwd_node.c b/hicn-plugin/src/data_fwd_node.c index efb98164d..0b8685ff2 100644 --- a/hicn-plugin/src/data_fwd_node.c +++ b/hicn-plugin/src/data_fwd_node.c @@ -271,7 +271,7 @@ hicn_data_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, * longer in any frame. The vlib_buffer will be freed when * all its cloned vlib_buffer will be freed. */ - b0->n_add_refs--; + b0->ref_count--; } /* Delete the PIT entry */ @@ -294,7 +294,7 @@ hicn_data_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, * longer in any frame. The vlib_buffer will be freed when * all its cloned vlib_buffer will be freed. */ - b0->n_add_refs--; + b0->ref_count--; } /* Delete the PIT entry */ @@ -403,12 +403,12 @@ hicn_satisfy_faces (vlib_main_t * vm, u32 bi0, else { /* Add one reference to maintain the buffer in the CS. - * b0->n_add_refs == 0 has two meaning: it has 1 buffer or no buffer chained to it. + * b0->ref_count == 0 has two meaning: it has 1 buffer or no buffer chained to it. * vlib_buffer_clone2 add a number of reference equalt to pitp->u.pit.faces.n_faces - 1 * as vlib_buffer_clone does. So after all the packet are forwarded the buffer stored in - * the CS will have n_add_refs == 0; + * the CS will have ref_count == 0; */ - b0->n_add_refs++; + b0->ref_count++; } found = n_left_from = @@ -621,7 +621,6 @@ VLIB_REGISTER_NODE(hicn_data_fwd_node) = .function = hicn_data_node_fn, .name = "hicn-data-fwd", .vector_size = sizeof(u32), - .runtime_data_bytes = sizeof(hicn_data_fwd_runtime_t), .format_trace = hicn_data_fwd_format_trace, .type = VLIB_NODE_TYPE_INTERNAL, .n_errors = ARRAY_LEN(hicn_data_fwd_error_strings), diff --git a/hicn-plugin/src/interest_hitcs_node.c b/hicn-plugin/src/interest_hitcs_node.c index 8ddd4f59e..aad7ed74e 100644 --- a/hicn-plugin/src/interest_hitcs_node.c +++ b/hicn-plugin/src/interest_hitcs_node.c @@ -60,12 +60,12 @@ clone_from_cs (vlib_main_t * vm, u32 * bi0_cs, vlib_buffer_t * dest, u8 isv6) else { vlib_buffer_advance (cs_buf, -buffer_advance); - if (PREDICT_FALSE (cs_buf->n_add_refs == 255)) + if (PREDICT_FALSE (cs_buf->ref_count == 255)) { vlib_buffer_t *cs_buf2 = vlib_buffer_copy (vm, cs_buf); vlib_buffer_advance (cs_buf, buffer_advance); *bi0_cs = vlib_get_buffer_index (vm, cs_buf2); - cs_buf->n_add_refs--; + cs_buf->ref_count--; cs_buf = cs_buf2; } diff --git a/hicn-plugin/src/pg.c b/hicn-plugin/src/pg.c index 643aff2be..8181d865e 100644 --- a/hicn-plugin/src/pg.c +++ b/hicn-plugin/src/pg.c @@ -1056,9 +1056,7 @@ convert_interest_to_data_v4 (vlib_main_t * vm, vlib_buffer_t * b0, bytes_to_copy = 1500 - pkt_len; } /* Add content to the data packet */ - vlib_buffer_add_data (vm, - VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX, &bi0, - rb->data, bytes_to_copy); + vlib_buffer_add_data (vm, &bi0, rb->data, bytes_to_copy); b0 = vlib_get_buffer (vm, bi0); @@ -1094,9 +1092,7 @@ convert_interest_to_data_v6 (vlib_main_t * vm, vlib_buffer_t * b0, bytes_to_copy = 1500 - pkt_len; } /* Add content to the data packet */ - vlib_buffer_add_data (vm, - VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX, &bi0, - rb->data, bytes_to_copy); + vlib_buffer_add_data (vm, &bi0, rb->data, bytes_to_copy); b0 = vlib_get_buffer (vm, bi0); |