net/mlx5: fix MPLS tunnel outer layer overwrite
PATCH 1/1 net/mlx5: fix MPLS tunnel outer layer overwrite
mlx5 PMD incorrectly overwrote outer layer fields in MPLS tunnel rte_flow patterns using defaults for MPLS tunnels. This included overwriting UDP destination port in MPLSoUDP and GRE protocol field in MPLSoGRE.
This patch fixes this behavior. If application provides the values in flow pattern items preceding the MPLS flow item the provided values will be used, otherwise the defaults will be applied.
--- drivers/net/mlx5/mlx5_flow_dv.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
drivers/net/mlx5/mlx5_flow_dv.c +12 -6
@@ -9282,16 +9282,22 @@ flow_dv_translate_item_mpls(void *matcher, void *key,switch (prev_layer) {case MLX5_FLOW_LAYER_OUTER_L4_UDP : -MLX5_SET (fte_match_set_lyr_2_4, headers_m, udp_dport,0xffff ); -MLX5_SET (fte_match_set_lyr_2_4, headers_v, udp_dport, -MLX5_UDP_PORT_MPLS ); +if (!MLX5_GET16 (fte_match_set_lyr_2_4, headers_v, udp_dport)) { +MLX5_SET (fte_match_set_lyr_2_4, headers_m, udp_dport, +0xffff ); +MLX5_SET (fte_match_set_lyr_2_4, headers_v, udp_dport, +MLX5_UDP_PORT_MPLS ); + }break ;case MLX5_FLOW_LAYER_GRE :/* Fall-through. */ case MLX5_FLOW_LAYER_GRE_KEY : -MLX5_SET (fte_match_set_misc, misc_m, gre_protocol,0xffff ); -MLX5_SET (fte_match_set_misc, misc_v, gre_protocol, -RTE_ETHER_TYPE_MPLS ); +if (!MLX5_GET16 (fte_match_set_misc, misc_v, gre_protocol)) { +MLX5_SET (fte_match_set_misc, misc_m, gre_protocol, +0xffff ); +MLX5_SET (fte_match_set_misc, misc_v, gre_protocol, +RTE_ETHER_TYPE_MPLS ); + }break ;default :break ;
Signature · 1 line
2.25.1
Hi,
Quoted 16 lines
-----Original Message-----
From: Dariusz Sosnowski <[email protected]>
Sent: Wednesday, November 17, 2021 12:00 PM
To: Matan Azrad <[email protected]>; Slava Ovsiienko <[email protected]>
Cc: [email protected]; [email protected]
Subject: [PATCH] net/mlx5: fix MPLS tunnel outer layer overwritemlx5 PMD incorrectly overwrote outer layer fields in MPLS tunnel
rte_flowpatterns using defaults for MPLS tunnels. This included overwriting UDP destination port in MPLSoUDP and GRE protocol field in MPLSoGRE.This patch fixes this behavior. If application provides the values in flow pattern items preceding the MPLS flow item the provided values will be used, otherwise the defaults will be applied.
Quoted 5 lines
Fixes d1abe664ddde ("net/mlx5: add MPLS to Direct Verbs flow engine")Signed-off-by Dariusz Sosnowski <[email protected]>
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh