Update pipeline.h: use vlib_get_buffers
[vpp.git] / src / vnet / l2tp / decap.c
index e898693..334f1fe 100644 (file)
@@ -56,18 +56,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 +114,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 +146,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 +216,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);
        }
     }