From fbe4e36b9924c135410e1d52c959d0c3629be12b Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Fri, 9 Oct 2020 16:43:43 +0200 Subject: acl: do vlib_buffer_enqueue_to_next in outer function Improves compilation time and reduces object file size for 1MB Type: improvement Change-Id: Ibe4840c0ced22070248d93822ea61afe20aff65c Signed-off-by: Damjan Marion --- src/plugins/acl/dataplane_node.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/plugins/acl/dataplane_node.c') diff --git a/src/plugins/acl/dataplane_node.c b/src/plugins/acl/dataplane_node.c index a9c0edafe45..77aaa0e4402 100644 --- a/src/plugins/acl/dataplane_node.c +++ b/src/plugins/acl/dataplane_node.c @@ -326,7 +326,7 @@ acl_fa_inner_node_fn (vlib_main_t * vm, int with_stateful_datapath, int node_trace_on, int reclassify_sessions) { - u32 n_left, *from; + u32 n_left; u32 pkts_exist_session = 0; u32 pkts_new_session = 0; u32 pkts_acl_permit = 0; @@ -349,7 +349,6 @@ acl_fa_inner_node_fn (vlib_main_t * vm, u32 saved_packet_count = 0; u32 saved_byte_count = 0; - from = vlib_frame_vector_args (frame); error_node = vlib_node_get_runtime (vm, node->node_index); no_error_existing_session = error_node->errors[ACL_FA_ERROR_ACL_EXIST_SESSION]; @@ -579,8 +578,6 @@ acl_fa_inner_node_fn (vlib_main_t * vm, } } - vlib_buffer_enqueue_to_next (vm, node, from, pw->nexts, frame->n_vectors); - /* * if we were had an acl match then we have a counter to increment. * else it is all zeroes, so this will be harmless. @@ -647,13 +644,19 @@ acl_fa_node_fn (vlib_main_t * vm, { /* select the reclassify/no-reclassify version of the datapath */ acl_main_t *am = &acl_main; + acl_fa_per_worker_data_t *pw = &am->per_worker_data[vm->thread_index]; + uword rv; if (am->fa_sessions_hash_is_initialized) - return acl_fa_outer_node_fn (vm, node, frame, is_ip6, is_input, - is_l2_path, 1); + rv = acl_fa_outer_node_fn (vm, node, frame, is_ip6, is_input, + is_l2_path, 1); else - return acl_fa_outer_node_fn (vm, node, frame, is_ip6, is_input, - is_l2_path, 0); + rv = acl_fa_outer_node_fn (vm, node, frame, is_ip6, is_input, + is_l2_path, 0); + + vlib_buffer_enqueue_to_next (vm, node, vlib_frame_vector_args (frame), + pw->nexts, frame->n_vectors); + return rv; } -- cgit 1.2.3-korg