patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Raslan Darawsheh <rasland@mellanox.com>
Cc: Matan Azrad <matan@mellanox.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/mlx5: fix VXLAN-GPE item translation' has been queued to LTS release 18.11.7
Date: Fri, 14 Feb 2020 17:03:19 +0000	[thread overview]
Message-ID: <20200214170337.25093-25-ktraynor@redhat.com> (raw)
In-Reply-To: <20200214170337.25093-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to LTS release 18.11.7

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/20/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.

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

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

Thanks.

Kevin.

---
From 681c0e0487c48ba811da3c936eb69fe6956b37f0 Mon Sep 17 00:00:00 2001
From: Raslan Darawsheh <rasland@mellanox.com>
Date: Mon, 27 Jan 2020 17:34:12 +0200
Subject: [PATCH] net/mlx5: fix VXLAN-GPE item translation

[ upstream commit 90456726eb801df50b98803678427ec8881ff0af ]

Currently, when using VXLAN-GPE or VXLAN item in the flow
both are being treated the same with flags 0x8 in VXLAN
header. Which mean the matching of the item VXLAN-GPE
will match any VXLAN packet.

This fixes the translation of VXLAN GPE item into PMD flow
item. Which will by default set the flags to VXLAN-GPE
to be 0xc.

Fixes: 3d69434113d1 ("net/mlx5: add Direct Verbs validation function")

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 75 ++++++++++++++++++++++++++++++++-
 1 file changed, 73 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index b854e66dcb..04c0a5813b 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -1652,4 +1652,74 @@ flow_dv_translate_item_vxlan(void *matcher, void *key,
 }
 
+/**
+ * Add VXLAN-GPE item to matcher and to the value.
+ *
+ * @param[in, out] matcher
+ *   Flow matcher.
+ * @param[in, out] key
+ *   Flow matcher value.
+ * @param[in] item
+ *   Flow pattern to translate.
+ * @param[in] inner
+ *   Item is inner pattern.
+ */
+
+static void
+flow_dv_translate_item_vxlan_gpe(void *matcher, void *key,
+				 const struct rte_flow_item *item, int inner)
+{
+	const struct rte_flow_item_vxlan_gpe *vxlan_m = item->mask;
+	const struct rte_flow_item_vxlan_gpe *vxlan_v = item->spec;
+	void *headers_m;
+	void *headers_v;
+	void *misc_m =
+		MLX5_ADDR_OF(fte_match_param, matcher, misc_parameters_3);
+	void *misc_v =
+		MLX5_ADDR_OF(fte_match_param, key, misc_parameters_3);
+	char *vni_m;
+	char *vni_v;
+	uint16_t dport;
+	int size;
+	int i;
+	uint8_t flags_m = 0xff;
+	uint8_t flags_v = 0xc;
+
+	if (inner) {
+		headers_m = MLX5_ADDR_OF(fte_match_param, matcher,
+					 inner_headers);
+		headers_v = MLX5_ADDR_OF(fte_match_param, key, inner_headers);
+	} else {
+		headers_m = MLX5_ADDR_OF(fte_match_param, matcher,
+					 outer_headers);
+		headers_v = MLX5_ADDR_OF(fte_match_param, key, outer_headers);
+	}
+	dport = item->type == RTE_FLOW_ITEM_TYPE_VXLAN ?
+		MLX5_UDP_PORT_VXLAN : MLX5_UDP_PORT_VXLAN_GPE;
+	if (!MLX5_GET16(fte_match_set_lyr_2_4, headers_v, udp_dport)) {
+		MLX5_SET(fte_match_set_lyr_2_4, headers_m, udp_dport, 0xFFFF);
+		MLX5_SET(fte_match_set_lyr_2_4, headers_v, udp_dport, dport);
+	}
+	if (!vxlan_v)
+		return;
+	if (!vxlan_m)
+		vxlan_m = &rte_flow_item_vxlan_gpe_mask;
+	size = sizeof(vxlan_m->vni);
+	vni_m = MLX5_ADDR_OF(fte_match_set_misc3, misc_m, outer_vxlan_gpe_vni);
+	vni_v = MLX5_ADDR_OF(fte_match_set_misc3, misc_v, outer_vxlan_gpe_vni);
+	memcpy(vni_m, vxlan_m->vni, size);
+	for (i = 0; i < size; ++i)
+		vni_v[i] = vni_m[i] & vxlan_v->vni[i];
+	if (vxlan_m->flags) {
+		flags_m = vxlan_m->flags;
+		flags_v = vxlan_v->flags;
+	}
+	MLX5_SET(fte_match_set_misc3, misc_m, outer_vxlan_gpe_flags, flags_m);
+	MLX5_SET(fte_match_set_misc3, misc_v, outer_vxlan_gpe_flags, flags_v);
+	MLX5_SET(fte_match_set_misc3, misc_m, outer_vxlan_gpe_next_protocol,
+		 vxlan_m->protocol);
+	MLX5_SET(fte_match_set_misc3, misc_v, outer_vxlan_gpe_next_protocol,
+		 vxlan_v->protocol);
+}
+
 /**
  * Add MPLS item to matcher and to the value.
@@ -2151,6 +2221,7 @@ flow_dv_translate(struct rte_eth_dev *dev,
 			break;
 		case RTE_FLOW_ITEM_TYPE_VXLAN_GPE:
-			flow_dv_translate_item_vxlan(match_mask, match_value,
-						     items, tunnel);
+			flow_dv_translate_item_vxlan_gpe(match_mask,
+							 match_value, items,
+							 tunnel);
 			last_item = MLX5_FLOW_LAYER_VXLAN_GPE;
 			break;
-- 
2.21.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-02-14 17:02:38.425466352 +0000
+++ 0025-net-mlx5-fix-VXLAN-GPE-item-translation.patch	2020-02-14 17:02:36.991407104 +0000
@@ -1 +1 @@
-From 90456726eb801df50b98803678427ec8881ff0af Mon Sep 17 00:00:00 2001
+From 681c0e0487c48ba811da3c936eb69fe6956b37f0 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 90456726eb801df50b98803678427ec8881ff0af ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +26 @@
-index d51d17d877..2878393b17 100644
+index b854e66dcb..04c0a5813b 100644
@@ -28 +29 @@
-@@ -5779,4 +5779,74 @@ flow_dv_translate_item_vxlan(void *matcher, void *key,
+@@ -1652,4 +1652,74 @@ flow_dv_translate_item_vxlan(void *matcher, void *key,
@@ -102,2 +103,2 @@
-  * Add Geneve item to matcher and to the value.
-@@ -7560,6 +7630,7 @@ cnt_err:
+  * Add MPLS item to matcher and to the value.
+@@ -2151,6 +2221,7 @@ flow_dv_translate(struct rte_eth_dev *dev,


  parent reply	other threads:[~2020-02-14 17:05 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-14 17:02 [dpdk-stable] patch 'net/virtio-user: do not close tap when disabling queue pairs' " Kevin Traynor
2020-02-14 17:02 ` [dpdk-stable] patch 'net/virtio-user: check tap offload setting failure' " Kevin Traynor
2020-02-14 17:02 ` [dpdk-stable] patch 'vhost: fix deadlock on port deletion' " Kevin Traynor
2020-02-14 17:02 ` [dpdk-stable] patch 'net/ixgbe: remove duplicate function declaration' " Kevin Traynor
2020-02-14 17:02 ` [dpdk-stable] patch 'net/dpaa: fix Rx offload flags on jumbo MTU set' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'ethdev: fix switching domain allocation' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'ethdev: fix secondary process memory overwrite' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'mk: avoid combining -r and -export-dynamic linker options' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'kni: rename variable with namespace prefix' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'cfgfile: fix symbols map' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'latency: fix calculation for multi-thread' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'mempool: fix anonymous populate' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'maintainers: update for failsafe and PCI library' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'maintainers: resign from flow API maintenance' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnxt: fix flow creation' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnxt: use macro for PCI log format' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnxt: do not log error if stats queried before start' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnxt: remove unnecessary memset' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/tap: fix memory leak when unregister intr handler' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnx2x: fix reset of scan FP flag' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnx2x: fix to sync fastpath Rx queue access' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnxt: fix alloc filter to use a common routine' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnxt: remove redundant if statement' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/bnx2x: fix VLAN stripped flag' " Kevin Traynor
2020-02-14 17:03 ` Kevin Traynor [this message]
2020-02-14 17:03 ` [dpdk-stable] patch 'net/octeontx: fix memory leak of MAC address table' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'app/testpmd: fix uninitialized members of MPLS' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'app/testpmd: fix initial value when setting PFC' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'app/testpmd: fix uninitialized members " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'net/failsafe: fix reported hash key size in device info' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'vhost: fix crash on port deletion' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'vhost: do not treat empty socket message as error' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'vhost/crypto: fix fetch size' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'vhost: fix packed virtqueue ready condition' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'vhost: catch overflow causing mmap of size 0' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'crypto/armv8: fix clang build' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'examples/fips_validation: fix cipher length for AES-GCM' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'common/cpt: remove redundant code in datapath' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'common/cpt: check cipher and auth keys are set' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'common/cpt: fix component for empty IOV buffer' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'bpf: fix headers install with meson' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'app/pdump: fix build with clang' " Kevin Traynor
2020-02-14 17:03 ` [dpdk-stable] patch 'mem: fix munmap in error unwind' " 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=20200214170337.25093-25-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=matan@mellanox.com \
    --cc=rasland@mellanox.com \
    --cc=stable@dpdk.org \
    /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).