Use the feature anchor in the MPLS input arc - it performs much better 80/5780/2
authorNeale Ranns <nranns@cisco.com>
Thu, 16 Mar 2017 20:12:57 +0000 (16:12 -0400)
committerDamjan Marion <dmarion.lists@gmail.com>
Fri, 17 Mar 2017 11:13:04 +0000 (11:13 +0000)
Change-Id: I3d64ddb248478accd4d9b3124f018c9aab63a60f
Signed-off-by: Neale Ranns <nranns@cisco.com>
src/vnet/mpls/interface.c
src/vnet/mpls/mpls_features.c
src/vnet/mpls/node.c

index 692a2d1..f631dc7 100644 (file)
@@ -66,8 +66,8 @@ mpls_sw_interface_enable_disable (mpls_main_t * mm,
                       FIB_PROTOCOL_MPLS);
     }
 
-  vnet_feature_enable_disable ("mpls-input", "mpls-lookup", sw_if_index,
-                              is_enable, 0, 0);
+  vnet_feature_enable_disable ("mpls-input", "mpls-not-enabled",
+                               sw_if_index, !is_enable, 0, 0);
 
 }
 
index a7593c5..2414795 100644 (file)
@@ -104,18 +104,19 @@ VNET_FEATURE_ARC_INIT (mpls_input, static) =
 {
   .arc_name  = "mpls-input",
   .start_nodes = VNET_FEATURES ("mpls-input"),
+  .end_node = "mpls-lookup",
   .arc_index_ptr = &mpls_main.input_feature_arc_index,
 };
 
-VNET_FEATURE_INIT (mpls_lookup, static) = {
+VNET_FEATURE_INIT (mpls_not_enabled, static) = {
   .arc_name = "mpls-input",
-  .node_name = "mpls-lookup",
-  .runs_before = VNET_FEATURES ("mpls-not-enabled"),
+  .node_name = "mpls-not-enabled",
+  .runs_before = VNET_FEATURES ("mpls-lookup"),
 };
 
-VNET_FEATURE_INIT (mpls_not_enabled, static) = {
+VNET_FEATURE_INIT (mpls_lookup, static) = {
   .arc_name = "mpls-input",
-  .node_name = "mpls-not-enabled",
+  .node_name = "mpls-lookup",
   .runs_before = VNET_FEATURES (0), /* not before any other features */
 };
 
index 03bfaf5..5b407fa 100644 (file)
@@ -206,6 +206,7 @@ mpls_input_inline (vlib_main_t * vm,
             }
          else
             {
+              next0 = MPLS_INPUT_NEXT_LOOKUP;
              vnet_feature_arc_start(mm->input_feature_arc_index, sw_if_index0, &next0, b0);
               vlib_increment_simple_counter (cm, cpu_index, sw_if_index0, 1);
             }