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 473CEA0C47 for ; Tue, 10 Aug 2021 17:43:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F26C4114F; Tue, 10 Aug 2021 17:43:59 +0200 (CEST) Received: from smtp-relay-canonical-1.canonical.com (smtp-relay-canonical-1.canonical.com [185.125.188.121]) by mails.dpdk.org (Postfix) with ESMTP id 195594114F for ; Tue, 10 Aug 2021 17:43:58 +0200 (CEST) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPS id F39483F338 for ; Tue, 10 Aug 2021 15:43:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1628610237; bh=6eRlICc7hZ8FPmYdbqmcI1+MBC4NrMLn0wDGE0Ask7w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dvakBJLrHBusS+JbnF7vsXwVaUP6l/lNuVFQPe+fRzvGUJHlk88S/ZYf2GfT3ZVL7 Mxq2iQjDTRZIs+RHd9JTjJg5rOgQ48vXqGbZFaDMa0smGsnXaPS5iLOwBLA5uUzVGz /UJDTmX9WZrxEcroAvmutilxNPSg+fuclyqqFceEx3LaaScUQWzlKgzpUPmA3rkseF nA9zwChbd0luVf1aqHSuA3EDuDsIJsr8BfApQ1EihQ/OVLIFXWMyytgpMOzyvXeROu BNhylJYZ+R6w2cL2s+M3X3IoPJhDibVFNRqQtM2QSKeEK7kEJjVkscv1Nsg4IW3ZEe 9uuz29UZooGWg== Received: by mail-ed1-f71.google.com with SMTP id b16-20020a0564022790b02903be6352006cso3751211ede.15 for ; Tue, 10 Aug 2021 08:43:57 -0700 (PDT) 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=6eRlICc7hZ8FPmYdbqmcI1+MBC4NrMLn0wDGE0Ask7w=; b=gK9s14J49ZrZw2FOw/3A208gQyJqiabKzimxIRjH8uwJCOcT2zGiuWjZRI5TbFdBV+ tk031YRmULHbi8AnWLJlD5xaN7zlPC/+dMEvKrfMnqPW4L6PofftiP0vIUDVg7ae4i4k T/ueBphoWCckZeOf48l8e7W2NELQvTB5lkijx3C6MZ/PiyDlhk64qCEMIZSy/BXio2X8 +kMBvezuOdiiRXU6YeCYrH9qOvLFLhj8unmwraZSTovyWGTUaJDF5qiQqfttNLbZT9Dq liG5VjNEXK2GXyCY0CbP/2dwFj1gLqFmdAZOGzMnmNtShRiO/JL7DRwP5euJSUJjBdXg T1tw== X-Gm-Message-State: AOAM530kHC2xIKilDXR/9zbDrN/ME92yq1/u1/CV9O1IWOBbf4B+4E/O A6bfFEwpLqWC2XN1ezEe7bAIlOVzsqKPMKhZoG3FAE+NW20HrfT3R38TVPA1qyU2OU9KIiS+j3b dYyX9T5xzpGAob2W0SyUWZWCd X-Received: by 2002:a17:906:c443:: with SMTP id ck3mr27757396ejb.195.1628610237497; Tue, 10 Aug 2021 08:43:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwgLLAu2HkmljHA3Z5tdUEss0NEcfRAxbsn99SF2+bkltzN55UuDzsL4s6T5tHAwlzcGZpXvw== X-Received: by 2002:a17:906:c443:: with SMTP id ck3mr27757374ejb.195.1628610237269; Tue, 10 Aug 2021 08:43:57 -0700 (PDT) Received: from Keschdeichel.fritz.box ([2001:67c:1560:8007::aac:c4ad]) by smtp.gmail.com with ESMTPSA id s18sm6979936ejc.52.2021.08.10.08.43.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Aug 2021 08:43:56 -0700 (PDT) From: christian.ehrhardt@canonical.com To: Dana Vardi Cc: Liron Himi , dpdk stable Date: Tue, 10 Aug 2021 17:39:48 +0200 Message-Id: <20210810154022.749358-68-christian.ehrhardt@canonical.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210810154022.749358-1-christian.ehrhardt@canonical.com> References: <20210810154022.749358-1-christian.ehrhardt@canonical.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/mvpp2: fix configured state dependency' has been queued to stable release 19.11.10 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 19.11.10 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 08/12/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/cpaelzer/dpdk-stable-queue This queued commit can be viewed at: https://github.com/cpaelzer/dpdk-stable-queue/commit/27637e4d84284cb55aa7834b5cfa42fdc29e0253 Thanks. Christian Ehrhardt --- >From 27637e4d84284cb55aa7834b5cfa42fdc29e0253 Mon Sep 17 00:00:00 2001 From: Dana Vardi Date: Sun, 11 Jul 2021 16:12:49 +0300 Subject: [PATCH] net/mvpp2: fix configured state dependency [ upstream commit e622c1a88e3507dc6d2c9dd6ec555905d1b5baf1 ] Need to set configure flag to allow create and commit mrvl tm hierarchy tree. tm configuration depends on parameters that are being set in port configure stage, e.g. nb_tx_queues. This also aligned with the tm api description. Fixes: 429c394417 ("net/mvpp2: support traffic manager") Signed-off-by: Dana Vardi Reviewed-by: Liron Himi --- drivers/net/mvpp2/mrvl_ethdev.c | 12 ++++-- drivers/net/mvpp2/mrvl_ethdev.h | 2 + drivers/net/mvpp2/mrvl_tm.c | 65 +++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 3 deletions(-) diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c index 33386c44b8..7571e16343 100644 --- a/drivers/net/mvpp2/mrvl_ethdev.c +++ b/drivers/net/mvpp2/mrvl_ethdev.c @@ -400,12 +400,18 @@ mrvl_dev_configure(struct rte_eth_dev *dev) dev->data->dev_conf.rxmode.mq_mode == ETH_MQ_RX_RSS) { MRVL_LOG(WARNING, "Disabling hash for 1 rx queue"); priv->ppio_params.inqs_params.hash_type = PP2_PPIO_HASH_T_NONE; - + priv->configured = 1; return 0; } - return mrvl_configure_rss(priv, - &dev->data->dev_conf.rx_adv_conf.rss_conf); + ret = mrvl_configure_rss(priv, + &dev->data->dev_conf.rx_adv_conf.rss_conf); + if (ret < 0) + return ret; + + priv->configured = 1; + + return 0; } /** diff --git a/drivers/net/mvpp2/mrvl_ethdev.h b/drivers/net/mvpp2/mrvl_ethdev.h index eee5182ce8..8566873199 100644 --- a/drivers/net/mvpp2/mrvl_ethdev.h +++ b/drivers/net/mvpp2/mrvl_ethdev.h @@ -208,6 +208,8 @@ struct mrvl_priv { LIST_HEAD(shaper_profiles, mrvl_tm_shaper_profile) shaper_profiles; LIST_HEAD(nodes, mrvl_tm_node) nodes; uint64_t rate_max; + + uint8_t configured; /** indicates if device has been configured */ }; /** Flow operations forward declaration. */ diff --git a/drivers/net/mvpp2/mrvl_tm.c b/drivers/net/mvpp2/mrvl_tm.c index 7fcd37229c..3e3b0c1f9b 100644 --- a/drivers/net/mvpp2/mrvl_tm.c +++ b/drivers/net/mvpp2/mrvl_tm.c @@ -146,6 +146,11 @@ mrvl_node_type_get(struct rte_eth_dev *dev, uint32_t node_id, int *is_leaf, struct mrvl_priv *priv = dev->data->dev_private; struct mrvl_tm_node *node; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (!is_leaf) return -rte_tm_error_set(error, EINVAL, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -177,6 +182,11 @@ mrvl_capabilities_get(struct rte_eth_dev *dev, { struct mrvl_priv *priv = dev->data->dev_private; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (!cap) return -rte_tm_error_set(error, EINVAL, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -224,6 +234,11 @@ mrvl_level_capabilities_get(struct rte_eth_dev *dev, { struct mrvl_priv *priv = dev->data->dev_private; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (!cap) return -rte_tm_error_set(error, EINVAL, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -284,6 +299,11 @@ mrvl_node_capabilities_get(struct rte_eth_dev *dev, uint32_t node_id, struct mrvl_priv *priv = dev->data->dev_private; struct mrvl_tm_node *node; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (!cap) return -rte_tm_error_set(error, EINVAL, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -352,6 +372,11 @@ mrvl_shaper_profile_add(struct rte_eth_dev *dev, uint32_t shaper_profile_id, struct mrvl_priv *priv = dev->data->dev_private; struct mrvl_tm_shaper_profile *profile; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (!params) return -rte_tm_error_set(error, EINVAL, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -420,6 +445,11 @@ mrvl_shaper_profile_delete(struct rte_eth_dev *dev, uint32_t shaper_profile_id, struct mrvl_priv *priv = dev->data->dev_private; struct mrvl_tm_shaper_profile *profile; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + profile = mrvl_shaper_profile_from_id(priv, shaper_profile_id); if (!profile) return -rte_tm_error_set(error, ENODEV, @@ -566,6 +596,11 @@ mrvl_node_add(struct rte_eth_dev *dev, uint32_t node_id, struct mrvl_tm_node *node, *parent = NULL; int ret; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (priv->ppio) return -rte_tm_error_set(error, EPERM, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -651,6 +686,11 @@ mrvl_node_delete(struct rte_eth_dev *dev, uint32_t node_id, struct mrvl_priv *priv = dev->data->dev_private; struct mrvl_tm_node *node; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (priv->ppio) { return -rte_tm_error_set(error, EPERM, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -715,6 +755,11 @@ mrvl_node_suspend(struct rte_eth_dev *dev, uint32_t node_id, struct mrvl_tm_node *node, *tmp; int ret; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + node = mrvl_node_from_id(priv, node_id); if (!node) return -rte_tm_error_set(error, ENODEV, @@ -756,6 +801,11 @@ mrvl_node_resume(struct rte_eth_dev *dev, uint32_t node_id, struct mrvl_tm_node *node; int ret; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + node = mrvl_node_from_id(priv, node_id); if (!node) return -rte_tm_error_set(error, ENODEV, @@ -792,6 +842,11 @@ mrvl_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail, struct mrvl_tm_node *node; int ret; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (priv->ppio) { ret = -rte_tm_error_set(error, EPERM, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -898,6 +953,11 @@ mrvl_node_stats_read(struct rte_eth_dev *dev, uint32_t node_id, struct mrvl_tm_node *node; int ret; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + if (!priv->ppio) { return -rte_tm_error_set(error, EPERM, RTE_TM_ERROR_TYPE_UNSPECIFIED, @@ -967,6 +1027,11 @@ mrvl_node_stats_update(struct rte_eth_dev *dev, uint32_t node_id, struct mrvl_priv *priv = dev->data->dev_private; struct mrvl_tm_node *node; + if (!priv->configured) + return -rte_tm_error_set(error, ENODEV, + RTE_TM_ERROR_TYPE_UNSPECIFIED, + NULL, "Port didn't configured\n"); + node = mrvl_node_from_id(priv, node_id); if (!node) return -rte_tm_error_set(error, ENODEV, -- 2.32.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-08-10 15:11:15.648382609 +0200 +++ 0068-net-mvpp2-fix-configured-state-dependency.patch 2021-08-10 15:11:13.066638446 +0200 @@ -1 +1 @@ -From e622c1a88e3507dc6d2c9dd6ec555905d1b5baf1 Mon Sep 17 00:00:00 2001 +From 27637e4d84284cb55aa7834b5cfa42fdc29e0253 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit e622c1a88e3507dc6d2c9dd6ec555905d1b5baf1 ] + @@ -12 +13,0 @@ -Cc: stable@dpdk.org @@ -17 +18 @@ - drivers/net/mvpp2/mrvl_ethdev.c | 10 ++++- + drivers/net/mvpp2/mrvl_ethdev.c | 12 ++++-- @@ -20 +21 @@ - 3 files changed, 75 insertions(+), 2 deletions(-) + 3 files changed, 76 insertions(+), 3 deletions(-) @@ -23 +24 @@ -index 63d348e279..1802695a0e 100644 +index 33386c44b8..7571e16343 100644 @@ -26 +27 @@ -@@ -533,12 +533,18 @@ mrvl_dev_configure(struct rte_eth_dev *dev) +@@ -400,12 +400,18 @@ mrvl_dev_configure(struct rte_eth_dev *dev) @@ -35,0 +37 @@ +- &dev->data->dev_conf.rx_adv_conf.rss_conf); @@ -37 +39 @@ - &dev->data->dev_conf.rx_adv_conf.rss_conf); ++ &dev->data->dev_conf.rx_adv_conf.rss_conf); @@ -48 +50 @@ -index fda239a53c..426cf33548 100644 +index eee5182ce8..8566873199 100644 @@ -51,4 +53,4 @@ -@@ -186,6 +186,8 @@ struct mrvl_priv { - - uint8_t forward_bad_frames; - uint32_t fill_bpool_buffs; +@@ -208,6 +208,8 @@ struct mrvl_priv { + LIST_HEAD(shaper_profiles, mrvl_tm_shaper_profile) shaper_profiles; + LIST_HEAD(nodes, mrvl_tm_node) nodes; + uint64_t rate_max; @@ -61 +63 @@ -index 7e3c46f956..9fac80b867 100644 +index 7fcd37229c..3e3b0c1f9b 100644 @@ -88 +90 @@ -@@ -228,6 +238,11 @@ mrvl_level_capabilities_get(struct rte_eth_dev *dev, +@@ -224,6 +234,11 @@ mrvl_level_capabilities_get(struct rte_eth_dev *dev, @@ -100 +102 @@ -@@ -294,6 +309,11 @@ mrvl_node_capabilities_get(struct rte_eth_dev *dev, uint32_t node_id, +@@ -284,6 +299,11 @@ mrvl_node_capabilities_get(struct rte_eth_dev *dev, uint32_t node_id, @@ -112 +114 @@ -@@ -366,6 +386,11 @@ mrvl_shaper_profile_add(struct rte_eth_dev *dev, uint32_t shaper_profile_id, +@@ -352,6 +372,11 @@ mrvl_shaper_profile_add(struct rte_eth_dev *dev, uint32_t shaper_profile_id, @@ -124 +126 @@ -@@ -434,6 +459,11 @@ mrvl_shaper_profile_delete(struct rte_eth_dev *dev, uint32_t shaper_profile_id, +@@ -420,6 +445,11 @@ mrvl_shaper_profile_delete(struct rte_eth_dev *dev, uint32_t shaper_profile_id, @@ -136 +138 @@ -@@ -580,6 +610,11 @@ mrvl_node_add(struct rte_eth_dev *dev, uint32_t node_id, +@@ -566,6 +596,11 @@ mrvl_node_add(struct rte_eth_dev *dev, uint32_t node_id, @@ -148 +150 @@ -@@ -665,6 +700,11 @@ mrvl_node_delete(struct rte_eth_dev *dev, uint32_t node_id, +@@ -651,6 +686,11 @@ mrvl_node_delete(struct rte_eth_dev *dev, uint32_t node_id, @@ -160 +162 @@ -@@ -729,6 +769,11 @@ mrvl_node_suspend(struct rte_eth_dev *dev, uint32_t node_id, +@@ -715,6 +755,11 @@ mrvl_node_suspend(struct rte_eth_dev *dev, uint32_t node_id, @@ -172 +174 @@ -@@ -770,6 +815,11 @@ mrvl_node_resume(struct rte_eth_dev *dev, uint32_t node_id, +@@ -756,6 +801,11 @@ mrvl_node_resume(struct rte_eth_dev *dev, uint32_t node_id, @@ -184 +186 @@ -@@ -806,6 +856,11 @@ mrvl_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail, +@@ -792,6 +842,11 @@ mrvl_hierarchy_commit(struct rte_eth_dev *dev, int clear_on_fail, @@ -196 +198 @@ -@@ -912,6 +967,11 @@ mrvl_node_stats_read(struct rte_eth_dev *dev, uint32_t node_id, +@@ -898,6 +953,11 @@ mrvl_node_stats_read(struct rte_eth_dev *dev, uint32_t node_id, @@ -208 +210 @@ -@@ -981,6 +1041,11 @@ mrvl_node_stats_update(struct rte_eth_dev *dev, uint32_t node_id, +@@ -967,6 +1027,11 @@ mrvl_node_stats_update(struct rte_eth_dev *dev, uint32_t node_id,