From 0f79b515fef6d4a9243f59eea3f1f29a116a1f74 Mon Sep 17 00:00:00 2001 From: Dekel Peled Date: Tue, 4 Dec 2018 15:51:33 +0200 Subject: [PATCH] app/testpmd: fix MPLSoUDP encapsulation In function cmd_set_mplsoudp_encap_parsed(), MPLS label value was set in mplsoudp_encap_conf struct without the required offset. As a result the value was copied incorrectly into rte_flow_item_mpls struct. This patch sets MPLS label value in appropriate location at mplsoudp_encap_conf struct, so it is correctly copied to rte_flow_item_mpls struct. Fixes: a1191d39cb57 ("app/testpmd: add MPLSoUDP encapsulation") Cc: stable@dpdk.org Signed-off-by: Dekel Peled Acked-by: Ori Kam --- app/test-pmd/cmdline.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 1275074108..8630be6c30 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -15804,10 +15804,9 @@ static void cmd_set_mplsoudp_encap_parsed(void *parsed_result, struct cmd_set_mplsoudp_encap_result *res = parsed_result; union { uint32_t mplsoudp_label; - uint8_t label[3]; + uint8_t label[4]; } id = { - .mplsoudp_label = - rte_cpu_to_be_32(res->label) & RTE_BE32(0x00ffffff), + .mplsoudp_label = rte_cpu_to_be_32(res->label<<12), }; if (strcmp(res->mplsoudp, "mplsoudp_encap") == 0) @@ -15820,7 +15819,7 @@ static void cmd_set_mplsoudp_encap_parsed(void *parsed_result, mplsoudp_encap_conf.select_ipv4 = 0; else return; - rte_memcpy(mplsoudp_encap_conf.label, &id.label[1], 3); + rte_memcpy(mplsoudp_encap_conf.label, &id.label, 3); mplsoudp_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src); mplsoudp_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst); if (mplsoudp_encap_conf.select_ipv4) { -- 2.20.1