From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <stable-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id A779EA051C
	for <public@inbox.dpdk.org>; Tue, 11 Feb 2020 12:42:06 +0100 (CET)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 9FECD1C002;
	Tue, 11 Feb 2020 12:42:06 +0100 (CET)
Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com
 [209.85.221.46]) by dpdk.org (Postfix) with ESMTP id ED7EA1C013
 for <stable@dpdk.org>; Tue, 11 Feb 2020 12:42:05 +0100 (CET)
Received: by mail-wr1-f46.google.com with SMTP id w15so11967211wru.4
 for <stable@dpdk.org>; Tue, 11 Feb 2020 03:42:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=GuV9Y0K+UdDQjkCrERENVcPFk1Ek/T1xnlrRknS/ERw=;
 b=oL4beJrXYS148kI2kIMKYD5BzusHo7RekMJBxguKAjlSYWOEf9OYtfFk2MINGCt1gz
 n1XJp9Z9WyWSQmsm2pYVcCm0ZA9wV+Q1dyvO3k81GqIkQqV8vgP/as61EUl16LmwlyS3
 SYzXA9WYpt18g3XW47vNzKsskwNjqCf1QZJT5XfT12my2GkUixEY0Qd3KBHgFTIreSJu
 3rgE7bkBMOXPCLc/JT7YiwudHLDjhM/at5ZvunwHg8JVzV+aBqtPMCGiBl+INYHO8afG
 /ToihPAYPx1l4wBinoGSGeM0GQ2V3EEYW2YnY+Jtuyv0qNP0GisJ7AJrRYHp+/02I5DN
 ciQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=GuV9Y0K+UdDQjkCrERENVcPFk1Ek/T1xnlrRknS/ERw=;
 b=N6Ttni97hWHaZpNOQSm12ElHSSeEu4H6LSbla/5gwAc3wALft7m7HtWHazC/Ji5aHa
 AnRUXobbHvY5mSUZdeE7ei4R8/fBk3FYogZJVN8K+OLhMg4QPt8l3X53h2kNP2eAEYgh
 0Udp44V3wGS788aKg5mRlleEoGNDu5I19O+hTX1GH0OQBF9HfD1LyXoaazATkQHz/sy8
 q+0ThXVEPB8rof7a+FPZDcfLQrItwJ5F8g+a3va9FGC4BQ6AIUk7aMxsjr1Lp+UrLcox
 iuMYywH9PlsuRFB62dqtWa9g1AVauketd/piX4YrBKtaZQsalaRbCk3opjPIe8jjq8SX
 opLA==
X-Gm-Message-State: APjAAAXQdpHU66LwuiPuo7bHRDj6eaZ+A6VmXyw91F1UrjBqx8NlX7Su
 KgXIklt8e2ORjsvRy/os0gw=
X-Google-Smtp-Source: APXvYqwK0HVb451+6p+qImZ/rqth4O3Nm1azCc7XGltxnyov//ia0zWU3hyeEGu7kZxVtNIwU6qkNQ==
X-Received: by 2002:adf:f28c:: with SMTP id k12mr8499949wro.360.1581421325635; 
 Tue, 11 Feb 2020 03:42:05 -0800 (PST)
Received: from localhost ([88.98.246.218])
 by smtp.gmail.com with ESMTPSA id e22sm3444843wme.45.2020.02.11.03.42.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 11 Feb 2020 03:42:05 -0800 (PST)
From: luca.boccassi@gmail.com
To: Raslan Darawsheh <rasland@mellanox.com>
Cc: Matan Azrad <matan@mellanox.com>,
	dpdk stable <stable@dpdk.org>
Date: Tue, 11 Feb 2020 11:21:53 +0000
Message-Id: <20200211112216.3929-167-luca.boccassi@gmail.com>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200211112216.3929-1-luca.boccassi@gmail.com>
References: <20200211112216.3929-1-luca.boccassi@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-stable] patch 'net/mlx5: fix VXLAN-GPE item translation' has
	been queued to stable release 19.11.1
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches for DPDK stable branches <stable.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/stable>,
 <mailto:stable-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/stable/>
List-Post: <mailto:stable@dpdk.org>
List-Help: <mailto:stable-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/stable>,
 <mailto:stable-request@dpdk.org?subject=subscribe>
Errors-To: stable-bounces@dpdk.org
Sender: "stable" <stable-bounces@dpdk.org>

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 3f9bb13e513cd926a86a09b8cea7a12bdcf88caa 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 eb46d00060..7bf1aa518d 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -5558,6 +5558,76 @@ flow_dv_translate_item_vxlan(void *matcher, void *key,
 		vni_v[i] = vni_m[i] & vxlan_v->vni[i];
 }
 
+/**
+ * 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 Geneve item to matcher and to the value.
  *
@@ -7226,8 +7296,9 @@ cnt_err:
 			last_item = MLX5_FLOW_LAYER_VXLAN;
 			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;
 		case RTE_FLOW_ITEM_TYPE_GENEVE:
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-02-11 11:17:44.409469034 +0000
+++ 0167-net-mlx5-fix-VXLAN-GPE-item-translation.patch	2020-02-11 11:17:38.800008826 +0000
@@ -1,8 +1,10 @@
-From 90456726eb801df50b98803678427ec8881ff0af Mon Sep 17 00:00:00 2001
+From 3f9bb13e513cd926a86a09b8cea7a12bdcf88caa 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
@@ -13,7 +15,6 @@
 to be 0xc.
 
 Fixes: 3d69434113d1 ("net/mlx5: add Direct Verbs validation function")
-Cc: stable@dpdk.org
 
 Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
 Acked-by: Matan Azrad <matan@mellanox.com>
@@ -22,10 +23,10 @@
  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 d51d17d877..2878393b17 100644
+index eb46d00060..7bf1aa518d 100644
 --- a/drivers/net/mlx5/mlx5_flow_dv.c
 +++ b/drivers/net/mlx5/mlx5_flow_dv.c
-@@ -5778,6 +5778,76 @@ flow_dv_translate_item_vxlan(void *matcher, void *key,
+@@ -5558,6 +5558,76 @@ flow_dv_translate_item_vxlan(void *matcher, void *key,
  		vni_v[i] = vni_m[i] & vxlan_v->vni[i];
  }
  
@@ -102,7 +103,7 @@
  /**
   * Add Geneve item to matcher and to the value.
   *
-@@ -7559,8 +7629,9 @@ cnt_err:
+@@ -7226,8 +7296,9 @@ cnt_err:
  			last_item = MLX5_FLOW_LAYER_VXLAN;
  			break;
  		case RTE_FLOW_ITEM_TYPE_VXLAN_GPE: