From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A779EA051C for ; 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 ; Tue, 11 Feb 2020 12:42:05 +0100 (CET) Received: by mail-wr1-f46.google.com with SMTP id w15so11967211wru.4 for ; 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 Cc: Matan Azrad , dpdk stable 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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 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 Acked-by: Matan Azrad --- 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 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 Acked-by: Matan Azrad @@ -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: