xlate: Always recirculate after an MPLS POP to a non-MPLS ethertype.
authorJarno Rajahalme <jarno@ovn.org>
Thu, 25 Feb 2016 00:10:42 +0000 (16:10 -0800)
committerJarno Rajahalme <jarno@ovn.org>
Thu, 25 Feb 2016 00:10:42 +0000 (16:10 -0800)
commit8bf009bf8ab4d4b638f3e41f33572c4238b40748
tree7b3eac9da4164b9e467560258b53725a25494a80
parent8f79bb4d3999d993424e9578342b4130d10a556c
xlate: Always recirculate after an MPLS POP to a non-MPLS ethertype.

So far we have tried to optimize MPLS POP action not to recirculate
unless later matching actually needs the inner headers.  This made the
code complex and error-prone.  Also the cases where this optimization
would have been useful seem rare, as one would typically want to do
something else with the inner packet than blindly send it to some
output port.

With this change multiple consecutive MPLS POPs do not need
recirculation in between, so even if the blind output case is now
little bit less optimal, the multiple POP case is correspondingly
faster with this change.

Suggested-by: Ben Pfaff <blp@ovn.org>
Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
ofproto/ofproto-dpif-xlate.c
tests/mpls-xlate.at
tests/ofproto-dpif.at