From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C7C17A0524 for ; Fri, 5 Feb 2021 12:23:59 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2748B188920; Fri, 5 Feb 2021 12:23:59 +0100 (CET) Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by mails.dpdk.org (Postfix) with ESMTP id BEE3E4067B for ; Fri, 5 Feb 2021 12:23:57 +0100 (CET) Received: by mail-wm1-f50.google.com with SMTP id t142so3557944wmt.1 for ; Fri, 05 Feb 2021 03:23:57 -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=HHy0oK9CW+TM6vlxJmryTH2qba3vk1UYAcNvaXXezBM=; b=pBTM+L0Hp5ibrnszN0lMeCKkbnATqf/tRx0TI1WIe/esEIoCZSGDtHNGC4MDvbl1Em MoVDpgVz7pdYqetxsT0FUkKRV7k90qP9XL/ZH/mKfrw2yYkTpozROYpPfwyL9xYfILec sLohAMgIJ2iYphyOk9H+UbLC6n2BRB30rcCMykQUDww1VMUqft7bFnMnrT6lXG3de94z oGU91632/WprwgW2+VbxkMHnBCXNFA8DejD3J1pX3cH0x8tl08YEKBhDyNjGjcBFbwcT yniUUUSbCdP7CqMHLx17/yaCtKFn9Gb+s170XCZ4GLNi0WsEMy07Y9yT/KGyg4NUG49t v+sQ== 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=HHy0oK9CW+TM6vlxJmryTH2qba3vk1UYAcNvaXXezBM=; b=omJswz7kPMnGbAu1zRYxQu5p7CHSlQl/LlSKSqq4WXxLJX3vR90qSyl88rpfG3OR0g uZ5HUjvgA7B9zMaF4xn/RJb/ilLk7EmBi54AQp8MEt6M1zER+HwIMFUbVZSLrHJ6DQIw oEV0MdeksaYlGlBe5f/VH9lr0WHYJAredHuMjj6JUt613BcnfL2SVj1KXh/Z0AiKDEj2 D22B5erqi3qFAczdThVBq3vabCVw1jaypFhz1+DNoE2eqLZuxVHhz0mU9m1JC+Lj1/uY 8HyZi0CReZnEKChISHdzRINZ9Z8efEHySCMCCtsSeF+6QW1kqNOIKtCjSapla0S48HOC 8RpA== X-Gm-Message-State: AOAM5339YeTe7vRlFPKPvxXbeBavWMZ2nwv54gDQWerfngcuHcQgjazj G0K2sSq5fnHoXzQKQcCAIek= X-Google-Smtp-Source: ABdhPJxXRkU5mNE7bSIvYrqTcub7c0hxt4HfpltjdvzLxOc5wknEa7002MgUK4p2iFeE82DnIhXTWg== X-Received: by 2002:a1c:e043:: with SMTP id x64mr198719wmg.75.1612524237491; Fri, 05 Feb 2021 03:23:57 -0800 (PST) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id q7sm10891540wro.55.2021.02.05.03.23.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Feb 2021 03:23:56 -0800 (PST) From: luca.boccassi@gmail.com To: Shiri Kuzin Cc: Suanming Mou , dpdk stable Date: Fri, 5 Feb 2021 11:16:10 +0000 Message-Id: <20210205111920.1272063-84-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210205111920.1272063-1-luca.boccassi@gmail.com> References: <20210205111920.1272063-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/mlx5: fix VXLAN decap on non-VXLAN flow' has been queued to stable release 20.11.1 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 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 20.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/07/21. 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/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/353dafe2e3746df887cccffcc1654d57930d02cc Thanks. Luca Boccassi --- >From 353dafe2e3746df887cccffcc1654d57930d02cc Mon Sep 17 00:00:00 2001 From: Shiri Kuzin Date: Thu, 31 Dec 2020 11:33:28 +0200 Subject: [PATCH] net/mlx5: fix VXLAN decap on non-VXLAN flow [ upstream commit d362e6f6ac6d90c02dc773bd0e39ec0c05db2925 ] The vxlan_decap action performs decapsulation of the VXLAN tunnel. Currently we can create a flow with vxlan_decap without matching on VXLAN header. To solve this issue this patch adds validation verifying that the VXLAN item was detected when specifying vxlan_decap action. Fixes: 49d6465af3e1 ("net/mlx5: add VXLAN decap action to Direct Verbs") Signed-off-by: Shiri Kuzin Reviewed-by: Suanming Mou --- drivers/net/mlx5/mlx5_flow_dv.c | 35 ++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index ddeaa32b66..407e76e7b1 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -2612,6 +2612,10 @@ flow_dv_validate_action_l2_encap(struct rte_eth_dev *dev, * Pointer to the rte_eth_dev structure. * @param[in] action_flags * Holds the actions detected until now. + * @param[in] action + * Pointer to the action structure. + * @param[in] item_flags + * Holds the items detected. * @param[in] attr * Pointer to flow attributes * @param[out] error @@ -2623,6 +2627,8 @@ flow_dv_validate_action_l2_encap(struct rte_eth_dev *dev, static int flow_dv_validate_action_decap(struct rte_eth_dev *dev, uint64_t action_flags, + const struct rte_flow_action *action, + const uint64_t item_flags, const struct rte_flow_attr *attr, struct rte_flow_error *error) { @@ -2656,6 +2662,11 @@ flow_dv_validate_action_decap(struct rte_eth_dev *dev, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, "decap action for VF representor " "not supported on NIC table"); + if (action->type == RTE_FLOW_ACTION_TYPE_VXLAN_DECAP && + !(item_flags & MLX5_FLOW_LAYER_VXLAN)) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, + "VXLAN item should be present for VXLAN decap"); return 0; } @@ -2676,6 +2687,10 @@ const struct rte_flow_action_raw_decap empty_decap = {.data = NULL, .size = 0,}; * Holds the actions detected until now. * @param[out] actions_n * pointer to the number of actions counter. + * @param[in] action + * Pointer to the action structure. + * @param[in] item_flags + * Holds the items detected. * @param[out] error * Pointer to error structure. * @@ -2688,7 +2703,8 @@ flow_dv_validate_action_raw_encap_decap const struct rte_flow_action_raw_decap *decap, const struct rte_flow_action_raw_encap *encap, const struct rte_flow_attr *attr, uint64_t *action_flags, - int *actions_n, struct rte_flow_error *error) + int *actions_n, const struct rte_flow_action *action, + uint64_t item_flags, struct rte_flow_error *error) { const struct mlx5_priv *priv = dev->data->dev_private; int ret; @@ -2723,8 +2739,8 @@ flow_dv_validate_action_raw_encap_decap "encap combination"); } if (decap) { - ret = flow_dv_validate_action_decap(dev, *action_flags, attr, - error); + ret = flow_dv_validate_action_decap(dev, *action_flags, action, + item_flags, attr, error); if (ret < 0) return ret; *action_flags |= MLX5_FLOW_ACTION_DECAP; @@ -4329,6 +4345,8 @@ flow_dv_modify_create_cb(struct mlx5_hlist *list, uint64_t key __rte_unused, * Pointer to the Ethernet device structure. * @param[in] attr * Attributes of flow that includes this action. + * @param[in] item_flags + * Holds the items detected. * @param[out] error * Pointer to error structure. * @@ -4340,6 +4358,7 @@ flow_dv_validate_action_sample(uint64_t action_flags, const struct rte_flow_action *action, struct rte_eth_dev *dev, const struct rte_flow_attr *attr, + const uint64_t item_flags, struct rte_flow_error *error) { struct mlx5_priv *priv = dev->data->dev_private; @@ -4433,7 +4452,7 @@ flow_dv_validate_action_sample(uint64_t action_flags, case RTE_FLOW_ACTION_TYPE_RAW_ENCAP: ret = flow_dv_validate_action_raw_encap_decap (dev, NULL, act->conf, attr, &sub_action_flags, - &actions_n, error); + &actions_n, action, item_flags, error); if (ret < 0) return ret; ++actions_n; @@ -5766,6 +5785,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, case RTE_FLOW_ACTION_TYPE_VXLAN_DECAP: case RTE_FLOW_ACTION_TYPE_NVGRE_DECAP: ret = flow_dv_validate_action_decap(dev, action_flags, + actions, item_flags, attr, error); if (ret < 0) return ret; @@ -5775,7 +5795,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, case RTE_FLOW_ACTION_TYPE_RAW_ENCAP: ret = flow_dv_validate_action_raw_encap_decap (dev, NULL, actions->conf, attr, &action_flags, - &actions_n, error); + &actions_n, actions, item_flags, error); if (ret < 0) return ret; break; @@ -5793,7 +5813,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, (dev, decap ? decap : &empty_decap, encap, attr, &action_flags, &actions_n, - error); + actions, item_flags, error); if (ret < 0) return ret; break; @@ -6008,7 +6028,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, case RTE_FLOW_ACTION_TYPE_SAMPLE: ret = flow_dv_validate_action_sample(action_flags, actions, dev, - attr, error); + attr, item_flags, + error); if (ret < 0) return ret; action_flags |= MLX5_FLOW_ACTION_SAMPLE; -- 2.29.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-02-05 11:18:33.052623756 +0000 +++ 0084-net-mlx5-fix-VXLAN-decap-on-non-VXLAN-flow.patch 2021-02-05 11:18:28.930693473 +0000 @@ -1 +1 @@ -From d362e6f6ac6d90c02dc773bd0e39ec0c05db2925 Mon Sep 17 00:00:00 2001 +From 353dafe2e3746df887cccffcc1654d57930d02cc Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit d362e6f6ac6d90c02dc773bd0e39ec0c05db2925 ] + @@ -16 +17,0 @@ -Cc: stable@dpdk.org @@ -25 +26 @@ -index 50673ced25..2f1c71774e 100644 +index ddeaa32b66..407e76e7b1 100644 @@ -92 +93 @@ -@@ -4326,6 +4342,8 @@ flow_dv_modify_create_cb(struct mlx5_hlist *list, uint64_t key __rte_unused, +@@ -4329,6 +4345,8 @@ flow_dv_modify_create_cb(struct mlx5_hlist *list, uint64_t key __rte_unused, @@ -101 +102 @@ -@@ -4337,6 +4355,7 @@ flow_dv_validate_action_sample(uint64_t action_flags, +@@ -4340,6 +4358,7 @@ flow_dv_validate_action_sample(uint64_t action_flags, @@ -109 +110 @@ -@@ -4430,7 +4449,7 @@ flow_dv_validate_action_sample(uint64_t action_flags, +@@ -4433,7 +4452,7 @@ flow_dv_validate_action_sample(uint64_t action_flags, @@ -118 +119 @@ -@@ -5764,6 +5783,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, +@@ -5766,6 +5785,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, @@ -126 +127 @@ -@@ -5773,7 +5793,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, +@@ -5775,7 +5795,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, @@ -135 +136 @@ -@@ -5791,7 +5811,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, +@@ -5793,7 +5813,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, @@ -144 +145 @@ -@@ -6006,7 +6026,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, +@@ -6008,7 +6028,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,