From patchwork Thu Jun 23 02:26:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jin Liu X-Patchwork-Id: 113291 X-Patchwork-Delegate: ferruh.yigit@amd.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 28F75A0545; Thu, 23 Jun 2022 04:28:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CB52442B76; Thu, 23 Jun 2022 04:27:26 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2103.outbound.protection.outlook.com [40.107.94.103]) by mails.dpdk.org (Postfix) with ESMTP id 9959742B75 for ; Thu, 23 Jun 2022 04:27:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kGDlRKWAajsA6e/FcwmLAFrm6JbzfPThNqkL7EvnDUmYKcyq9RZ4drRKxAb+BL6DOwWuMx68Y+vKDigFbFgLHt729QrqhuutPLATn3bBqw4mVN9X/B8tA6YVQ5cQSpyARVbqdGzOETD/pnQ3mTyqEo6LmLyk8/XjCq2bdV0BAunHz1FaMXZfWQGCgK/hcIYcuPNQi5GxMHCDQ0DUlwn/I38rVR/a3d55LwwbQp0fhrWb0e2YTMQR1HWZrLorc3WmNBw8GVlMhJRuq5wDtc/9Xxg7iRQB7Vr6+Wqz4mkeTv/Kjc1vFP/6lGkjFjyvBCNLlP/gVw4j96cpBttvP/2bgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jFZzr2930Vv2c4QQaVDS7/EwLKkvku48EhdYPEyXKfo=; b=BU9w92vlf2Iq/ZqqsU8WIJMW55HfXxBuSGsh+eFA9JDYILsZyl3YuHx7+87AWvtaPasHCzWBvnW0pbf74ZaJXU0BKj1idTLBY87xD7uSjykSTJGMsPcsF/CFy3/SjP72pE4bv6Lv0jO4SbXvPbafbXE5t7L00y+b6MQc73umXAExR81Pagil5Ekf1xCMEfYZuzEcDbSA3KCjmo/ddYxf/iDq1Js+o9464glXkG3mUbvS4e4895gTWqTUf0RMvboh/nTolRVudjogmtDwd736m1XBK0rkQtBqlSQFm/MnADwVNIwvIISoJp9Gz+afsI1IVErVLVOxGt5CG9hcRGYOig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jFZzr2930Vv2c4QQaVDS7/EwLKkvku48EhdYPEyXKfo=; b=cOnX13PaQY3an+dM6Wshe3Z/sOYJrXf7Uhxmz8MY/Fmmp08sUqjnhy+ItmsHjuRN/s61u5I2Qu7p7sGRgPfXsm326lATkbkSq/utrD7JjZ2FFLHzXwr1ntp4+kZ7ByhZZiEw+POx+hQBAFamvYkndgRGJtHBD47LjL90IBN89uE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from DM6PR13MB3004.namprd13.prod.outlook.com (2603:10b6:5:191::21) by MN2PR13MB3535.namprd13.prod.outlook.com (2603:10b6:208:169::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Thu, 23 Jun 2022 02:27:18 +0000 Received: from DM6PR13MB3004.namprd13.prod.outlook.com ([fe80::ac31:a36a:cc15:cd35]) by DM6PR13MB3004.namprd13.prod.outlook.com ([fe80::ac31:a36a:cc15:cd35%7]) with mapi id 15.20.5373.015; Thu, 23 Jun 2022 02:27:18 +0000 From: Jin Liu To: dev@dpdk.org Cc: niklas.soderlund@corigine.com, Jin Liu , Diana Wang , Peng Zhang , Chaoyong He Subject: [PATCH v4 10/13] net/nfp: add queue stop and close helper function Date: Thu, 23 Jun 2022 04:26:12 +0200 Message-Id: <20220623022615.3628093-11-jin.liu@corigine.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220623022615.3628093-1-jin.liu@corigine.com> References: <20220617093444.2004000-1-jin.liu@corigine.com> <20220623022615.3628093-1-jin.liu@corigine.com> X-ClientProxiedBy: LO4P265CA0222.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:33a::10) To DM6PR13MB3004.namprd13.prod.outlook.com (2603:10b6:5:191::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 741a10a9-d6bc-4a3f-c628-08da54bfe515 X-MS-TrafficTypeDiagnostic: MN2PR13MB3535:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mGGlD9EfQtpueRQVTDCJOvTZ6dVJOq4k4zZKwG5PG96BkpTaIL/q+Hn0oEdR5MTGOIZmXJMZCP+jPJNMsH2p9XDM8kBxpcZEpOZ9pENUTfo9dml1BySNWeJG151xfRVjftORcP5xOoF/IN8lfz1ajuTPU1Bap2Re+LiahixXJnnBP3nkLOw40e2pB/FayPW5yL5zGVn7zPkjn86kyxxx5FoyCQjikKUMDLp/eXz2bEaapBo+Ib2QtAObXQjlz0iuIWMzX0g7IB4Mtf4NhmdwJV5OYbpnpThgNsi+eYU5EJnBVT56VdpblQlnG7A0JkqJBm/uUlpinKmAE4TW86i8mPdp8T0VJeDXZu8bMaPHL3cZVUkV0FaIZi6oudFTjuWTYuiuipUcejuzFc/ZqTC/5qmSFHyez5PoXOT1H2JdfPzcjQw6WCwYj/qdrtElawapzcV7N6Zm85+MEkumZ8Bp5KBucjX8KGdWyDa10spFBLAcW5HO0/22Xs80dB+E66GbtD/9Lyu8nqibFEV7YNEWGvZUjLdolESl8O9ubpCcww+KVs53yiMVOxCBIcS+p/eS+w8Rkf2RPcKqd4BgEP/84t+pk6P96VUFP8DdUBvEWU19qM+SGdSEyZa2xeYkiBWUDmPmat6xFnL5C6WTW1D3NAwaV1E9OXjjsEcEG0IEezdH0gQY09D3ytYkzxzrJ10vBY4Aba9EgYNV16S3O5gFyFPk4eg81PWsnDYy4KmCpxTB+Pun9HG6xOuSKBnS+a8hjP7htvcI2GfT7LFhE7oLrQaLhAyhzf1oyLLgK8QpBZ5Y9C2eBXp3z7idAqJM8gQ8 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR13MB3004.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(376002)(366004)(346002)(136003)(396003)(39830400003)(6666004)(107886003)(1076003)(38100700002)(38350700002)(6486002)(36756003)(66574015)(8936002)(54906003)(2616005)(6916009)(5660300002)(316002)(66556008)(52116002)(6506007)(186003)(66946007)(8676002)(4326008)(66476007)(41300700001)(86362001)(6512007)(26005)(83380400001)(478600001)(2906002)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?5hGxWkrOKksLJUQSg4ncJ4i0getL?= =?utf-8?q?QB4AKTpGht/Z8floQMStlyvDx/Te3ghYErwLjfKutZTdUa7MM6mG4eTEjkjo65fb1?= =?utf-8?q?YNWzWDx48KuHhZK5ZHLOsRoS3MrGLeYu+pJa2YoVUkO0wnSRLCWdqMQNJTBKfzrYJ?= =?utf-8?q?04O7ydsY3399JWArLq7X0bhPbofjUEKq3VwNfHoXnPqtL+xsHgrWhMmNc5oJIfUNz?= =?utf-8?q?QlV/+haJZ5Jp09u7VaRYCGMcu6pCxaaA0uP52hPk2dZ0uO9XJInGrCsXh4dDL4Vnb?= =?utf-8?q?CFe83gu+NSsvYqpAW4Zu091eCCYE6EadGNDHS3aBzYcFbPwbhOInMWupfBjN1GYbg?= =?utf-8?q?pH5k035V/QUZcXnTN+EywY5jCMa6FQq/5dqY9YKnYwZeOkRAQwWKSMnfpUe6H5Nu7?= =?utf-8?q?uTIzapw74kJ/qfoSnSaxFRtzo1KERpW10mvMGDVMejgSj6sjj3jFtf91FpLN7bPBC?= =?utf-8?q?eyeUtTGGjHszd154vPmL8oQOUMR+G01uRrPNKOxNMdff2BShyH6MwhcxaQ+ystP4C?= =?utf-8?q?AQOEQUb0ls22WMzbWd2mwCPv5CsztOOfr4OAbUqWdZhPbV/X5Yip0CsdQNVqDto+F?= =?utf-8?q?+PWPTTjzUV2zhjWPAoHEcpEuknxPcKZ4TPnnwRpEk9W2xFxN/n4RKw720oYY0D8mR?= =?utf-8?q?ZD57hSmR4NgJUIIRVUP8Nz0OAPbnH1LXzKpwFyfw52e52EAOJZ0n9UPD4i3RHYw6S?= =?utf-8?q?XkubiGqEBVgpG8FXhUorjRMwiSCVC58rYajL6Jrao0NBOu1aBPmzhz2xx6Jem9U3v?= =?utf-8?q?BSHrtzslk6cYlU+yxSNUS7ALicPJdZB/ikZifr0XbIO2zun9dyvMhVF/QrFWKcE01?= =?utf-8?q?IzifSu/TIj8k0RYzcq4ZA3GfAp35p8SAybBVE6Q6KG1yEknJS6sywra3g8RH9BJ7n?= =?utf-8?q?QNTpsaG3lye+7T1Lw8L8l9ziCkyr5UAkug7JdjFPU68bSSUfpT6MPiXvYF34uMp7Y?= =?utf-8?q?4zx9xGd4pFGtG++pfGdDxCm0WNUgY54ao868SIc/UFu4lFh9lmAZ9lO4ZovdyA4Za?= =?utf-8?q?w+oqwIIKTbsiyEiX9N32mv5t3mhKVodjnI6CNTvQjpMHwB9+ubzdz+Sm3lCis3vpT?= =?utf-8?q?M4P9gHOZLXZ66DUoz2jxTRXAPJNydCw9vahS0qwAZKrncVPTPkHcokbGpZgY1UYxN?= =?utf-8?q?qeAIwTCYYIwZICMzZc0tbv0y/ErwCyD6XXdQkNFC0XcJ8SfwAv0CcBO8dcTD5ozaL?= =?utf-8?q?4G2FrI48R82ubFEEglvRjWw/u4Saa8eUgm+pQYSQfTGsWA/wj1rJpZNQAJ+hYeQpV?= =?utf-8?q?uIWWjlsq59W3gLEcYwofCUTTB7C7BmGPYFgEausFRiMlDy4akvQ0+CuniIeVxucgE?= =?utf-8?q?inFyKF171s+ME4lozXiaaam3p7nwtM/hMLNao4+skOfxWc1WZXQolQGNRyQRyRJCD?= =?utf-8?q?OZ+EUqj52kPsMtEKiGu3oecWKTei8JMtp99lIRqPjfZiBYapwaHldGuANMwpj62VK?= =?utf-8?q?DG1W6aGvU+NwJ9sOsZYlCwJ0pOCpl4WTV8tTGqLNiekx8PO54DX4DvdwuSOOP884u?= =?utf-8?q?u2pt7o2T1GVO?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 741a10a9-d6bc-4a3f-c628-08da54bfe515 X-MS-Exchange-CrossTenant-AuthSource: DM6PR13MB3004.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 02:27:18.8054 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VhY5pgg2JxIIP3RTtHLekqts7MRqe6RkG43SA21mOplkBpbF7886n3KXADI17mojXpEUdP3khScJhEI/N1xbRg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB3535 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 This commit does not introduce new features, just integrate some common logic into helper functions to reduce the same logic and increase code reuse, include queue stop and queue close logic, will be used when NFP net stop and close. queue stop: reset queue queue close: reset and release queue Modify NFP net stop and close function, use helper function to stop and close queue instead of before logic. Signed-off-by: Jin Liu Signed-off-by: Diana Wang Signed-off-by: Peng Zhang Signed-off-by: Chaoyong He Signed-off-by: Niklas Söderlund --- drivers/net/nfp/nfp_common.c | 50 +++++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_common.h | 4 +++ drivers/net/nfp/nfp_ethdev.c | 27 +++--------------- drivers/net/nfp/nfp_ethdev_vf.c | 29 +++---------------- 4 files changed, 62 insertions(+), 48 deletions(-) diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c index 9903a1bd5a..755c5ec4d9 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_common.c @@ -1320,6 +1320,56 @@ nfp_net_rss_config_default(struct rte_eth_dev *dev) return ret; } +void +nfp_net_stop_rx_queue(struct rte_eth_dev *dev) +{ + uint16_t i; + struct nfp_net_rxq *this_rx_q; + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + this_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i]; + nfp_net_reset_rx_queue(this_rx_q); + } +} + +void +nfp_net_close_rx_queue(struct rte_eth_dev *dev) +{ + uint16_t i; + struct nfp_net_rxq *this_rx_q; + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + this_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i]; + nfp_net_reset_rx_queue(this_rx_q); + nfp_net_rx_queue_release(dev, i); + } +} + +void +nfp_net_stop_tx_queue(struct rte_eth_dev *dev) +{ + uint16_t i; + struct nfp_net_txq *this_tx_q; + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + this_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i]; + nfp_net_reset_tx_queue(this_tx_q); + } +} + +void +nfp_net_close_tx_queue(struct rte_eth_dev *dev) +{ + uint16_t i; + struct nfp_net_txq *this_tx_q; + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + this_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i]; + nfp_net_reset_tx_queue(this_tx_q); + nfp_net_tx_queue_release(dev, i); + } +} + RTE_LOG_REGISTER_SUFFIX(nfp_logtype_init, init, NOTICE); RTE_LOG_REGISTER_SUFFIX(nfp_logtype_driver, driver, NOTICE); /* diff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_common.h index 19e96414e3..6d917e4b4a 100644 --- a/drivers/net/nfp/nfp_common.h +++ b/drivers/net/nfp/nfp_common.h @@ -413,6 +413,10 @@ int nfp_net_rss_hash_update(struct rte_eth_dev *dev, int nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, struct rte_eth_rss_conf *rss_conf); int nfp_net_rss_config_default(struct rte_eth_dev *dev); +void nfp_net_stop_rx_queue(struct rte_eth_dev *dev); +void nfp_net_close_rx_queue(struct rte_eth_dev *dev); +void nfp_net_stop_tx_queue(struct rte_eth_dev *dev); +void nfp_net_close_tx_queue(struct rte_eth_dev *dev); #define NFP_NET_DEV_PRIVATE_TO_HW(adapter)\ (&((struct nfp_net_adapter *)adapter)->hw) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 0d650efd27..e8a8368d0f 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -181,10 +181,7 @@ nfp_net_start(struct rte_eth_dev *dev) static int nfp_net_stop(struct rte_eth_dev *dev) { - int i; struct nfp_net_hw *hw; - struct nfp_net_txq *this_tx_q; - struct nfp_net_rxq *this_rx_q; PMD_INIT_LOG(DEBUG, "Stop"); @@ -193,15 +190,9 @@ nfp_net_stop(struct rte_eth_dev *dev) nfp_net_disable_queues(dev); /* Clear queues */ - for (i = 0; i < dev->data->nb_tx_queues; i++) { - this_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i]; - nfp_net_reset_tx_queue(this_tx_q); - } + nfp_net_stop_tx_queue(dev); - for (i = 0; i < dev->data->nb_rx_queues; i++) { - this_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i]; - nfp_net_reset_rx_queue(this_rx_q); - } + nfp_net_stop_rx_queue(dev); if (rte_eal_process_type() == RTE_PROC_PRIMARY) /* Configure the physical port down */ @@ -256,8 +247,6 @@ nfp_net_close(struct rte_eth_dev *dev) struct nfp_net_hw *hw; struct rte_pci_device *pci_dev; struct nfp_pf_dev *pf_dev; - struct nfp_net_txq *this_tx_q; - struct nfp_net_rxq *this_rx_q; int i; if (rte_eal_process_type() != RTE_PROC_PRIMARY) @@ -277,17 +266,9 @@ nfp_net_close(struct rte_eth_dev *dev) nfp_net_disable_queues(dev); /* Clear queues */ - for (i = 0; i < dev->data->nb_tx_queues; i++) { - this_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i]; - nfp_net_reset_tx_queue(this_tx_q); - nfp_net_tx_queue_release(dev, i); - } + nfp_net_close_tx_queue(dev); - for (i = 0; i < dev->data->nb_rx_queues; i++) { - this_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i]; - nfp_net_reset_rx_queue(this_rx_q); - nfp_net_rx_queue_release(dev, i); - } + nfp_net_close_rx_queue(dev); /* Cancel possible impending LSC work here before releasing the port*/ rte_eal_alarm_cancel(nfp_net_dev_interrupt_delayed_handler, diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index 2342f44523..56428814b7 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -145,24 +145,14 @@ nfp_netvf_start(struct rte_eth_dev *dev) static int nfp_netvf_stop(struct rte_eth_dev *dev) { - struct nfp_net_txq *this_tx_q; - struct nfp_net_rxq *this_rx_q; - int i; - PMD_INIT_LOG(DEBUG, "Stop"); nfp_net_disable_queues(dev); /* Clear queues */ - for (i = 0; i < dev->data->nb_tx_queues; i++) { - this_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i]; - nfp_net_reset_tx_queue(this_tx_q); - } + nfp_net_stop_tx_queue(dev); - for (i = 0; i < dev->data->nb_rx_queues; i++) { - this_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i]; - nfp_net_reset_rx_queue(this_rx_q); - } + nfp_net_stop_rx_queue(dev); return 0; } @@ -185,9 +175,6 @@ static int nfp_netvf_close(struct rte_eth_dev *dev) { struct rte_pci_device *pci_dev; - struct nfp_net_txq *this_tx_q; - struct nfp_net_rxq *this_rx_q; - int i; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -204,17 +191,9 @@ nfp_netvf_close(struct rte_eth_dev *dev) nfp_net_disable_queues(dev); /* Clear queues */ - for (i = 0; i < dev->data->nb_tx_queues; i++) { - this_tx_q = (struct nfp_net_txq *)dev->data->tx_queues[i]; - nfp_net_reset_tx_queue(this_tx_q); - nfp_net_tx_queue_release(dev, i); - } + nfp_net_close_tx_queue(dev); - for (i = 0; i < dev->data->nb_rx_queues; i++) { - this_rx_q = (struct nfp_net_rxq *)dev->data->rx_queues[i]; - nfp_net_reset_rx_queue(this_rx_q); - nfp_net_rx_queue_release(dev, i); - } + nfp_net_close_rx_queue(dev); rte_intr_disable(pci_dev->intr_handle);