[dpdk-stable] patch 'net/mlx5: fix ICMPv6 header rewrite actions' has been queued to stable release 19.11.1

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue Feb 11 12:21:41 CET 2020


Hi,

FYI, your patch has been queued to stable release 19.11.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/13/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 f312d00e87545dad43a07beeec6ab4327f61a7c0 Mon Sep 17 00:00:00 2001
From: Shiri Kuzin <shirik at mellanox.com>
Date: Wed, 22 Jan 2020 14:37:54 +0000
Subject: [PATCH] net/mlx5: fix ICMPv6 header rewrite actions

[ upstream commit 0e2ceb639d8a32b7221d5fd2acba8a3798cb35d0 ]

The ConnectX-5 HW cannot calculate the checksum for ICMPv6,
therefore flows with pattern 'ipv6 proto is 58' with actions that change
the header should be rejected. the actions that change the header
in this type of flow are 'set_ipv6_src' and 'set_ipv6_dst'.

Fixes: 4bb14c83df95 ("net/mlx5: support modify header using Direct Verbs")

Signed-off-by: Shiri Kuzin <shirik at mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo at mellanox.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 6aedb3c0bc..295627fab3 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -4233,6 +4233,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 	uint8_t next_protocol = 0xff;
 	uint16_t ether_type = 0;
 	int actions_n = 0;
+	uint8_t item_ipv6_proto = 0;
 	const struct rte_flow_item *gre_item = NULL;
 	struct rte_flow_item_tcp nic_tcp_mask = {
 		.hdr = {
@@ -4340,6 +4341,9 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 			if (items->mask != NULL &&
 			    ((const struct rte_flow_item_ipv6 *)
 			     items->mask)->hdr.proto) {
+				item_ipv6_proto =
+					((const struct rte_flow_item_ipv6 *)
+					 items->spec)->hdr.proto;
 				next_protocol =
 					((const struct rte_flow_item_ipv6 *)
 					 items->spec)->hdr.proto;
@@ -4705,6 +4709,12 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 								  error);
 			if (ret < 0)
 				return ret;
+			if (item_ipv6_proto == IPPROTO_ICMPV6)
+				return rte_flow_error_set(error, ENOTSUP,
+					RTE_FLOW_ERROR_TYPE_ACTION,
+					actions,
+					"Can't change header "
+					"with ICMPv6 proto");
 			/* Count all modify-header actions as one action. */
 			if (!(action_flags & MLX5_FLOW_MODIFY_HDR_ACTIONS))
 				++actions_n;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-02-11 11:17:44.024900802 +0000
+++ 0155-net-mlx5-fix-ICMPv6-header-rewrite-actions.patch	2020-02-11 11:17:38.740007704 +0000
@@ -1,15 +1,16 @@
-From 0e2ceb639d8a32b7221d5fd2acba8a3798cb35d0 Mon Sep 17 00:00:00 2001
+From f312d00e87545dad43a07beeec6ab4327f61a7c0 Mon Sep 17 00:00:00 2001
 From: Shiri Kuzin <shirik at mellanox.com>
 Date: Wed, 22 Jan 2020 14:37:54 +0000
 Subject: [PATCH] net/mlx5: fix ICMPv6 header rewrite actions
 
+[ upstream commit 0e2ceb639d8a32b7221d5fd2acba8a3798cb35d0 ]
+
 The ConnectX-5 HW cannot calculate the checksum for ICMPv6,
 therefore flows with pattern 'ipv6 proto is 58' with actions that change
 the header should be rejected. the actions that change the header
 in this type of flow are 'set_ipv6_src' and 'set_ipv6_dst'.
 
 Fixes: 4bb14c83df95 ("net/mlx5: support modify header using Direct Verbs")
-Cc: stable at dpdk.org
 
 Signed-off-by: Shiri Kuzin <shirik at mellanox.com>
 Acked-by: Viacheslav Ovsiienko <viacheslavo at mellanox.com>
@@ -18,10 +19,10 @@
  1 file changed, 10 insertions(+)
 
 diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
-index c2900c5d0d..6987592e60 100644
+index 6aedb3c0bc..295627fab3 100644
 --- a/drivers/net/mlx5/mlx5_flow_dv.c
 +++ b/drivers/net/mlx5/mlx5_flow_dv.c
-@@ -4402,6 +4402,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4233,6 +4233,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  	uint8_t next_protocol = 0xff;
  	uint16_t ether_type = 0;
  	int actions_n = 0;
@@ -29,7 +30,7 @@
  	const struct rte_flow_item *gre_item = NULL;
  	struct rte_flow_item_tcp nic_tcp_mask = {
  		.hdr = {
-@@ -4509,6 +4510,9 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4340,6 +4341,9 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  			if (items->mask != NULL &&
  			    ((const struct rte_flow_item_ipv6 *)
  			     items->mask)->hdr.proto) {
@@ -39,7 +40,7 @@
  				next_protocol =
  					((const struct rte_flow_item_ipv6 *)
  					 items->spec)->hdr.proto;
-@@ -4881,6 +4885,12 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4705,6 +4709,12 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  								  error);
  			if (ret < 0)
  				return ret;


More information about the stable mailing list