X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fl2%2Fl2_fwd.c;h=93e69db31e9125e01526ee53b8c3f640a6f9de25;hb=9485d99bd3941b13abf7e47fc7e1d56f7b4fee55;hp=f1d215a87f4012adfdf6cb730fd5636b9aff6bbb;hpb=7d645f771cea143eab834e7f3383e36cef565786;p=vpp.git diff --git a/src/vnet/l2/l2_fwd.c b/src/vnet/l2/l2_fwd.c index f1d215a87f4..93e69db31e9 100644 --- a/src/vnet/l2/l2_fwd.c +++ b/src/vnet/l2/l2_fwd.c @@ -92,7 +92,7 @@ l2fwd_main_t l2fwd_main; extern l2fwd_main_t l2fwd_main; #endif -static vlib_node_registration_t l2fwd_node; +extern vlib_node_registration_t l2fwd_node; #define foreach_l2fwd_error \ _(L2FWD, "L2 forward packets") \ @@ -262,7 +262,6 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, const ethernet_header_t *h0, *h1, *h2, *h3; l2fib_entry_key_t key0, key1, key2, key3; l2fib_entry_result_t result0, result1, result2, result3; - u32 bucket0, bucket1, bucket2, bucket3; /* Prefetch next iteration. */ { @@ -303,10 +302,6 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, &key1, /* not used */ &key2, /* not used */ &key3, /* not used */ - &bucket0, /* not used */ - &bucket1, /* not used */ - &bucket2, /* not used */ - &bucket3, /* not used */ &result0, &result1, &result2, @@ -329,8 +324,8 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, l2fwd_trace_t *t = vlib_add_trace (vm, node, b[0], sizeof (*t)); t->sw_if_index = sw_if_index0; t->bd_index = vnet_buffer (b[0])->l2.bd_index; - clib_memcpy (t->src, h0->src_address, 6); - clib_memcpy (t->dst, h0->dst_address, 6); + clib_memcpy_fast (t->src, h0->src_address, 6); + clib_memcpy_fast (t->dst, h0->dst_address, 6); t->result = result0; } if (b[1]->flags & VLIB_BUFFER_IS_TRACED) @@ -338,8 +333,8 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, l2fwd_trace_t *t = vlib_add_trace (vm, node, b[1], sizeof (*t)); t->sw_if_index = sw_if_index1; t->bd_index = vnet_buffer (b[1])->l2.bd_index; - clib_memcpy (t->src, h1->src_address, 6); - clib_memcpy (t->dst, h1->dst_address, 6); + clib_memcpy_fast (t->src, h1->src_address, 6); + clib_memcpy_fast (t->dst, h1->dst_address, 6); t->result = result1; } if (b[2]->flags & VLIB_BUFFER_IS_TRACED) @@ -347,8 +342,8 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, l2fwd_trace_t *t = vlib_add_trace (vm, node, b[2], sizeof (*t)); t->sw_if_index = sw_if_index2; t->bd_index = vnet_buffer (b[2])->l2.bd_index; - clib_memcpy (t->src, h2->src_address, 6); - clib_memcpy (t->dst, h2->dst_address, 6); + clib_memcpy_fast (t->src, h2->src_address, 6); + clib_memcpy_fast (t->dst, h2->dst_address, 6); t->result = result2; } if (b[3]->flags & VLIB_BUFFER_IS_TRACED) @@ -356,8 +351,8 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, l2fwd_trace_t *t = vlib_add_trace (vm, node, b[3], sizeof (*t)); t->sw_if_index = sw_if_index3; t->bd_index = vnet_buffer (b[3])->l2.bd_index; - clib_memcpy (t->src, h3->src_address, 6); - clib_memcpy (t->dst, h3->dst_address, 6); + clib_memcpy_fast (t->src, h3->src_address, 6); + clib_memcpy_fast (t->dst, h3->dst_address, 6); t->result = result3; } } @@ -373,7 +368,6 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, ethernet_header_t *h0; l2fib_entry_key_t key0; l2fib_entry_result_t result0; - u32 bucket0; sw_if_index0 = vnet_buffer (b[0])->sw_if_index[VLIB_RX]; @@ -383,9 +377,9 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, #ifdef COUNTERS em->counters[node_counter_base_index + L2FWD_ERROR_L2FWD] += 1; #endif - l2fib_lookup_1 (msm->mac_table, &cached_key, &cached_result, h0->dst_address, vnet_buffer (b[0])->l2.bd_index, &key0, /* not used */ - &bucket0, /* not used */ - &result0); + l2fib_lookup_1 (msm->mac_table, &cached_key, &cached_result, + h0->dst_address, vnet_buffer (b[0])->l2.bd_index, &key0, + /* not used */ &result0); l2fwd_process (vm, node, msm, em, b[0], sw_if_index0, &result0, next); if (do_trace && PREDICT_FALSE (b[0]->flags & VLIB_BUFFER_IS_TRACED)) @@ -393,8 +387,8 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node, l2fwd_trace_t *t = vlib_add_trace (vm, node, b[0], sizeof (*t)); t->sw_if_index = sw_if_index0; t->bd_index = vnet_buffer (b[0])->l2.bd_index; - clib_memcpy (t->src, h0->src_address, 6); - clib_memcpy (t->dst, h0->dst_address, 6); + clib_memcpy_fast (t->src, h0->src_address, 6); + clib_memcpy_fast (t->dst, h0->dst_address, 6); t->result = result0; } @@ -418,7 +412,7 @@ VLIB_NODE_FN (l2fwd_node) (vlib_main_t * vm, } /* *INDENT-OFF* */ -VLIB_REGISTER_NODE (l2fwd_node,static) = { +VLIB_REGISTER_NODE (l2fwd_node) = { .name = "l2-fwd", .vector_size = sizeof (u32), .format_trace = format_l2fwd_trace,