[PATCH 19.11 6/6] net/mlx5: fix GENEVE and VXLAN-GPE flow item matching
Christian Ehrhardt
christian.ehrhardt at canonical.com
Fri Dec 3 07:06:45 CET 2021
On Thu, Dec 2, 2021 at 5:04 PM Gregory Etelson <getelson at nvidia.com> wrote:
>
> From: Alexander Kozyrev <akozyrev at nvidia.com>
>
> [ upstream commit 94421842de9a821778b95b928945ed8ea382302d ]
Thank you for the backports,
patch 2 of the series was already applied - the other 5 I added now.
> GENEVE and VXLAN-GPE item matching is done similarly to GRE matching.
> Users can skip the specification of the protocol type and expect that
> this type is deducted from the inner header type automatically.
> But the inner header type may not be specified in order to match all the
> protocol types. In this case, PMD should not specify the protocol type.
> Check if we have the inner header type before setting the protocol type.
>
> Fixes: 690391dd0e8b ("net/mlx5: fix GENEVE protocol type translation")
> Fixes: 861fa3796f75 ("net/mlx5: fix VXLAN-GPE next protocol translation")
> Cc: stable at dpdk.org
>
> Signed-off-by: Alexander Kozyrev <akozyrev at nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo at nvidia.com>
> ---
> drivers/net/mlx5/mlx5_flow_dv.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
> index cd55deaf56..4766ce155d 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -6119,7 +6119,6 @@ flow_dv_translate_item_vxlan_gpe(void *matcher, void *key,
> m_protocol = vxlan_m->protocol;
> v_protocol = vxlan_v->protocol;
> if (!m_protocol) {
> - m_protocol = 0xff;
> /* Force next protocol to ensure next headers parsing. */
> if (pattern_flags & MLX5_FLOW_LAYER_INNER_L2)
> v_protocol = RTE_VXLAN_GPE_TYPE_ETH;
> @@ -6127,6 +6126,8 @@ flow_dv_translate_item_vxlan_gpe(void *matcher, void *key,
> v_protocol = RTE_VXLAN_GPE_TYPE_IPV4;
> else if (pattern_flags & MLX5_FLOW_LAYER_INNER_L3_IPV6)
> v_protocol = RTE_VXLAN_GPE_TYPE_IPV6;
> + if (v_protocol)
> + m_protocol = 0xFF;
> }
> MLX5_SET(fte_match_set_misc3, misc_m,
> outer_vxlan_gpe_next_protocol, m_protocol);
> @@ -6197,8 +6198,9 @@ flow_dv_translate_item_geneve(void *matcher, void *key,
> protocol_v = rte_be_to_cpu_16(geneve_v->protocol);
> if (!protocol_m) {
> /* Force next protocol to prevent matchers duplication */
> - protocol_m = 0xFFFF;
> protocol_v = mlx5_translate_tunnel_etypes(pattern_flags);
> + if (protocol_v)
> + protocol_m = 0xFFFF;
> }
> MLX5_SET(fte_match_set_misc, misc_m, geneve_protocol_type, protocol_m);
> MLX5_SET(fte_match_set_misc, misc_v, geneve_protocol_type,
> --
> 2.34.0
>
--
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd
More information about the stable
mailing list