summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2017-03-16 16:12:57 -0400
committerDamjan Marion <dmarion.lists@gmail.com>2017-03-17 11:13:04 +0000
commitb85e43965ec9e23c4ae14b62f4bbfe839f75c427 (patch)
treea771ac3209193eac669652bc35b2c3cc6cfbeb47
parent3983ac23bea6241c6f3d619043fea08d67be30c3 (diff)
Use the feature anchor in the MPLS input arc - it performs much better
Change-Id: I3d64ddb248478accd4d9b3124f018c9aab63a60f Signed-off-by: Neale Ranns <nranns@cisco.com>
-rw-r--r--src/vnet/mpls/interface.c4
-rw-r--r--src/vnet/mpls/mpls_features.c11
-rw-r--r--src/vnet/mpls/node.c1
3 files changed, 9 insertions, 7 deletions
diff --git a/src/vnet/mpls/interface.c b/src/vnet/mpls/interface.c
index 692a2d1eb62..f631dc7652c 100644
--- a/src/vnet/mpls/interface.c
+++ b/src/vnet/mpls/interface.c
@@ -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);
}
diff --git a/src/vnet/mpls/mpls_features.c b/src/vnet/mpls/mpls_features.c
index a7593c55b09..24147955153 100644
--- a/src/vnet/mpls/mpls_features.c
+++ b/src/vnet/mpls/mpls_features.c
@@ -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 */
};
diff --git a/src/vnet/mpls/node.c b/src/vnet/mpls/node.c
index 03bfaf56ce9..5b407fae2a2 100644
--- a/src/vnet/mpls/node.c
+++ b/src/vnet/mpls/node.c
@@ -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);
}