FAILED: patch "[PATCH] net/mlx5e: MPLSoUDP decap, fix check for unsupported matches" failed to apply to 5.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From fdc18e4e4bded2a08638cdcd22dc087a64b9ddad Mon Sep 17 00:00:00 2001
From: Maor Dickman <[email protected]>
Date: Thu, 6 Jan 2022 14:46:24 +0200
Subject: [PATCH] net/mlx5e: MPLSoUDP decap, fix check for unsupported matches
Currently offload of rule on bareudp device require tunnel key in order to match on mpls fields and without it the mpls fields are ignored, this is incorrect due to the fact udp tunnel doesn't have key to match on.
Fix by returning error in case flow is matching on tunnel key.
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c +11 -17
@@ -59,37 +59,31 @@ static int parse_tunnel(struct mlx5e_priv *priv, void *headers_v) {struct flow_rule *rule =flow_cls_offload_flow_rule (f); -struct flow_match_enc_keyid enc_keyid;struct flow_match_mpls match;void *misc2_c;void *misc2_v; - misc2_c =MLX5_ADDR_OF (fte_match_param, spec->match_criteria, - misc_parameters_2); - misc2_v =MLX5_ADDR_OF (fte_match_param, spec->match_value, - misc_parameters_2); - -if (!flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_MPLS )) -return 0 ; - -if (!flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_ENC_KEYID )) -return 0 ; - -flow_rule_match_enc_keyid (rule, &enc_keyid); - -if (!enc_keyid.mask->keyid) -return 0 ; -if (!MLX5_CAP_ETH (priv->mdev, tunnel_stateless_mpls_over_udp) && !(MLX5_CAP_GEN (priv->mdev, flex_parser_protocols) &MLX5_FLEX_PROTO_CW_MPLS_UDP ))return -EOPNOTSUPP ; +if (flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_ENC_KEYID )) +return -EOPNOTSUPP ; + +if (!flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_MPLS )) +return 0 ; +flow_rule_match_mpls (rule, &match);/* Only support matching the first LSE */ if (match.mask->used_lses !=1 )return -EOPNOTSUPP ; + misc2_c =MLX5_ADDR_OF (fte_match_param, spec->match_criteria, + misc_parameters_2); + misc2_v =MLX5_ADDR_OF (fte_match_param, spec->match_value, + misc_parameters_2); +MLX5_SET (fte_match_set_misc2, misc2_c, outer_first_mpls_over_udp.mpls_label, match.mask->ls[0 ].mpls_label);