patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Jiawei Wang <jiaweiw@nvidia.com>
Cc: Viacheslav Ovsiienko <viacheslavo@nvidia.com>,
	dpdk stable <stable@dpdk.org>
Subject: patch 'net/mlx5: fix tunnel header with IPIP offload' has been queued to stable release 21.11.3
Date: Fri, 11 Nov 2022 10:33:09 +0000	[thread overview]
Message-ID: <20221111103337.307408-19-ktraynor@redhat.com> (raw)
In-Reply-To: <20221111103337.307408-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to stable release 21.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 11/14/22. 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.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/ee2387b0ba1da1e287aeaa5245c0041cb3c9cd69

Thanks.

Kevin

---
From ee2387b0ba1da1e287aeaa5245c0041cb3c9cd69 Mon Sep 17 00:00:00 2001
From: Jiawei Wang <jiaweiw@nvidia.com>
Date: Thu, 20 Oct 2022 15:55:34 +0300
Subject: [PATCH] net/mlx5: fix tunnel header with IPIP offload

[ upstream commit bfa87e21bdeadb48c0ad9ad6b360393c413be861 ]

For the flows with multiple tunnel layers and containing
tunnel decap and modify actions, for example:

... / vxlan / eth / ipv4 proto is 4 / end
actions raw_decap / modify_field / ...
(note: proto 4 means we have the IP-over-IP tunnel in VXLAN payload)

We have added the multiple tunnel layers validation rejecting
the flows like above mentioned one.

The hardware supports the above match combination till the inner
IP-over-IP header (not including the last one), both for IP-over-IPv4
and IP-over-IPv6, so we should not blindly reject. Also, for the modify
actions following the decap we should set the layer attributes correctly.

This patch reverts the below code changes to support the match, and
adjusts the layers update in case of decap with outer tunnel header.

Fixes: fa06906a48ee ("net/mlx5: fix IPIP multi-tunnel validation")

Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow.c    |  4 ++--
 drivers/net/mlx5/mlx5_flow_dv.c | 11 ++++++++---
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index e260c8b27f..ba0983ddf0 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -2357,5 +2357,5 @@ mlx5_flow_validate_item_ipv4(const struct rte_flow_item *item,
 					  "IPv4 cannot follow L2/VLAN layer "
 					  "which ether type is not IPv4");
-	if (item_flags & MLX5_FLOW_LAYER_TUNNEL) {
+	if (item_flags & MLX5_FLOW_LAYER_IPIP) {
 		if (mask && spec)
 			next_proto = mask->hdr.next_proto_id &
@@ -2465,5 +2465,5 @@ mlx5_flow_validate_item_ipv6(const struct rte_flow_item *item,
 	if (mask && mask->hdr.proto == UINT8_MAX && spec)
 		next_proto = spec->hdr.proto;
-	if (item_flags & MLX5_FLOW_LAYER_TUNNEL) {
+	if (item_flags & MLX5_FLOW_LAYER_IPIP) {
 		if (next_proto == IPPROTO_IPIP || next_proto == IPPROTO_IPV6)
 			return rte_flow_error_set(error, EINVAL,
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 2a976d843b..c3a2a658e1 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -114,4 +114,5 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
 {
 	uint64_t layers = dev_flow->handle->layers;
+	bool tunnel_match = false;
 
 	/*
@@ -150,6 +151,8 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
 		case RTE_FLOW_ITEM_TYPE_MPLS:
 		case RTE_FLOW_ITEM_TYPE_GTP:
-			if (tunnel_decap)
+			if (tunnel_decap) {
 				attr->attr = 0;
+				tunnel_match = true;
+			}
 			break;
 		case RTE_FLOW_ITEM_TYPE_IPV4:
@@ -165,5 +168,6 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
 				      (item->mask))->hdr.next_proto_id;
 			if ((next_protocol == IPPROTO_IPIP ||
-			    next_protocol == IPPROTO_IPV6) && tunnel_decap)
+			    next_protocol == IPPROTO_IPV6) && tunnel_decap &&
+			    !tunnel_match)
 				attr->attr = 0;
 			break;
@@ -180,5 +184,6 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
 				      (item->mask))->hdr.proto;
 			if ((next_protocol == IPPROTO_IPIP ||
-			    next_protocol == IPPROTO_IPV6) && tunnel_decap)
+			    next_protocol == IPPROTO_IPV6) && tunnel_decap &&
+			    !tunnel_match)
 				attr->attr = 0;
 			break;
-- 
2.38.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-11 10:32:17.546690270 +0000
+++ 0019-net-mlx5-fix-tunnel-header-with-IPIP-offload.patch	2022-11-11 10:32:17.071300756 +0000
@@ -1 +1 @@
-From bfa87e21bdeadb48c0ad9ad6b360393c413be861 Mon Sep 17 00:00:00 2001
+From ee2387b0ba1da1e287aeaa5245c0041cb3c9cd69 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bfa87e21bdeadb48c0ad9ad6b360393c413be861 ]
+
@@ -25 +26,0 @@
-Cc: stable@dpdk.org
@@ -35 +36 @@
-index 3aec121679..8e7d649d15 100644
+index e260c8b27f..ba0983ddf0 100644
@@ -38 +39 @@
-@@ -2665,5 +2665,5 @@ mlx5_flow_validate_item_ipv4(const struct rte_flow_item *item,
+@@ -2357,5 +2357,5 @@ mlx5_flow_validate_item_ipv4(const struct rte_flow_item *item,
@@ -45 +46 @@
-@@ -2773,5 +2773,5 @@ mlx5_flow_validate_item_ipv6(const struct rte_flow_item *item,
+@@ -2465,5 +2465,5 @@ mlx5_flow_validate_item_ipv6(const struct rte_flow_item *item,
@@ -53 +54 @@
-index 6d8c155e45..1e52278191 100644
+index 2a976d843b..c3a2a658e1 100644
@@ -56 +57 @@
-@@ -129,4 +129,5 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
+@@ -114,4 +114,5 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
@@ -62 +63 @@
-@@ -165,6 +166,8 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
+@@ -150,6 +151,8 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
@@ -72 +73 @@
-@@ -180,5 +183,6 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
+@@ -165,5 +168,6 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
@@ -80 +81 @@
-@@ -195,5 +199,6 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,
+@@ -180,5 +184,6 @@ flow_dv_attr_init(const struct rte_flow_item *item, union flow_dv_attr *attr,


  parent reply	other threads:[~2022-11-11 10:34 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-11 10:32 patch 'event/sw: fix flow ID init in self test' " Kevin Traynor
2022-11-11 10:32 ` patch 'event/sw: fix log " Kevin Traynor
2022-11-11 10:32 ` patch 'eventdev/crypto: fix multi-process' " Kevin Traynor
2022-11-11 10:32 ` patch 'eventdev/eth_tx: fix queue delete' " Kevin Traynor
2022-11-11 10:32 ` patch 'gro: check payload length after trim' " Kevin Traynor
2022-11-11 10:32 ` patch 'doc: fix support table for Ethernet/VLAN flow items' " Kevin Traynor
2022-11-11 10:32 ` patch 'app/testpmd: skip port reset in secondary process' " Kevin Traynor
2022-11-11 10:32 ` patch 'net/bonding: fix descriptor limit reporting' " Kevin Traynor
2022-11-11 10:32 ` patch 'net/ionic: fix endianness for Rx and Tx' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ionic: fix endianness for RSS' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ionic: fix adapter name for logging' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ionic: fix Rx filter save' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ionic: fix reported error stats' " Kevin Traynor
2022-11-11 10:33 ` patch 'app/testpmd: remove jumbo offload' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/nfp: fix internal buffer size and MTU check' " Kevin Traynor
2022-11-11 10:33 ` patch 'vhost: add non-blocking API for posting interrupt' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/mlx5: fix thread workspace memory leak' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/mlx5: fix RSS expansion buffer size' " Kevin Traynor
2022-11-11 10:33 ` Kevin Traynor [this message]
2022-11-11 10:33 ` patch 'net/mlx5: fix null check in devargs parsing' " Kevin Traynor
2022-11-11 10:33 ` patch 'sched: fix subport profile configuration' " Kevin Traynor
2022-11-11 10:33 ` patch 'examples/qos_sched: fix number of subport profiles' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ixgbe: fix broadcast Rx on VF after promisc removal' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ixgbe: fix unexpected VLAN Rx in promisc mode on VF' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ice: fix null function pointer call' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/iavf: fix IPsec flow create error check' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/iavf: fix SPI " Kevin Traynor
2022-11-11 10:33 ` patch 'net/iavf: add thread for event callbacks' " Kevin Traynor
2022-11-18 12:32   ` Kevin Traynor
2022-11-21  4:48     ` Zhou, YidingX
2022-11-11 10:33 ` patch 'net/iavf: fix queue stop for large VF' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/ice: support VXLAN-GPE tunnel offload' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/iavf: fix handling of IPsec events' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/cnxk: fix later skip to include mbuf private data' " Kevin Traynor
2022-11-11 10:33 ` patch 'common/cnxk: fix schedule weight update' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/mlx5: fix thread termination check on Windows' " Kevin Traynor
2022-11-11 10:33 ` patch 'examples/l2fwd-crypto: fix typo in error message' " Kevin Traynor
2022-11-11 10:33 ` patch 'test/crypto: fix wireless auth digest segment' " Kevin Traynor
2022-11-11 10:33 ` patch 'baseband/acc100: fix memory leak' " Kevin Traynor
2022-11-11 10:33 ` patch 'baseband/acc100: check turbo dec/enc input' " Kevin Traynor
2022-11-11 10:33 ` patch 'baseband/acc100: add null checks' " Kevin Traynor
2022-11-11 10:33 ` patch 'baseband/acc100: fix input length for CRC24B' " Kevin Traynor
2022-11-11 10:33 ` patch 'baseband/acc100: fix clearing PF IR outside handler' " Kevin Traynor
2022-11-11 10:33 ` patch 'baseband/acc100: fix device minimum alignment' " Kevin Traynor
2022-11-11 10:33 ` patch 'baseband/acc100: fix close cleanup' " Kevin Traynor
2022-11-11 10:33 ` patch 'test/crypto: fix PDCP vectors' " Kevin Traynor
2022-11-11 10:33 ` patch 'examples/ipsec-secgw: fix Tx checksum offload flag' " Kevin Traynor
2022-11-11 10:33 ` patch 'crypto/qat: fix null hash algorithm digest size' " Kevin Traynor
2022-11-11 10:33 ` patch 'net/mlx5: fix build with recent compilers' " Kevin Traynor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221111103337.307408-19-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=jiaweiw@nvidia.com \
    --cc=stable@dpdk.org \
    --cc=viacheslavo@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).