[dpdk-stable] patch 'net/mlx5: fix CVLAN tag set in IP item translation' has been queued to stable release 19.11.3

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue May 19 14:53:56 CEST 2020


Hi,

FYI, your patch has been queued to stable release 19.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/21/20. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
>From 307876a7478b0ba135e2b577e01838c3130693ba Mon Sep 17 00:00:00 2001
From: Dekel Peled <dekelp at mellanox.com>
Date: Mon, 16 Mar 2020 10:57:39 +0200
Subject: [PATCH] net/mlx5: fix CVLAN tag set in IP item translation

[ upstream commit 1908cab425e4206321fb3f62688f9e1f92b36f6a ]

Previous fix added, at the end of functions
flow_dv_translate_item_ipv4() and flow_dv_translate_item_ipv6(), the
setting of cvlan_tag mask.
In the case of unspecified item (item->spec == null) these functions
return, and the new code section is not reached.

This patch moves the setting of cvlan_tag mask to be done before the
check of item->spec, to make sure it is always executed.

Fixes: 797329d6c4a1 ("net/mlx5: fix match on ethertype and CVLAN tag")

Signed-off-by: Dekel Peled <dekelp at mellanox.com>
Acked-by: Matan Azrad <matan at mellanox.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 868d01438d..b2e0365c1f 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -5203,6 +5203,13 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
 	else
 		MLX5_SET(fte_match_set_lyr_2_4, headers_m, ip_version, 0x4);
 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_version, 4);
+	/*
+	 * On outer header (which must contains L2), or inner header with L2,
+	 * set cvlan_tag mask bit to mark this packet as untagged.
+	 * This should be done even if item->spec is empty.
+	 */
+	if (!inner || item_flags & MLX5_FLOW_LAYER_INNER_L2)
+		MLX5_SET(fte_match_set_lyr_2_4, headers_m, cvlan_tag, 1);
 	if (!ipv4_v)
 		return;
 	if (!ipv4_m)
@@ -5230,12 +5237,6 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
 		 ipv4_m->hdr.next_proto_id);
 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol,
 		 ipv4_v->hdr.next_proto_id & ipv4_m->hdr.next_proto_id);
-	/*
-	 * On outer header (which must contains L2), or inner header with L2,
-	 * set cvlan_tag mask bit to mark this packet as untagged.
-	 */
-	if (!inner || item_flags & MLX5_FLOW_LAYER_INNER_L2)
-		MLX5_SET(fte_match_set_lyr_2_4, headers_m, cvlan_tag, 1);
 }
 
 /**
@@ -5300,6 +5301,13 @@ flow_dv_translate_item_ipv6(void *matcher, void *key,
 	else
 		MLX5_SET(fte_match_set_lyr_2_4, headers_m, ip_version, 0x6);
 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_version, 6);
+	/*
+	 * On outer header (which must contains L2), or inner header with L2,
+	 * set cvlan_tag mask bit to mark this packet as untagged.
+	 * This should be done even if item->spec is empty.
+	 */
+	if (!inner || item_flags & MLX5_FLOW_LAYER_INNER_L2)
+		MLX5_SET(fte_match_set_lyr_2_4, headers_m, cvlan_tag, 1);
 	if (!ipv6_v)
 		return;
 	if (!ipv6_m)
@@ -5343,12 +5351,6 @@ flow_dv_translate_item_ipv6(void *matcher, void *key,
 		 ipv6_m->hdr.proto);
 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol,
 		 ipv6_v->hdr.proto & ipv6_m->hdr.proto);
-	/*
-	 * On outer header (which must contains L2), or inner header with L2,
-	 * set cvlan_tag mask bit to mark this packet as untagged.
-	 */
-	if (!inner || item_flags & MLX5_FLOW_LAYER_INNER_L2)
-		MLX5_SET(fte_match_set_lyr_2_4, headers_m, cvlan_tag, 1);
 }
 
 /**
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-05-19 13:56:20.730394169 +0100
+++ 0046-net-mlx5-fix-CVLAN-tag-set-in-IP-item-translation.patch	2020-05-19 13:56:18.271502755 +0100
@@ -1,8 +1,10 @@
-From 1908cab425e4206321fb3f62688f9e1f92b36f6a Mon Sep 17 00:00:00 2001
+From 307876a7478b0ba135e2b577e01838c3130693ba Mon Sep 17 00:00:00 2001
 From: Dekel Peled <dekelp at mellanox.com>
 Date: Mon, 16 Mar 2020 10:57:39 +0200
 Subject: [PATCH] net/mlx5: fix CVLAN tag set in IP item translation
 
+[ upstream commit 1908cab425e4206321fb3f62688f9e1f92b36f6a ]
+
 Previous fix added, at the end of functions
 flow_dv_translate_item_ipv4() and flow_dv_translate_item_ipv6(), the
 setting of cvlan_tag mask.
@@ -13,7 +15,6 @@
 check of item->spec, to make sure it is always executed.
 
 Fixes: 797329d6c4a1 ("net/mlx5: fix match on ethertype and CVLAN tag")
-Cc: stable at dpdk.org
 
 Signed-off-by: Dekel Peled <dekelp at mellanox.com>
 Acked-by: Matan Azrad <matan at mellanox.com>
@@ -22,10 +23,10 @@
  1 file changed, 14 insertions(+), 12 deletions(-)
 
 diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
-index e2d6690fa8..20906318ee 100644
+index 868d01438d..b2e0365c1f 100644
 --- a/drivers/net/mlx5/mlx5_flow_dv.c
 +++ b/drivers/net/mlx5/mlx5_flow_dv.c
-@@ -5464,6 +5464,13 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
+@@ -5203,6 +5203,13 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
  	else
  		MLX5_SET(fte_match_set_lyr_2_4, headers_m, ip_version, 0x4);
  	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_version, 4);
@@ -39,10 +40,10 @@
  	if (!ipv4_v)
  		return;
  	if (!ipv4_m)
-@@ -5495,12 +5502,6 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
- 		 ipv4_m->hdr.time_to_live);
- 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_ttl_hoplimit,
- 		 ipv4_v->hdr.time_to_live & ipv4_m->hdr.time_to_live);
+@@ -5230,12 +5237,6 @@ flow_dv_translate_item_ipv4(void *matcher, void *key,
+ 		 ipv4_m->hdr.next_proto_id);
+ 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol,
+ 		 ipv4_v->hdr.next_proto_id & ipv4_m->hdr.next_proto_id);
 -	/*
 -	 * On outer header (which must contains L2), or inner header with L2,
 -	 * set cvlan_tag mask bit to mark this packet as untagged.
@@ -52,7 +53,7 @@
  }
  
  /**
-@@ -5565,6 +5566,13 @@ flow_dv_translate_item_ipv6(void *matcher, void *key,
+@@ -5300,6 +5301,13 @@ flow_dv_translate_item_ipv6(void *matcher, void *key,
  	else
  		MLX5_SET(fte_match_set_lyr_2_4, headers_m, ip_version, 0x6);
  	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_version, 6);
@@ -66,10 +67,10 @@
  	if (!ipv6_v)
  		return;
  	if (!ipv6_m)
-@@ -5613,12 +5621,6 @@ flow_dv_translate_item_ipv6(void *matcher, void *key,
- 		 ipv6_m->hdr.hop_limits);
- 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_ttl_hoplimit,
- 		 ipv6_v->hdr.hop_limits & ipv6_m->hdr.hop_limits);
+@@ -5343,12 +5351,6 @@ flow_dv_translate_item_ipv6(void *matcher, void *key,
+ 		 ipv6_m->hdr.proto);
+ 	MLX5_SET(fte_match_set_lyr_2_4, headers_v, ip_protocol,
+ 		 ipv6_v->hdr.proto & ipv6_m->hdr.proto);
 -	/*
 -	 * On outer header (which must contains L2), or inner header with L2,
 -	 * set cvlan_tag mask bit to mark this packet as untagged.


More information about the stable mailing list