From patchwork Wed Oct 14 13:28:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80730 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D8B07A04B7; Wed, 14 Oct 2020 15:31:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 177A41DE1C; Wed, 14 Oct 2020 15:29:28 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [67.231.154.164]) by dpdk.org (Postfix) with ESMTP id 151CC1DDC4 for ; Wed, 14 Oct 2020 15:29:19 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.110.50.150]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id AA32C200CC; Wed, 14 Oct 2020 13:29:17 +0000 (UTC) Received: from us4-mdac16-7.at1.mdlocal (unknown [10.110.49.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A854E800A7; Wed, 14 Oct 2020 13:29:17 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.110.49.103]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 1A890100079; Wed, 14 Oct 2020 13:29:17 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id BDE4698007B; Wed, 14 Oct 2020 13:29:15 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 14 Oct 2020 14:29:12 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 14 Oct 2020 14:29:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 09EDTAfq009116; Wed, 14 Oct 2020 14:29:10 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 40BDB1613A9; Wed, 14 Oct 2020 14:29:10 +0100 (BST) From: Andrew Rybchenko To: Ray Kinsella , Neil Horman , "Thomas Monjalon" , Ferruh Yigit , Andrew Rybchenko CC: , Ivan Ilchenko Date: Wed, 14 Oct 2020 14:28:56 +0100 Message-ID: <1602682146-4722-2-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25724.003 X-TM-AS-Result: No-1.238400-8.000000-10 X-TMASE-MatchedRID: xz5dUIpVk2xWSqhPlGB83xz2MDiYujy50mSc1YzbC53iYlKox3ryNARj Z4/TzBlyZcz/Uu/FtYOn93rCC6a9lnT3K3VineCfw9GVhGa/57Y/pOSL72dTfwdkFovAReUoilv Ab18i4hPcL9OnXn2+9aW+3hCtK6/nFMFUQi+pamFVXhlmZsTdjEqAhuLHn5fE2MwxXd5kM2EY8d fj5o9RIpsamEZjK8gS8kaXXEQhzj2KhA2hG2DTq0rM69p7lDSswwD0mzFpRreHX0cDZiY+DdpGx yJBq9LmNqJuRbVKGyWAMuqetGVetnyef22ep6XYro1URZJFbJtsFus3s9zpUXm5u95yjsiuCSnS 3fyfdR0RrylMHUEZ4smM7iBaipcjgzxA6OA+3HSSgNLsUaQePPXKSh9pUFrtZfUv9UxvY+zw7Jx wU0EvZMqEROLb/+yO4/0Jvn0rwAJmtL4Dw+zNb5hXfxzgoU6P X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--1.238400-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25724.003 X-MDID: 1602682157-RsglfFYIvzWf X-PPE-DISP: 1602682157;RsglfFYIvzWf Subject: [dpdk-dev] [PATCH 01/11] ethdev: change eth dev stop function to return int X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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: Ivan Ilchenko Change rte_eth_dev_stop() return value from void to int and return negative errno values in case of error conditions. Also update the usage of the function in ethdev according to the new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko Acked-by: Thomas Monjalon --- doc/guides/rel_notes/deprecation.rst | 1 - lib/librte_ethdev/rte_ethdev.c | 27 ++++++++++++++++++++------- lib/librte_ethdev/rte_ethdev.h | 2 +- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 584e720879..f0bf656b47 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -127,7 +127,6 @@ Deprecation Notices negative errno values to indicate various error conditions (e.g. invalid port ID, unsupported operation, failed operation): - - ``rte_eth_dev_stop`` - ``rte_eth_dev_close`` * ethdev: New offload flags ``DEV_RX_OFFLOAD_FLOW_MARK`` will be added in 19.11. diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 5b7979a3b8..2226e429ba 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -1662,7 +1662,7 @@ rte_eth_dev_start(uint16_t port_id) struct rte_eth_dev *dev; struct rte_eth_dev_info dev_info; int diag; - int ret; + int ret, ret_stop; RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL); @@ -1696,7 +1696,13 @@ rte_eth_dev_start(uint16_t port_id) RTE_ETHDEV_LOG(ERR, "Error during restoring configuration for device (port %u): %s\n", port_id, rte_strerror(-ret)); - rte_eth_dev_stop(port_id); + ret_stop = rte_eth_dev_stop(port_id); + if (ret_stop != 0) { + RTE_ETHDEV_LOG(ERR, + "Failed to stop device (port %u): %s\n", + port_id, rte_strerror(-ret_stop)); + } + return ret; } @@ -1709,26 +1715,28 @@ rte_eth_dev_start(uint16_t port_id) return 0; } -void +int rte_eth_dev_stop(uint16_t port_id) { struct rte_eth_dev *dev; - RTE_ETH_VALID_PORTID_OR_RET(port_id); + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); dev = &rte_eth_devices[port_id]; - RTE_FUNC_PTR_OR_RET(*dev->dev_ops->dev_stop); + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_stop, -ENOTSUP); if (dev->data->dev_started == 0) { RTE_ETHDEV_LOG(INFO, "Device with port_id=%"PRIu16" already stopped\n", port_id); - return; + return 0; } dev->data->dev_started = 0; (*dev->dev_ops->dev_stop)(dev); rte_ethdev_trace_stop(port_id); + + return 0; } int @@ -1784,7 +1792,12 @@ rte_eth_dev_reset(uint16_t port_id) RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_reset, -ENOTSUP); - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret != 0) { + RTE_ETHDEV_LOG(ERR, + "Failed to stop device (port %u) before reset: %s - ignore\n", + port_id, rte_strerror(-ret)); + } ret = dev->dev_ops->dev_reset(dev); return eth_err(port_id, ret); diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index f4cc5917b9..e8eedaf0af 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -2278,7 +2278,7 @@ int rte_eth_dev_start(uint16_t port_id); * @param port_id * The port identifier of the Ethernet device. */ -void rte_eth_dev_stop(uint16_t port_id); +int rte_eth_dev_stop(uint16_t port_id); /** * Link up an Ethernet device.