[PATCH] net/mlx5: fix GRE item matching

Gregory Etelson getelson at nvidia.com
Wed Nov 24 09:16:06 CET 2021


Hello Alexander,

> GRE protocol type is implicitly set in the
> matching translation in case
> an application doesn't specify any type explicitly
> in a flow rule.
> It is extracted from the inner header type, but
> this type may be absent.
> In this case, GRE item matching is broken. Check
> if we have the inner
> header type before setting it to allow matching
> on all GRE packets.
> 
> Fixes: be26e81bfc1c ("net/mlx5: fix GRE protocol
> type translation")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Alexander Kozyrev
> <akozyrev at nvidia.com>
> ---
>  drivers/net/mlx5/mlx5_flow_dv.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c
> b/drivers/net/mlx5/mlx5_flow_dv.c
> index 9d4bd0560c..7bb092ea9f 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -8823,8 +8823,9 @@
> flow_dv_translate_item_gre(void *matcher, void
> *key,
>  	protocol_v = rte_be_to_cpu_16(gre_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,
> gre_protocol, protocol_m);
>  	MLX5_SET(fte_match_set_misc, misc_v,
> gre_protocol,
> --
> 2.18.2

The main idea of the  be26e81bfc1c ("net/mlx5: fix GRE protocol type translation") patch
was to *always* force GRE protocol mask. Otherwise we get back to the original issue that patch has solved.

Regards,
Gregory 


More information about the stable mailing list