[dpdk-stable] patch 'net/mvpp2: fix configured state dependency' has been queued to stable release 19.11.10

christian.ehrhardt at canonical.com christian.ehrhardt at canonical.com
Tue Aug 10 17:39:48 CEST 2021


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 <christian.ehrhardt at canonical.com>

---
>From 27637e4d84284cb55aa7834b5cfa42fdc29e0253 Mon Sep 17 00:00:00 2001
From: Dana Vardi <danat at marvell.com>
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 <danat at marvell.com>
Reviewed-by: Liron Himi <lironh at marvell.com>
---
 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 at 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,


More information about the stable mailing list