The currnent implementation sets a gre mask with protocol masked in
case the user did not supply the protocol mask.
In template mode, for group 0, the gre translation was called
once with the mask and later with the value.
with gre open matcher(mask/value is null) default values were assigned
gre protocol mask=0xffff and gre protocol value=0.

Therefor gre packet with protocol value not equal zero,
will not match the rule.
Changed the default protocol mask to be zero instead of 0xffff.

In case of empty gre match,
this fix will ignore the protocol field matching,
gre will only be matched by the IP next header field in
previous header in packet.

Fixes: 25ab2cbba31d ("net/mlx5: fix GRE flow item translation for root table")
Cc: sta...@dpdk.org

Signed-off-by: Maayan Kashani <mkash...@nvidia.com>
Acked-by: Bing Zhao <bi...@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index c77041317b4..3473c6f7713 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -9850,7 +9850,7 @@ flow_dv_translate_item_gre(void *key, const struct 
rte_flow_item *item,
        /* HWS mask logic only */
        if (key_type & MLX5_SET_MATCHER_HS_M) {
                if (!gre_m)
-                       gre_m = &rte_flow_item_gre_mask;
+                       gre_m = &empty_gre;
                gre_v = gre_m;
        } else if (!gre_v) {
                gre_v = &empty_gre;
-- 
2.21.0

Reply via email to