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 4654DA0093 for ; Tue, 19 May 2020 15:07:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3EF6E1D603; Tue, 19 May 2020 15:07:08 +0200 (CEST) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by dpdk.org (Postfix) with ESMTP id A53551D65B for ; Tue, 19 May 2020 15:07:06 +0200 (CEST) Received: by mail-wm1-f67.google.com with SMTP id f134so3005524wmf.1 for ; Tue, 19 May 2020 06:07:06 -0700 (PDT) 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=7keEabw+J7TwdG9ok/7w/6YhDjpIKwWtYtgMumyQm24=; b=elvLa+M9Z9znKSya3yV9ZbM2jAlZ1n7gV18VhoNhl1XcK5Yz3LYPbE+B8hcos493tw 849c13HCuKrLnRf6pT9phRolszz4aVGcVkEJBTElwK6hGw99oSS/yOFZiMRqpgwG5BE3 UkeSkzaoXd49080Bc+msI/IYPFt3WL2nUCH+4Rc0snhZNTjixDhW27oaIRpPEL1sWsUA mRuDVdkt7do2jQyv7nYFpsPpbJ+t6hYYqAHnjZPMZA0ztR8x+M3fu/htN+QLpeOvKFCu HwRKeR/bSa1R0LszIvLVQEYnIUqPzgUlpbZjoWJB6dfyvm/f7wzpl6OqbIeg1PRQTB5V lpgQ== 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=7keEabw+J7TwdG9ok/7w/6YhDjpIKwWtYtgMumyQm24=; b=oNLWi/O997kNSiXZ1pP/8okxMKIpIe0axBmaT2ZOyuriGYY89QLwVYk/vaBhb4JwS3 QOJUTTHimg2Y81OURfMPauk8s+huBjTElC/iQiJC/Yh0U5bPTzNvmLEv7YzC7a4mhxfn jKZ4R2+TW/aZmWT8AqMSul3i3yNPULQRp/Zx6SL0X8qPiY21eJNX9bvFwedaDZddjGOQ Ifsl1edm0HqHLxEOTqaGaTzSR4afz9yca5ppLUATCm9YF4BdtxBjmVGvG4UWi1jRyzLu hVVcler+m4fJwbYe5Q6DY1GPy3fAnUjphuuuVU3CFaW/sDG2wac/7ouCa4VT+XbQIS9q kipA== X-Gm-Message-State: AOAM531p6wDpaSaSxOIAk5Sp2hhK2Fv0kG8jBvlgw1/RsDT3Pj0ST2fB 8WDR7PpCYzmH5HqYhBknXzNor/wI1ZAqBGjN X-Google-Smtp-Source: ABdhPJyYCvt9GcnAFAGwhKpssq+8p2lhXOAVGz3T+shI/i7W9P82rguzQFYYRt1CVcNqtK9yHKGkMg== X-Received: by 2002:a05:600c:2257:: with SMTP id a23mr5774273wmm.13.1589893626318; Tue, 19 May 2020 06:07:06 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id f128sm4312205wme.1.2020.05.19.06.07.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 06:07:05 -0700 (PDT) From: luca.boccassi@gmail.com To: Wisam Jaddo Cc: Viacheslav Ovsiienko , dpdk stable Date: Tue, 19 May 2020 14:02:39 +0100 Message-Id: <20200519130549.112823-24-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519130549.112823-1-luca.boccassi@gmail.com> References: <20200519125804.104349-1-luca.boccassi@gmail.com> <20200519130549.112823-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/mlx5: fix zero value validation for metadata' has been queued to stable release 19.11.3 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.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 05/21/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 d9a7bf74e175f3712637342639e2acf108be99ea Mon Sep 17 00:00:00 2001 From: Wisam Jaddo Date: Thu, 26 Mar 2020 10:22:00 +0000 Subject: [PATCH] net/mlx5: fix zero value validation for metadata [ upstream commit dac98e878043bbdc11a9bc3eaff3c46321730ea7 ] MARK and META items are interrelated with datapath - they might move from/to the applications in mbuf. zero value for these items has the special meaning - it means "no metadata are provided", not zero values are treated by applications and PMD as valid ones. Moreover in the flow engine domain the value zero is acceptable to match and set, and we should allow to specify zero values as rte_flow parameters for the META and MARK items and actions. In the same time zero mask has no meaning and should be rejected on validation stage. Fixes: fcc8d2f716fd ("net/mlx5: extend flow metadata support") Fixes: e554b672aa05 ("net/mlx5: support flow tag") Fixes: 55deee1715f0 ("net/mlx5: extend flow mark support") Signed-off-by: Wisam Jaddo Acked-by: Viacheslav Ovsiienko --- doc/guides/nics/mlx5.rst | 13 +++++++++++++ drivers/net/mlx5/mlx5_flow_dv.c | 19 +++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 86ad404513..830a02dc90 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -1214,6 +1214,19 @@ Supported hardware offloads | | | ConnectX-5 | | ConnectX-5 | +-----------------------+-----------------+-----------------+ +Notes for metadata +------------------ + +MARK and META items are interrelated with datapath - they might move from/to +the applications in mbuf fields. Hence, zero value for these items has the +special meaning - it means "no metadata are provided", not zero values are +treated by applications and PMD as valid ones. + +Moreover in the flow engine domain the value zero is acceptable to match and +set, and we should allow to specify zero values as rte_flow parameters for the +META and MARK items and actions. In the same time zero mask has no meaning and +should be rejected on validation stage. + Notes for testpmd ----------------- diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 076a30544f..f0edb98c02 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1325,6 +1325,11 @@ flow_dv_validate_item_mark(struct rte_eth_dev *dev, "mark id exceeds the limit"); if (!mask) mask = &nic_mask; + if (!mask->id) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM_SPEC, NULL, + "mask cannot be zero"); + ret = mlx5_flow_item_acceptable(item, (const uint8_t *)mask, (const uint8_t *)&nic_mask, sizeof(struct rte_flow_item_mark), @@ -1370,10 +1375,6 @@ flow_dv_validate_item_meta(struct rte_eth_dev *dev __rte_unused, RTE_FLOW_ERROR_TYPE_ITEM_SPEC, item->spec, "data cannot be empty"); - if (!spec->data) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM_SPEC, NULL, - "data cannot be zero"); if (config->dv_xmeta_en != MLX5_XMETA_MODE_LEGACY) { if (!mlx5_flow_ext_mreg_supported(dev)) return rte_flow_error_set(error, ENOTSUP, @@ -1393,6 +1394,11 @@ flow_dv_validate_item_meta(struct rte_eth_dev *dev __rte_unused, } if (!mask) mask = &rte_flow_item_meta_mask; + if (!mask->data) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM_SPEC, NULL, + "mask cannot be zero"); + ret = mlx5_flow_item_acceptable(item, (const uint8_t *)mask, (const uint8_t *)&nic_mask, sizeof(struct rte_flow_item_meta), @@ -1441,6 +1447,11 @@ flow_dv_validate_item_tag(struct rte_eth_dev *dev, "data cannot be empty"); if (!mask) mask = &rte_flow_item_tag_mask; + if (!mask->data) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM_SPEC, NULL, + "mask cannot be zero"); + ret = mlx5_flow_item_acceptable(item, (const uint8_t *)mask, (const uint8_t *)&nic_mask, sizeof(struct rte_flow_item_tag), -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-05-19 14:04:45.596467218 +0100 +++ 0024-net-mlx5-fix-zero-value-validation-for-metadata.patch 2020-05-19 14:04:44.156647285 +0100 @@ -1,8 +1,10 @@ -From dac98e878043bbdc11a9bc3eaff3c46321730ea7 Mon Sep 17 00:00:00 2001 +From d9a7bf74e175f3712637342639e2acf108be99ea Mon Sep 17 00:00:00 2001 From: Wisam Jaddo Date: Thu, 26 Mar 2020 10:22:00 +0000 Subject: [PATCH] net/mlx5: fix zero value validation for metadata +[ upstream commit dac98e878043bbdc11a9bc3eaff3c46321730ea7 ] + MARK and META items are interrelated with datapath - they might move from/to the applications in mbuf. @@ -20,7 +22,6 @@ Fixes: fcc8d2f716fd ("net/mlx5: extend flow metadata support") Fixes: e554b672aa05 ("net/mlx5: support flow tag") Fixes: 55deee1715f0 ("net/mlx5: extend flow mark support") -Cc: stable@dpdk.org Signed-off-by: Wisam Jaddo Acked-by: Viacheslav Ovsiienko @@ -30,10 +31,10 @@ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst -index e8f9984df0..ca4ded2f22 100644 +index 86ad404513..830a02dc90 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst -@@ -1275,6 +1275,19 @@ Supported hardware offloads +@@ -1214,6 +1214,19 @@ Supported hardware offloads | | | ConnectX-5 | | ConnectX-5 | +-----------------------+-----------------+-----------------+ @@ -54,10 +55,10 @@ ----------------- diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c -index b9bf83a4b7..7b3d419bf8 100644 +index 076a30544f..f0edb98c02 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c -@@ -1406,6 +1406,11 @@ flow_dv_validate_item_mark(struct rte_eth_dev *dev, +@@ -1325,6 +1325,11 @@ flow_dv_validate_item_mark(struct rte_eth_dev *dev, "mark id exceeds the limit"); if (!mask) mask = &nic_mask; @@ -69,7 +70,7 @@ ret = mlx5_flow_item_acceptable(item, (const uint8_t *)mask, (const uint8_t *)&nic_mask, sizeof(struct rte_flow_item_mark), -@@ -1451,10 +1456,6 @@ flow_dv_validate_item_meta(struct rte_eth_dev *dev __rte_unused, +@@ -1370,10 +1375,6 @@ flow_dv_validate_item_meta(struct rte_eth_dev *dev __rte_unused, RTE_FLOW_ERROR_TYPE_ITEM_SPEC, item->spec, "data cannot be empty"); @@ -80,7 +81,7 @@ if (config->dv_xmeta_en != MLX5_XMETA_MODE_LEGACY) { if (!mlx5_flow_ext_mreg_supported(dev)) return rte_flow_error_set(error, ENOTSUP, -@@ -1474,6 +1475,11 @@ flow_dv_validate_item_meta(struct rte_eth_dev *dev __rte_unused, +@@ -1393,6 +1394,11 @@ flow_dv_validate_item_meta(struct rte_eth_dev *dev __rte_unused, } if (!mask) mask = &rte_flow_item_meta_mask; @@ -92,7 +93,7 @@ ret = mlx5_flow_item_acceptable(item, (const uint8_t *)mask, (const uint8_t *)&nic_mask, sizeof(struct rte_flow_item_meta), -@@ -1522,6 +1528,11 @@ flow_dv_validate_item_tag(struct rte_eth_dev *dev, +@@ -1441,6 +1447,11 @@ flow_dv_validate_item_tag(struct rte_eth_dev *dev, "data cannot be empty"); if (!mask) mask = &rte_flow_item_tag_mask;