X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvnet%2Fl2tp%2Fdecap.c;h=787cc115a7e41658bfda833b2733ff57dd491341;hb=41e831f5588fe5ebfd879f4e570e85e12770b360;hp=e8986935e939e3ff11c2e13d41e98b39ec0ee642;hpb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;p=vpp.git diff --git a/src/vnet/l2tp/decap.c b/src/vnet/l2tp/decap.c index e8986935e93..787cc115a7e 100644 --- a/src/vnet/l2tp/decap.c +++ b/src/vnet/l2tp/decap.c @@ -21,6 +21,7 @@ #include #include #include +#include /* Statistics (not really errors) */ #define foreach_l2t_decap_error \ @@ -56,18 +57,16 @@ typedef enum #define NSTAGES 3 static inline void -stage0 (vlib_main_t * vm, vlib_node_runtime_t * node, u32 buffer_index) +stage0 (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_buffer_t * b) { - vlib_buffer_t *b = vlib_get_buffer (vm, buffer_index); vlib_prefetch_buffer_header (b, STORE); /* l2tpv3 header is a long way away, need 2 cache lines */ CLIB_PREFETCH (b->data, 2 * CLIB_CACHE_LINE_BYTES, STORE); } static inline void -stage1 (vlib_main_t * vm, vlib_node_runtime_t * node, u32 bi) +stage1 (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_buffer_t * b) { - vlib_buffer_t *b = vlib_get_buffer (vm, bi); l2t_main_t *lm = &l2t_main; ip6_header_t *ip6 = vlib_buffer_get_current (b); u32 session_index; @@ -116,9 +115,8 @@ stage1 (vlib_main_t * vm, vlib_node_runtime_t * node, u32 bi) } static inline u32 -last_stage (vlib_main_t * vm, vlib_node_runtime_t * node, u32 bi) +last_stage (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_buffer_t * b) { - vlib_buffer_t *b = vlib_get_buffer (vm, bi); l2t_main_t *lm = &l2t_main; ip6_header_t *ip6 = vlib_buffer_get_current (b); vlib_node_t *n = vlib_get_node (vm, node->node_index); @@ -149,7 +147,7 @@ last_stage (vlib_main_t * vm, vlib_node_runtime_t * node, u32 bi) /* per-mapping byte stats include the ethernet header */ vlib_increment_combined_counter (&lm->counter_main, - os_get_cpu_number (), + vlib_get_thread_index (), counter_index, 1 /* packet_increment */ , vlib_buffer_length_in_chain (vm, b) + sizeof (ethernet_header_t)); @@ -219,7 +217,7 @@ done: { /* Go to next node on the ip6 configuration chain */ if (PREDICT_TRUE (session != 0)) - vnet_feature_next (session->sw_if_index, &next_index, b); + vnet_feature_next (&next_index, b); } } @@ -238,9 +236,9 @@ done: #include -static uword -l2t_decap_node_fn (vlib_main_t * vm, - vlib_node_runtime_t * node, vlib_frame_t * frame) +VLIB_NODE_FN (l2t_decap_node) (vlib_main_t * vm, + vlib_node_runtime_t * node, + vlib_frame_t * frame) { return dispatch_pipeline (vm, node, frame); } @@ -253,7 +251,6 @@ l2t_decap_node_fn (vlib_main_t * vm, /* *INDENT-OFF* */ VLIB_REGISTER_NODE (l2t_decap_node) = { - .function = l2t_decap_node_fn, .name = "l2tp-decap", .vector_size = sizeof (u32), .format_trace = format_l2t_trace, @@ -272,7 +269,8 @@ VLIB_REGISTER_NODE (l2t_decap_node) = { }; /* *INDENT-ON* */ -VLIB_NODE_FUNCTION_MULTIARCH (l2t_decap_node, l2t_decap_node_fn); +extern vlib_node_function_t l2t_decap_node_fn; + /* *INDENT-OFF* */ VLIB_REGISTER_NODE (l2t_decap_local_node) = { .function = l2t_decap_node_fn, @@ -294,12 +292,6 @@ VLIB_REGISTER_NODE (l2t_decap_local_node) = { }; /* *INDENT-ON* */ -void -l2tp_decap_init (void) -{ - ip6_register_protocol (IP_PROTOCOL_L2TP, l2t_decap_local_node.index); -} - /* * fd.io coding-style-patch-verification: ON *