@@ -4463,6 +4463,7 @@ pick_select_group(struct xlate_ctx *ctx, struct group_dpif *group)
*/
if (ctx->was_mpls) {
ctx_trigger_freeze(ctx);
+ return NULL;
}
switch (group->selection_method) {
@@ -78,8 +78,8 @@ done
AT_CHECK([ovs-appctl dpctl/dump-flows | sed 's/packets.*actions:1/actions:1/' | strip_used | strip_ufid | sort], [0], [dnl
flow-dump from non-dpdk interfaces:
-recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x8847),mpls(label=22/0xfffff,tc=0/0,ttl=64/0x0,bos=1/1), packets:3, bytes:54, used:0.0s, actions:pop_mpls(eth_type=0x800),recirc(0x3)
-recirc_id(0x3),in_port(1),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), actions:100
+recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth_type(0x8847),mpls(label=22/0xfffff,tc=0/0,ttl=64/0x0,bos=1/1), packets:3, bytes:54, used:0.0s, actions:pop_mpls(eth_type=0x800),recirc(0x3)
+recirc_id(0x3),in_port(1),packet_type(ns=0,id=0),eth(src=f8:bc:12:44:34:b6,dst=f8:bc:12:46:58:e0),eth_type(0x0800),ipv4(src=0.0.0.0,dst=0.0.0.0,proto=0,frag=no), actions:100
])
dnl Test MPLS pop then all group output (bucket actions do not trigger recirculation)
OVS does not do load balancing for select group buckets in case of mpls tagged packets. After an MPLS pop action, the expectation is to trigger recirculation . This recirculation will ensure an RSS re-computation which will ensure load balancing in case of select group bucket. Due to a missing return statement before bucket selection, the bucket selection in case of select group happens before the recirculation and hence no load balancing is achieved Signed-off-by: Anju Thomas <anju.thomas@ericsson.com> --- ofproto/ofproto-dpif-xlate.c | 1 + tests/mpls-xlate.at | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-)