avoid using thread local storage for thread index
[vpp.git] / src / vnet / vxlan-gpe / decap.c
index 151ffa3..29a043f 100644 (file)
@@ -117,7 +117,7 @@ vxlan_gpe_input (vlib_main_t * vm,
   vxlan4_gpe_tunnel_key_t last_key4;
   vxlan6_gpe_tunnel_key_t last_key6;
   u32 pkts_decapsulated = 0;
-  u32 thread_index = vlib_get_thread_index ();
+  u32 thread_index = vm->thread_index;
   u32 stats_sw_if_index, stats_n_packets, stats_n_bytes;
 
   if (is_ip4)
@@ -338,6 +338,9 @@ vxlan_gpe_input (vlib_main_t * vm,
          /* Required to make the l2 tag push / pop code work on l2 subifs */
          vnet_update_l2_len (b0);
 
+         /* Set packet input sw_if_index to unicast VXLAN tunnel for learning */
+         vnet_buffer (b0)->sw_if_index[VLIB_RX] = t0->sw_if_index;
+
       /**
        * ip[46] lookup in the configured FIB
        */
@@ -426,6 +429,9 @@ vxlan_gpe_input (vlib_main_t * vm,
          /* Required to make the l2 tag push / pop code work on l2 subifs */
          vnet_update_l2_len (b1);
 
+         /* Set packet input sw_if_index to unicast VXLAN tunnel for learning */
+         vnet_buffer (b1)->sw_if_index[VLIB_RX] = t1->sw_if_index;
+
          /*
           * ip[46] lookup in the configured FIB
           */
@@ -595,6 +601,9 @@ vxlan_gpe_input (vlib_main_t * vm,
          /* Required to make the l2 tag push / pop code work on l2 subifs */
          vnet_update_l2_len (b0);
 
+         /* Set packet input sw_if_index to unicast VXLAN tunnel for learning */
+         vnet_buffer (b0)->sw_if_index[VLIB_RX] = t0->sw_if_index;
+
          /*
           * ip[46] lookup in the configured FIB
           */