From patchwork Sun Jul 11 13:12:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: danat@marvell.com X-Patchwork-Id: 95648 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0C36AA0C45; Sun, 11 Jul 2021 15:12:58 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E0D4B4067E; Sun, 11 Jul 2021 15:12:57 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id DCBB940040 for ; Sun, 11 Jul 2021 15:12:55 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16BDCfFj029404; Sun, 11 Jul 2021 06:12:55 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=pfpt0220; bh=fgbrQrTJTK/9bNmfz6MW1RHl/xZfpcnh8eTDvwBBNHk=; b=H0ds2x6Euvzp+JO28+OHM3fzmluWCOGcXgnOBdzNl1NzW1iCq7ASWF02e8Ioiodl0cuG 0HEd55ojs0Kp8c3ournP2drKJg3Vm99sS7HorcXzFIDdCFcADLNFUSbUNnTvqhYARZFu Ay3jraD/Rnabb1lCwbtIvDaI1+v2JxefhGvnF3WcE5JHH5fTO+905gqj9sbb6XnXdst3 hNnlheN0KKZRNUE0ov6m9k1w2KVmpf+Irupf8qMxLz9simHVvT2X/5p4163EWE9j2g50 c3v2uskgpOg8u1SLkDVLX+tpOrG3LXh53kBUgAnQZ/XEcEkzb6yV/hbo2ez0jblRyZPI KQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com with ESMTP id 39q8wqu0gp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Sun, 11 Jul 2021 06:12:55 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Sun, 11 Jul 2021 06:12:53 -0700 Received: from jupiter077.il.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Sun, 11 Jul 2021 06:12:52 -0700 From: To: CC: , , , Date: Sun, 11 Jul 2021 16:12:49 +0300 Message-ID: <20210711131249.11940-1-danat@marvell.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: GJT_v7C2u1dgz0Dt_hKmnXmQrZzA1jaB X-Proofpoint-GUID: GJT_v7C2u1dgz0Dt_hKmnXmQrZzA1jaB X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.790 definitions=2021-07-11_08:2021-07-09, 2021-07-11 signatures=0 Subject: [dpdk-dev] [PATCH] net/mvpp2: config and commit tm after port configured X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Dana Vardi 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") Cc: tdu@semihalf.com Signed-off-by: Dana Vardi Reviewed-by: Liron Himi --- drivers/net/mvpp2/mrvl_ethdev.c | 10 ++++- drivers/net/mvpp2/mrvl_ethdev.h | 2 + drivers/net/mvpp2/mrvl_tm.c | 65 +++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c index 63d348e279..1802695a0e 100644 --- a/drivers/net/mvpp2/mrvl_ethdev.c +++ b/drivers/net/mvpp2/mrvl_ethdev.c @@ -533,12 +533,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, + 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 fda239a53c..426cf33548 100644 --- a/drivers/net/mvpp2/mrvl_ethdev.h +++ b/drivers/net/mvpp2/mrvl_ethdev.h @@ -186,6 +186,8 @@ struct mrvl_priv { uint8_t forward_bad_frames; uint32_t fill_bpool_buffs; + + 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 4d75f8e915..efab7852e5 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, @@ -228,6 +238,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, @@ -294,6 +309,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, @@ -366,6 +386,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, @@ -434,6 +459,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, @@ -580,6 +610,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, @@ -665,6 +700,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, @@ -729,6 +769,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, @@ -770,6 +815,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, @@ -806,6 +856,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, @@ -912,6 +967,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, @@ -981,6 +1041,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,