Use thread local storage for thread index
[vpp.git] / src / vnet / ip / ip4_input.c
index ba200a9..3b08f4b 100644 (file)
@@ -85,7 +85,7 @@ ip4_input_inline (vlib_main_t * vm,
   vlib_node_runtime_t *error_node =
     vlib_node_get_runtime (vm, ip4_input_node.index);
   vlib_simple_counter_main_t *cm;
-  u32 cpu_index = os_get_cpu_number ();
+  u32 thread_index = vlib_get_thread_index ();
 
   from = vlib_frame_vector_args (frame);
   n_left_from = frame->n_vectors;
@@ -178,8 +178,8 @@ ip4_input_inline (vlib_main_t * vm,
          vnet_feature_arc_start (arc0, sw_if_index0, &next0, p0);
          vnet_feature_arc_start (arc1, sw_if_index1, &next1, p1);
 
-         vlib_increment_simple_counter (cm, cpu_index, sw_if_index0, 1);
-         vlib_increment_simple_counter (cm, cpu_index, sw_if_index1, 1);
+         vlib_increment_simple_counter (cm, thread_index, sw_if_index0, 1);
+         vlib_increment_simple_counter (cm, thread_index, sw_if_index1, 1);
 
          /* Punt packets with options or wrong version. */
          if (PREDICT_FALSE (ip0->ip_version_and_header_length != 0x45))
@@ -299,7 +299,7 @@ ip4_input_inline (vlib_main_t * vm,
          vnet_buffer (p0)->ip.adj_index[VLIB_RX] = ~0;
          vnet_feature_arc_start (arc0, sw_if_index0, &next0, p0);
 
-         vlib_increment_simple_counter (cm, cpu_index, sw_if_index0, 1);
+         vlib_increment_simple_counter (cm, thread_index, sw_if_index0, 1);
 
          /* Punt packets with options or wrong version. */
          if (PREDICT_FALSE (ip0->ip_version_and_header_length != 0x45))