]> git.droids-corp.org - dpdk.git/commitdiff
net/mlx5: fix GRE flow item matching
authorAlexander Kozyrev <akozyrev@nvidia.com>
Wed, 24 Nov 2021 04:32:34 +0000 (06:32 +0200)
committerRaslan Darawsheh <rasland@nvidia.com>
Wed, 24 Nov 2021 16:25:36 +0000 (17:25 +0100)
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@dpdk.org
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/net/mlx5/mlx5_flow_dv.c

index 9979d16f74efff6b9fdd5a5ff8a6112481b9ae31..1a9c040f3c6e4eeeb47f79d19efb08c129ab2a96 100644 (file)
@@ -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,