From 178cf493d009995b28fdf220f04c98860ff79a9b Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Tue, 13 Nov 2018 16:34:13 -0500 Subject: Remove c-11 memcpy checks from perf-critical code Change-Id: Id4f37f5d4a03160572954a416efa1ef9b3d79ad1 Signed-off-by: Dave Barach --- src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam.c | 2 +- src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_trace.c | 3 +- src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_util.h | 2 +- src/plugins/nsh/nsh.c | 48 +++++++++++------------ src/plugins/nsh/nsh_pop.c | 6 +-- 5 files changed, 31 insertions(+), 30 deletions(-) (limited to 'src/plugins/nsh') diff --git a/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam.c b/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam.c index 73b57f64e90..57e5e6cfa39 100644 --- a/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam.c +++ b/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam.c @@ -242,7 +242,7 @@ u32 fib_path_get_resolving_interface (fib_node_index_t path_index); t1->dst_addr.ip4.as_u32 = fib_prefix.fp_addr.ip4.as_u32; key4_copy = clib_mem_alloc (sizeof (*key4_copy)); clib_memset(key4_copy, 0, sizeof(*key4_copy)); - clib_memcpy (key4_copy, &key4, sizeof (*key4_copy)); + clib_memcpy_fast (key4_copy, &key4, sizeof (*key4_copy)); hash_set_mem (hm->dst_by_ip4, key4_copy, t1 - hm->dst_tunnels); /* * Attach to the FIB entry for the VxLAN-GPE destination diff --git a/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_trace.c b/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_trace.c index 495bb16aab2..bd56a6ab7b1 100644 --- a/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_trace.c +++ b/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_trace.c @@ -308,7 +308,8 @@ nsh_md2_ioam_trace_swap_handler (vlib_buffer_t * b, nsh_tlv_header_t * new_opt) { - clib_memcpy (new_opt, old_opt, new_opt->length + sizeof (nsh_tlv_header_t)); + clib_memcpy_fast (new_opt, old_opt, + new_opt->length + sizeof (nsh_tlv_header_t)); return nsh_md2_ioam_trace_data_list_handler (b, new_opt); } diff --git a/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_util.h b/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_util.h index 8fbb3b7aaf7..77cc8792c93 100644 --- a/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_util.h +++ b/src/plugins/nsh/nsh-md2-ioam/nsh_md2_ioam_util.h @@ -105,7 +105,7 @@ nsh_md2_ioam_encap_decap_ioam_v4_one_inline (vlib_main_t * vm, if (PREDICT_FALSE (b0->flags & VLIB_BUFFER_IS_TRACED)) { nsh_transit_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); - clib_memcpy (&(tr->trace_data), nsh_hdr, (nsh_hdr->length * 4)); + clib_memcpy_fast (&(tr->trace_data), nsh_hdr, (nsh_hdr->length * 4)); } return; } diff --git a/src/plugins/nsh/nsh.c b/src/plugins/nsh/nsh.c index d9b625cda04..b293b85db8a 100644 --- a/src/plugins/nsh/nsh.c +++ b/src/plugins/nsh/nsh.c @@ -1771,13 +1771,13 @@ nsh_input_map (vlib_main_t * vm, else if (node_type == NSH_AWARE_VNF_PROXY_TYPE) { /* Push dummy Eth header */ - clib_memcpy (dummy_eth0.dst_address, dummy_dst_address, 6); - clib_memcpy (dummy_eth0.src_address, dummy_src_address, 6); + clib_memcpy_fast (dummy_eth0.dst_address, dummy_dst_address, 6); + clib_memcpy_fast (dummy_eth0.src_address, dummy_src_address, 6); dummy_eth0.type = 0x0800; vlib_buffer_advance (b0, -(word) sizeof (ethernet_header_t)); hdr0 = vlib_buffer_get_current (b0); - clib_memcpy (hdr0, &dummy_eth0, - (word) sizeof (ethernet_header_t)); + clib_memcpy_fast (hdr0, &dummy_eth0, + (word) sizeof (ethernet_header_t)); sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_TX]; nsp_nsi0 = nm->tunnel_index_by_sw_if_index[sw_if_index0]; @@ -1880,7 +1880,7 @@ nsh_input_map (vlib_main_t * vm, /* Push new NSH header */ vlib_buffer_advance (b0, -(word) encap_hdr_len0); hdr0 = vlib_buffer_get_current (b0); - clib_memcpy (hdr0, encap_hdr0, (word) encap_hdr_len0); + clib_memcpy_fast (hdr0, encap_hdr0, (word) encap_hdr_len0); goto trace0; } @@ -1892,7 +1892,7 @@ nsh_input_map (vlib_main_t * vm, /* Push new NSH header */ vlib_buffer_advance (b0, -(word) encap_hdr_len0); hdr0 = vlib_buffer_get_current (b0); - clib_memcpy (hdr0, encap_hdr0, (word) encap_hdr_len0); + clib_memcpy_fast (hdr0, encap_hdr0, (word) encap_hdr_len0); /* Manipulate MD2 */ if (PREDICT_FALSE (nsh_entry0->nsh_base.md_type == 2)) @@ -1909,8 +1909,8 @@ nsh_input_map (vlib_main_t * vm, { nsh_input_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); - clib_memcpy (&(tr->trace_data), hdr0, - ((hdr0->length & NSH_LEN_MASK) * 4)); + clib_memcpy_fast (&(tr->trace_data), hdr0, + ((hdr0->length & NSH_LEN_MASK) * 4)); } /* Process packet 1 */ @@ -1936,13 +1936,13 @@ nsh_input_map (vlib_main_t * vm, else if (node_type == NSH_AWARE_VNF_PROXY_TYPE) { /* Push dummy Eth header */ - clib_memcpy (dummy_eth1.dst_address, dummy_dst_address, 6); - clib_memcpy (dummy_eth1.src_address, dummy_src_address, 6); + clib_memcpy_fast (dummy_eth1.dst_address, dummy_dst_address, 6); + clib_memcpy_fast (dummy_eth1.src_address, dummy_src_address, 6); dummy_eth1.type = 0x0800; vlib_buffer_advance (b1, -(word) sizeof (ethernet_header_t)); hdr1 = vlib_buffer_get_current (b1); - clib_memcpy (hdr1, &dummy_eth1, - (word) sizeof (ethernet_header_t)); + clib_memcpy_fast (hdr1, &dummy_eth1, + (word) sizeof (ethernet_header_t)); sw_if_index1 = vnet_buffer (b1)->sw_if_index[VLIB_TX]; nsp_nsi1 = nm->tunnel_index_by_sw_if_index[sw_if_index1]; @@ -2045,7 +2045,7 @@ nsh_input_map (vlib_main_t * vm, /* Push new NSH header */ vlib_buffer_advance (b1, -(word) encap_hdr_len1); hdr1 = vlib_buffer_get_current (b1); - clib_memcpy (hdr1, encap_hdr1, (word) encap_hdr_len1); + clib_memcpy_fast (hdr1, encap_hdr1, (word) encap_hdr_len1); goto trace1; } @@ -2057,7 +2057,7 @@ nsh_input_map (vlib_main_t * vm, /* Push new NSH header */ vlib_buffer_advance (b1, -(word) encap_hdr_len1); hdr1 = vlib_buffer_get_current (b1); - clib_memcpy (hdr1, encap_hdr1, (word) encap_hdr_len1); + clib_memcpy_fast (hdr1, encap_hdr1, (word) encap_hdr_len1); /* Manipulate MD2 */ if (PREDICT_FALSE (nsh_entry1->nsh_base.md_type == 2)) @@ -2074,8 +2074,8 @@ nsh_input_map (vlib_main_t * vm, { nsh_input_trace_t *tr = vlib_add_trace (vm, node, b1, sizeof (*tr)); - clib_memcpy (&(tr->trace_data), hdr1, - ((hdr1->length & NSH_LEN_MASK) * 4)); + clib_memcpy_fast (&(tr->trace_data), hdr1, + ((hdr1->length & NSH_LEN_MASK) * 4)); } vlib_validate_buffer_enqueue_x2 (vm, node, next_index, to_next, @@ -2138,13 +2138,13 @@ nsh_input_map (vlib_main_t * vm, else if (node_type == NSH_AWARE_VNF_PROXY_TYPE) { /* Push dummy Eth header */ - clib_memcpy (dummy_eth0.dst_address, dummy_dst_address, 6); - clib_memcpy (dummy_eth0.src_address, dummy_src_address, 6); + clib_memcpy_fast (dummy_eth0.dst_address, dummy_dst_address, 6); + clib_memcpy_fast (dummy_eth0.src_address, dummy_src_address, 6); dummy_eth0.type = 0x0800; vlib_buffer_advance (b0, -(word) sizeof (ethernet_header_t)); hdr0 = vlib_buffer_get_current (b0); - clib_memcpy (hdr0, &dummy_eth0, - (word) sizeof (ethernet_header_t)); + clib_memcpy_fast (hdr0, &dummy_eth0, + (word) sizeof (ethernet_header_t)); sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_TX]; nsp_nsi0 = nm->tunnel_index_by_sw_if_index[sw_if_index0]; @@ -2250,7 +2250,7 @@ nsh_input_map (vlib_main_t * vm, /* Push new NSH header */ vlib_buffer_advance (b0, -(word) encap_hdr_len0); hdr0 = vlib_buffer_get_current (b0); - clib_memcpy (hdr0, encap_hdr0, (word) encap_hdr_len0); + clib_memcpy_fast (hdr0, encap_hdr0, (word) encap_hdr_len0); goto trace00; } @@ -2262,7 +2262,7 @@ nsh_input_map (vlib_main_t * vm, /* Push new NSH header */ vlib_buffer_advance (b0, -(word) encap_hdr_len0); hdr0 = vlib_buffer_get_current (b0); - clib_memcpy (hdr0, encap_hdr0, (word) encap_hdr_len0); + clib_memcpy_fast (hdr0, encap_hdr0, (word) encap_hdr_len0); /* Manipulate MD2 */ if (PREDICT_FALSE (nsh_entry0->nsh_base.md_type == 2)) { @@ -2277,8 +2277,8 @@ nsh_input_map (vlib_main_t * vm, { nsh_input_trace_t *tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); - clib_memcpy (&(tr->trace_data[0]), hdr0, - ((hdr0->length & NSH_LEN_MASK) * 4)); + clib_memcpy_fast (&(tr->trace_data[0]), hdr0, + ((hdr0->length & NSH_LEN_MASK) * 4)); } vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next, diff --git a/src/plugins/nsh/nsh_pop.c b/src/plugins/nsh/nsh_pop.c index cd25bb9e3f7..682a92d178a 100644 --- a/src/plugins/nsh/nsh_pop.c +++ b/src/plugins/nsh/nsh_pop.c @@ -162,7 +162,7 @@ nsh_pop_inline (vlib_main_t * vm, if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED)) { nsh_input_trace_t *tr = vlib_add_trace(vm, node, b0, sizeof(*tr)); - clib_memcpy ( &(tr->trace_data), hdr0, (hdr0->length*4) ); + clib_memcpy_fast ( &(tr->trace_data), hdr0, (hdr0->length*4) ); } /* Process packet 1 */ @@ -216,7 +216,7 @@ nsh_pop_inline (vlib_main_t * vm, if (PREDICT_FALSE(b1->flags & VLIB_BUFFER_IS_TRACED)) { nsh_input_trace_t *tr = vlib_add_trace(vm, node, b1, sizeof(*tr)); - clib_memcpy ( &(tr->trace_data), hdr1, (hdr1->length*4) ); + clib_memcpy_fast ( &(tr->trace_data), hdr1, (hdr1->length*4) ); } vlib_validate_buffer_enqueue_x2(vm, node, next_index, to_next, @@ -301,7 +301,7 @@ nsh_pop_inline (vlib_main_t * vm, if (PREDICT_FALSE(b0->flags & VLIB_BUFFER_IS_TRACED)) { nsh_input_trace_t *tr = vlib_add_trace(vm, node, b0, sizeof(*tr)); - clib_memcpy ( &(tr->trace_data[0]), hdr0, (hdr0->length*4) ); + clib_memcpy_fast ( &(tr->trace_data[0]), hdr0, (hdr0->length*4) ); } vlib_validate_buffer_enqueue_x1(vm, node, next_index, to_next, -- cgit 1.2.3-korg