From patchwork Thu Oct 15 13:30:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80922 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 2E9F5A04DB; Thu, 15 Oct 2020 15:34:41 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 00FB91E975; Thu, 15 Oct 2020 15:31:35 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id B49291E945 for ; Thu, 15 Oct 2020 15:31:21 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.61]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 41E60600F3; Thu, 15 Oct 2020 13:31:20 +0000 (UTC) Received: from us4-mdac16-27.ut7.mdlocal (unknown [10.7.66.59]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 3E6C8800A4; Thu, 15 Oct 2020 13:31:20 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id BA0908006C; Thu, 15 Oct 2020 13:31:19 +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 04C3E1C0098; Thu, 15 Oct 2020 13:31:19 +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; Thu, 15 Oct 2020 14:31:13 +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; Thu, 15 Oct 2020 14:31:13 +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 09FDV9HY025271; Thu, 15 Oct 2020 14:31:13 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 4A2DC1613A9; Thu, 15 Oct 2020 14:31:09 +0100 (BST) From: Andrew Rybchenko To: Ray Kinsella , Neil Horman , "Thomas Monjalon" , Ferruh Yigit , Andrew Rybchenko CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:35 +0100 Message-ID: <1602768646-13142-2-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-0.338000-8.000000-10 X-TMASE-MatchedRID: gX8VrEpETz5WSqhPlGB83xz2MDiYujy50mSc1YzbC53iYlKox3ryNARj Z4/TzBlyZcz/Uu/FtYOn93rCC6a9lnT3K3VineCfuwdUMMznEA8LKPaBHScRdT2mEJylgvfBcij MZrr2iZ2t2gtuWr1LmmiZWLI3MgipUAcCqG4Nmd4cLuEDP+gqckkQGNGmCuF4rdf6qWXIexlx1B wqk2Gx7fzWsjh29VQ4/StNdQuGxIdLn0r+bsqYxf3HILfxLV/9+wkHrk36xsxtw+n+iKWyyGrjw a8vt1tRVWY5roQd3og1I8VhEP37+ylNwXDXu2Rw/1dEgwtQ6NAwjY20D2quYpDgR3nlxgB62myG rIZlTgbi8zVgXoAltsIJ+4gwXrEtKsmEtKMlFWZdmxWUtUuClzjhqDosM+jps1auOy7gq//vt9k amZA7OdLkR472EQBKJ81bjJGEEobvXIi4jkOIlEEGfgQmZbw/X70xODkzZVa9Tbikt9AWZ0CBSG S7bIBtA1B/p1SzcogrKiD/U8b7SaNbPJBuvLaLnqg/VrSZEiM= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-0.338000-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768680-pEWZl0xYODFv X-PPE-DISP: 1602768680;pEWZl0xYODFv Subject: [dpdk-dev] [PATCH v2 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 Reviewed-by: Ferruh Yigit --- doc/guides/rel_notes/deprecation.rst | 1 - doc/guides/rel_notes/release_20_11.rst | 3 +++ lib/librte_ethdev/rte_ethdev.c | 27 +++++++++++++++++++------- lib/librte_ethdev/rte_ethdev.h | 5 ++++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index d1f5ed39db..2e04e24374 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/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index f8686a50db..c8c30937fa 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -355,6 +355,9 @@ API Changes * vhost: Add a new function ``rte_vhost_crypto_driver_start`` to be called instead of ``rte_vhost_driver_start`` by crypto applications. +* ethdev: changed ``rte_eth_dev_stop`` return value from ``void`` to + ``int`` to provide a way to report various error conditions. + ABI Changes ----------- diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index d9b82df073..b8cf04ef4d 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -1661,7 +1661,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); @@ -1695,7 +1695,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; } @@ -1708,26 +1714,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 @@ -1783,7 +1791,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 a61ca115a0..b85861cf2b 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -2277,8 +2277,11 @@ int rte_eth_dev_start(uint16_t port_id); * * @param port_id * The port identifier of the Ethernet device. + * @return + * - 0: Success, Ethernet device stopped. + * - <0: Error code of the driver device stop function. */ -void rte_eth_dev_stop(uint16_t port_id); +int rte_eth_dev_stop(uint16_t port_id); /** * Link up an Ethernet device. From patchwork Thu Oct 15 13:30:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80918 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 73463A04DB; Thu, 15 Oct 2020 15:33:12 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 426EB1E956; Thu, 15 Oct 2020 15:31:26 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id CC6251E933 for ; Thu, 15 Oct 2020 15:31:16 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 43B486008F; Thu, 15 Oct 2020 13:31:15 +0000 (UTC) Received: from us4-mdac16-2.ut7.mdlocal (unknown [10.7.65.70]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 4198C2009A; Thu, 15 Oct 2020 13:31:15 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id AC5881C0074; Thu, 15 Oct 2020 13:31:13 +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 649981C00A2; Thu, 15 Oct 2020 13:31:13 +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; Thu, 15 Oct 2020 14:31:10 +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; Thu, 15 Oct 2020 14:31:10 +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 09FDV9k9025310; Thu, 15 Oct 2020 14:31:09 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id C29561613AB; Thu, 15 Oct 2020 14:31:09 +0100 (BST) From: Andrew Rybchenko To: Nikhil Rao CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:36 +0100 Message-ID: <1602768646-13142-3-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-2.201500-8.000000-10 X-TMASE-MatchedRID: qkiRFh4owgXRlxaUc/KTYX4neC0h7SAD3V4UShoTXaeYkF7ZtFfCUy35 5p3utdHTYHB0GcKFMluciIjEsRJMvgj05bgaOUOePwKTD1v8YV5MkOX0UoduuacxvibtoCq3EoN 4n3g9Rrb3QfInLPO01EtUPR8Cg9cKsvVIf1NvGi8XK/dRaOWlvZ8kBWlYDDNgmyiLZetSf8mfop 0ytGwvXiq2rl3dzGQ1K/VotTaQ+CaZl4qeoPyJbdcgb6Nmy7GW5eYKDwR+Vh7XEAGDZja0DMp3S k3ThtHKEIN+sSFMy8ETMrtvutBxP1sOehyR+aovoWtvT8cnZ0E4oGQUCbwY5Q+g7mdwjo656FtD ZCmYBJ1Y8paICU20ju90JQgW5qyr X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-2.201500-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768674-JPiIr4F0_jZe X-PPE-DISP: 1602768674;JPiIr4F0_jZe Subject: [dpdk-dev] [PATCH v2 02/11] test/event: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across test/event according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- app/test/test_event_eth_rx_adapter.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_eth_rx_adapter.c index dd3bce71b8..60435b2faa 100644 --- a/app/test/test_event_eth_rx_adapter.c +++ b/app/test/test_event_eth_rx_adapter.c @@ -156,7 +156,9 @@ init_port_rx_intr(int num_ports) default_params.rx_intr_port = portid; return 0; } - rte_eth_dev_stop(portid); + retval = rte_eth_dev_stop(portid); + TEST_ASSERT(retval == 0, "Failed to stop port %u: %d\n", + portid, retval); } return 0; } @@ -479,8 +481,11 @@ adapter_multi_eth_add_del(void) /* stop eth devices for existing */ port_index = 0; - for (; port_index < rte_eth_dev_count_total(); port_index += 1) - rte_eth_dev_stop(port_index); + for (; port_index < rte_eth_dev_count_total(); port_index += 1) { + err = rte_eth_dev_stop(port_index); + TEST_ASSERT(err == 0, "Failed to stop port %u: %d\n", + port_index, err); + } /* add the max port for rx_adapter */ port_index = rte_eth_dev_count_total(); From patchwork Thu Oct 15 13:30:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80914 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 3FF68A04DB; Thu, 15 Oct 2020 15:31:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 338911E93A; Thu, 15 Oct 2020 15:31:19 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 50ABD1DB95 for ; Thu, 15 Oct 2020 15:31:15 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.61]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id D26E66010C; Thu, 15 Oct 2020 13:31:13 +0000 (UTC) Received: from us4-mdac16-25.ut7.mdlocal (unknown [10.7.65.251]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id D02F48009E; Thu, 15 Oct 2020 13:31:13 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 4CA4780056; Thu, 15 Oct 2020 13:31:13 +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 035721C0075; Thu, 15 Oct 2020 13:31:13 +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; Thu, 15 Oct 2020 14:31:10 +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; Thu, 15 Oct 2020 14:31:10 +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 09FDVAST025329; Thu, 15 Oct 2020 14:31:10 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 254D61613AB; Thu, 15 Oct 2020 14:31:10 +0100 (BST) From: Andrew Rybchenko To: Bruce Richardson CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:37 +0100 Message-ID: <1602768646-13142-4-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-0.220400-8.000000-10 X-TMASE-MatchedRID: cxaTYRzWUivRlxaUc/KTYX4neC0h7SAD3V4UShoTXac7FE26mju9OwZe An7ANE0ajjj7xmhW6vgQlFkmdk3VOiHhSBQfglfsA9lly13c/gH4uJ1REX4MHZGPHiE2kiT4j78 +1uscT5Ju/A0s2g7iweXlACu2VS9IT12Hc9FhVjXN+qWlu2ZxaEqAhuLHn5fEHdFjikZMLIfyRo rK+6u50HZBhkSPpjEIfjWeJX0rKbMfE8yM4pjsDwtuKBGekqUpnH7sbImOEBSbzHW1GVx//IuK2 CVAsIH2NTgkL6fh/UKvHUw64Uve/hbOH23VY+TKKtotNzrv3DJRs3O4K6IxktaQLCvu0vIcn0u7 ZyYPExrkA8OrYHdwDGfYlY/yoV/0Up6EHOb2+c7kHZDO53QSwmA7bUFBqh2V X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--0.220400-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768673-bAIS30Pvc8PO X-PPE-DISP: 1602768673;bAIS30Pvc8PO Subject: [dpdk-dev] [PATCH v2 03/11] app: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across app according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- app/test/test_pmd_perf.c | 5 ++++- app/test/test_pmd_ring.c | 31 ++++++++++++++++++++++++------- app/test/test_pmd_ring_perf.c | 3 ++- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/app/test/test_pmd_perf.c b/app/test/test_pmd_perf.c index d1240b76f9..49a805c1e0 100644 --- a/app/test/test_pmd_perf.c +++ b/app/test/test_pmd_perf.c @@ -802,7 +802,10 @@ test_pmd_perf(void) if (socketid != rte_eth_dev_socket_id(portid)) continue; - rte_eth_dev_stop(portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + printf("rte_eth_dev_stop: err=%s, port=%u\n", + rte_strerror(-ret), portid); } return 0; diff --git a/app/test/test_pmd_ring.c b/app/test/test_pmd_ring.c index 02873f26a1..86b1db2c1f 100644 --- a/app/test/test_pmd_ring.c +++ b/app/test/test_pmd_ring.c @@ -225,6 +225,7 @@ test_pmd_ring_pair_create_attach(void) struct rte_eth_stats stats, stats2; struct rte_mbuf buf, *pbuf = &buf; struct rte_eth_conf null_conf; + int ret; memset(&null_conf, 0, sizeof(struct rte_eth_conf)); @@ -412,8 +413,14 @@ test_pmd_ring_pair_create_attach(void) return TEST_FAILED; } - rte_eth_dev_stop(rxtx_portd); - rte_eth_dev_stop(rxtx_porte); + ret = rte_eth_dev_stop(rxtx_portd); + if (ret != 0) + printf("Error: failed to stop port %u: %s\n", + rxtx_portd, rte_strerror(-ret)); + ret = rte_eth_dev_stop(rxtx_porte); + if (ret != 0) + printf("Error: failed to stop port %u: %s\n", + rxtx_porte, rte_strerror(-ret)); return TEST_SUCCESS; } @@ -421,13 +428,22 @@ test_pmd_ring_pair_create_attach(void) static void test_cleanup_resources(void) { - int itr; + int itr, ret; for (itr = 0; itr < NUM_RINGS; itr++) rte_ring_free(rxtx[itr]); - rte_eth_dev_stop(tx_porta); - rte_eth_dev_stop(rx_portb); - rte_eth_dev_stop(rxtx_portc); + ret = rte_eth_dev_stop(tx_porta); + if (ret != 0) + printf("Error: failed to stop port %u: %s\n", + tx_porta, rte_strerror(-ret)); + ret = rte_eth_dev_stop(rx_portb); + if (ret != 0) + printf("Error: failed to stop port %u: %s\n", + rx_portb, rte_strerror(-ret)); + ret = rte_eth_dev_stop(rxtx_portc); + if (ret != 0) + printf("Error: failed to stop port %u: %s\n", + rxtx_portc, rte_strerror(-ret)); rte_mempool_free(mp); rte_vdev_uninit("net_ring_net_ringa"); @@ -522,7 +538,8 @@ test_command_line_ring_port(void) "test stats reset cmdl_port0 is failed"); TEST_ASSERT((test_get_stats(cmdl_port0) < 0), "test get stats cmdl_port0 is failed"); - rte_eth_dev_stop(cmdl_port0); + TEST_ASSERT((rte_eth_dev_stop(cmdl_port0) == 0), + "test stop cmdl_port0 is failed"); } return TEST_SUCCESS; } diff --git a/app/test/test_pmd_ring_perf.c b/app/test/test_pmd_ring_perf.c index 3b2ff9cb4f..d249b7de5f 100644 --- a/app/test/test_pmd_ring_perf.c +++ b/app/test/test_pmd_ring_perf.c @@ -155,7 +155,8 @@ test_ring_pmd_perf(void) test_bulk_enqueue_dequeue(); /* release port and ring resources */ - rte_eth_dev_stop(ring_ethdev_port); + if (rte_eth_dev_stop(ring_ethdev_port) != 0) + return -1; rte_eth_dev_get_name_by_port(ring_ethdev_port, name); rte_vdev_uninit(name); rte_ring_free(r); From patchwork Thu Oct 15 13:30:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80915 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 432D7A04DB; Thu, 15 Oct 2020 15:32:01 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 640171E941; Thu, 15 Oct 2020 15:31:21 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 559831DDC3 for ; Thu, 15 Oct 2020 15:31:16 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id CE80E60163; Thu, 15 Oct 2020 13:31:14 +0000 (UTC) Received: from us4-mdac16-66.ut7.mdlocal (unknown [10.7.64.78]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id CA9E4200A3; Thu, 15 Oct 2020 13:31:14 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 22A4C1C0057; Thu, 15 Oct 2020 13:31:14 +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 C4ACF1C00A2; Thu, 15 Oct 2020 13:31:13 +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; Thu, 15 Oct 2020 14:31:10 +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; Thu, 15 Oct 2020 14:31:10 +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 09FDVASV025329; Thu, 15 Oct 2020 14:31:10 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 854A81613AB; Thu, 15 Oct 2020 14:31:10 +0100 (BST) From: Andrew Rybchenko To: Harry van Haaren , Ori Kam , Bruce Richardson , Radu Nicolau , Akhil Goyal , Ferruh Yigit , Sunil Kumar Kori , "Pavan Nikhilesh" , Jerin Jacob , Kiran Kumar K , Nithin Dabilpuram , David Hunt CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:38 +0100 Message-ID: <1602768646-13142-5-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-2.300100-8.000000-10 X-TMASE-MatchedRID: 7SLQpEcfW2LRlxaUc/KTYX4neC0h7SAD3V4UShoTXad+SLLtNOiBhhOv qWE4CGBUQ0ew+orY3L24HGCfl+dhoCHhSBQfglfsA9lly13c/gHpVMb1xnESMqzk9k6NqjPuokW ZuZ853DcpVsEDak15htyo1A7d4w060X+0CFhNLNf9tX9U6GuaihfbPFE2GHrVVWQnHKxp38heUN p8uxj+xJv95NYHIKAjkth3obE9lGBZT98H9cWYnFVeGWZmxN2MBGvINcfHqhcRQQ4kFqjjJCOGa xJXnUqc4u2WwMxMdpLvK3TBvg+vxe1KuqFSI2KuTauf2PrRb1vdYVrFVbszaGz3xnx8b/qRcHKR PTYj/V07OJE/RLyfLuXcvHH+KGk9Q9tg+p38ZonHmyDJSEsI25yqUJ2uHKFAKBVvFbsUM5WX35n GkdKgi+LzNWBegCW2wgn7iDBesS0nRE+fI6etkgnsbzHpYjvhuxpkqxafWL5EBS3KcDyYkcVQU8 YbML/FtmFdb/3pS0HeQgfNIzFT9RMvyGZyKSqgt62H/TaJzn1dkhglm41jPL1NuKS30BZnQIFIZ LtsgG0DUH+nVLNyiCsqIP9TxvtJMb6p570ilnc= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--2.300100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768674-uvrqOX5CJeQA X-PPE-DISP: 1602768674;uvrqOX5CJeQA Subject: [dpdk-dev] [PATCH v2 04/11] examples: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across examples according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- examples/ethtool/lib/rte_ethtool.c | 15 ++++++++------ examples/eventdev_pipeline/main.c | 3 ++- examples/flow_filtering/main.c | 13 +++++++----- examples/ioat/ioatfwd.c | 6 +++++- examples/ipsec-secgw/event_helper.c | 7 ++++++- examples/ipsec-secgw/ipsec-secgw.c | 7 ++++++- examples/kni/main.c | 32 ++++++++++++++++++++++++----- examples/l2fwd-event/main.c | 10 +++++++-- examples/l2fwd/main.c | 5 ++++- examples/l3fwd-graph/main.c | 5 ++++- examples/l3fwd-power/main.c | 6 +++++- examples/l3fwd/main.c | 10 +++++++-- 12 files changed, 92 insertions(+), 27 deletions(-) diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c index db8150efd5..86e3de078c 100644 --- a/examples/ethtool/lib/rte_ethtool.c +++ b/examples/ethtool/lib/rte_ethtool.c @@ -297,7 +297,11 @@ rte_ethtool_set_pauseparam(uint16_t port_id, int rte_ethtool_net_open(uint16_t port_id) { - rte_eth_dev_stop(port_id); + int ret; + + ret = rte_eth_dev_stop(port_id); + if (ret != 0) + return ret; return rte_eth_dev_start(port_id); } @@ -305,10 +309,7 @@ rte_ethtool_net_open(uint16_t port_id) int rte_ethtool_net_stop(uint16_t port_id) { - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); - rte_eth_dev_stop(port_id); - - return 0; + return rte_eth_dev_stop(port_id); } int @@ -459,7 +460,9 @@ rte_ethtool_set_ringparam(uint16_t port_id, if (stat != 0) return stat; - rte_eth_dev_stop(port_id); + stat = rte_eth_dev_stop(port_id); + if (stat != 0) + return stat; stat = rte_eth_tx_queue_setup(port_id, 0, ring_param->tx_pending, rte_socket_id(), NULL); diff --git a/examples/eventdev_pipeline/main.c b/examples/eventdev_pipeline/main.c index 4ac5821539..597540c3d6 100644 --- a/examples/eventdev_pipeline/main.c +++ b/examples/eventdev_pipeline/main.c @@ -296,7 +296,8 @@ signal_handler(int signum) RTE_ETH_FOREACH_DEV(portid) { rte_event_eth_rx_adapter_stop(portid); rte_event_eth_tx_adapter_stop(portid); - rte_eth_dev_stop(portid); + if (rte_eth_dev_stop(portid) < 0) + printf("Failed to stop port %u", portid); } rte_eal_mp_wait_lcore(); diff --git a/examples/flow_filtering/main.c b/examples/flow_filtering/main.c index cc9e7e7808..93523d625b 100644 --- a/examples/flow_filtering/main.c +++ b/examples/flow_filtering/main.c @@ -52,7 +52,7 @@ print_ether_addr(const char *what, struct rte_ether_addr *eth_addr) printf("%s%s", what, buf); } -static void +static int main_loop(void) { struct rte_mbuf *mbufs[32]; @@ -61,6 +61,7 @@ main_loop(void) uint16_t nb_rx; uint16_t i; uint16_t j; + int ret; while (!force_quit) { for (i = 0; i < nr_queues; i++) { @@ -88,8 +89,12 @@ main_loop(void) /* closing and releasing resources */ rte_flow_flush(port_id, &error); - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret < 0) + printf("Failed to stop port %u: %s", + port_id, rte_strerror(-ret)); rte_eth_dev_close(port_id); + return ret; } #define CHECK_INTERVAL 1000 /* 100ms */ @@ -254,7 +259,5 @@ main(int argc, char **argv) rte_exit(EXIT_FAILURE, "error in creating flow"); } - main_loop(); - - return 0; + return main_loop(); } diff --git a/examples/ioat/ioatfwd.c b/examples/ioat/ioatfwd.c index 8cf606e25b..dc1ef951c1 100644 --- a/examples/ioat/ioatfwd.c +++ b/examples/ioat/ioatfwd.c @@ -995,7 +995,11 @@ main(int argc, char **argv) uint32_t j; for (i = 0; i < cfg.nb_ports; i++) { printf("Closing port %d\n", cfg.ports[i].rxtx_port); - rte_eth_dev_stop(cfg.ports[i].rxtx_port); + ret = rte_eth_dev_stop(cfg.ports[i].rxtx_port); + if (ret != 0) + RTE_LOG(ERR, IOAT, "rte_eth_dev_stop: err=%s, port=%u\n", + rte_strerror(-ret), cfg.ports[i].rxtx_port); + rte_eth_dev_close(cfg.ports[i].rxtx_port); if (copy_mode == COPY_MODE_IOAT_NUM) { for (j = 0; j < cfg.ports[i].nb_queues; j++) { diff --git a/examples/ipsec-secgw/event_helper.c b/examples/ipsec-secgw/event_helper.c index 865dc911b8..ce4dbdc085 100644 --- a/examples/ipsec-secgw/event_helper.c +++ b/examples/ipsec-secgw/event_helper.c @@ -1583,7 +1583,12 @@ eh_devs_init(struct eh_conf *conf) if ((conf->eth_portmask & (1 << port_id)) == 0) continue; - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret != 0) { + EH_LOG_ERR("Failed to stop port %u, err: %d", + port_id, ret); + return ret; + } } /* Setup eventdev */ diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c index 60132c4bd7..58ecfd6f76 100644 --- a/examples/ipsec-secgw/ipsec-secgw.c +++ b/examples/ipsec-secgw/ipsec-secgw.c @@ -3032,7 +3032,12 @@ main(int32_t argc, char **argv) " for port %u, err msg: %s\n", portid, err.message); } - rte_eth_dev_stop(portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + RTE_LOG(ERR, IPSEC, + "rte_eth_dev_stop: err=%s, port=%u\n", + rte_strerror(-ret), portid); + rte_eth_dev_close(portid); printf(" Done\n"); } diff --git a/examples/kni/main.c b/examples/kni/main.c index 2223bd367d..ac6309e072 100644 --- a/examples/kni/main.c +++ b/examples/kni/main.c @@ -782,7 +782,12 @@ kni_change_mtu_(uint16_t port_id, unsigned int new_mtu) RTE_LOG(INFO, APP, "Change MTU of port %d to %u\n", port_id, new_mtu); /* Stop specific port */ - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret != 0) { + RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n", + port_id, rte_strerror(-ret)); + return ret; + } memcpy(&conf, &port_conf, sizeof(conf)); /* Set new MTU */ @@ -875,10 +880,23 @@ kni_config_network_interface(uint16_t port_id, uint8_t if_up) rte_atomic32_inc(&kni_pause); if (if_up != 0) { /* Configure network interface up */ - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret != 0) { + RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n", + port_id, rte_strerror(-ret)); + rte_atomic32_dec(&kni_pause); + return ret; + } ret = rte_eth_dev_start(port_id); - } else /* Configure network interface down */ - rte_eth_dev_stop(port_id); + } else { /* Configure network interface down */ + ret = rte_eth_dev_stop(port_id); + if (ret != 0) { + RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n", + port_id, rte_strerror(-ret)); + rte_atomic32_dec(&kni_pause); + return ret; + } + } rte_atomic32_dec(&kni_pause); @@ -998,6 +1016,7 @@ static int kni_free_kni(uint16_t port_id) { uint8_t i; + int ret; struct kni_port_params **p = kni_port_params_array; if (port_id >= RTE_MAX_ETHPORTS || !p[port_id]) @@ -1008,7 +1027,10 @@ kni_free_kni(uint16_t port_id) printf("Fail to release kni\n"); p[port_id]->kni[i] = NULL; } - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret != 0) + RTE_LOG(ERR, APP, "Failed to stop port %d: %s\n", + port_id, rte_strerror(-ret)); return 0; } diff --git a/examples/l2fwd-event/main.c b/examples/l2fwd-event/main.c index 9f831b1266..b48794d6bc 100644 --- a/examples/l2fwd-event/main.c +++ b/examples/l2fwd-event/main.c @@ -683,7 +683,10 @@ main(int argc, char **argv) if ((rsrc->enabled_port_mask & (1 << port_id)) == 0) continue; - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret < 0) + printf("rte_eth_dev_stop:err=%d, port=%u\n", + ret, port_id); } rte_eal_mp_wait_lcore(); @@ -705,7 +708,10 @@ main(int argc, char **argv) (1 << port_id)) == 0) continue; printf("Closing port %d...", port_id); - rte_eth_dev_stop(port_id); + ret = rte_eth_dev_stop(port_id); + if (ret < 0) + printf("rte_eth_dev_stop:err=%d, port=%u\n", + ret, port_id); rte_eth_dev_close(port_id); printf(" Done\n"); } diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c index 7e3078788e..7d1b08a8f7 100644 --- a/examples/l2fwd/main.c +++ b/examples/l2fwd/main.c @@ -896,7 +896,10 @@ main(int argc, char **argv) if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) continue; printf("Closing port %d...", portid); - rte_eth_dev_stop(portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + printf("rte_eth_dev_stop: err=%d, port=%d\n", + ret, portid); rte_eth_dev_close(portid); printf(" Done\n"); } diff --git a/examples/l3fwd-graph/main.c b/examples/l3fwd-graph/main.c index 2306ba9b07..2fd536e592 100644 --- a/examples/l3fwd-graph/main.c +++ b/examples/l3fwd-graph/main.c @@ -1116,7 +1116,10 @@ main(int argc, char **argv) if ((enabled_port_mask & (1 << portid)) == 0) continue; printf("Closing port %d...", portid); - rte_eth_dev_stop(portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + printf("Failed to stop port %u: %s\n", + portid, rte_strerror(-ret)); rte_eth_dev_close(portid); printf(" Done\n"); } diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c index d0e6c9bd77..b1535b2749 100644 --- a/examples/l3fwd-power/main.c +++ b/examples/l3fwd-power/main.c @@ -2805,7 +2805,11 @@ main(int argc, char **argv) if ((enabled_port_mask & (1 << portid)) == 0) continue; - rte_eth_dev_stop(portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + RTE_LOG(ERR, L3FWD_POWER, "rte_eth_dev_stop: err=%d, port=%u\n", + ret, portid); + rte_eth_dev_close(portid); } diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 80f3434ec2..3811a1efbf 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -1284,7 +1284,10 @@ main(int argc, char **argv) RTE_ETH_FOREACH_DEV(portid) { if ((enabled_port_mask & (1 << portid)) == 0) continue; - rte_eth_dev_stop(portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + printf("rte_eth_dev_stop: err=%d, port=%u\n", + ret, portid); } rte_eal_mp_wait_lcore(); @@ -1304,7 +1307,10 @@ main(int argc, char **argv) if ((enabled_port_mask & (1 << portid)) == 0) continue; printf("Closing port %d...", portid); - rte_eth_dev_stop(portid); + ret = rte_eth_dev_stop(portid); + if (ret != 0) + printf("rte_eth_dev_stop: err=%d, port=%u\n", + ret, portid); rte_eth_dev_close(portid); printf(" Done\n"); } From patchwork Thu Oct 15 13:30:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80916 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 5288BA04DB; Thu, 15 Oct 2020 15:32:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0872E1E948; Thu, 15 Oct 2020 15:31:23 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 8DB621DFE4 for ; Thu, 15 Oct 2020 15:31:16 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 072EC60107; Thu, 15 Oct 2020 13:31:15 +0000 (UTC) Received: from us4-mdac16-20.ut7.mdlocal (unknown [10.7.65.244]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 04ECD2009A; Thu, 15 Oct 2020 13:31:15 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 834BD1C005B; Thu, 15 Oct 2020 13:31:14 +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 3AC771C009C; Thu, 15 Oct 2020 13:31:14 +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; Thu, 15 Oct 2020 14:31:11 +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; Thu, 15 Oct 2020 14:31:11 +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 09FDVASX025329; Thu, 15 Oct 2020 14:31:11 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id CF57C1613AB; Thu, 15 Oct 2020 14:31:10 +0100 (BST) From: Andrew Rybchenko To: Chas Williams , "Min Hu (Connor)" CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:39 +0100 Message-ID: <1602768646-13142-6-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-0.405100-8.000000-10 X-TMASE-MatchedRID: m3UrM73BECPRlxaUc/KTYX4neC0h7SAD3V4UShoTXacd0WOKRkwsh0kx APClfhN02tmoqiGUvaLMdHm3E7kFwCHhSBQfglfsA9lly13c/gGByxVkfd04JFIxScKXZnK0DYo fQuAXb7gq6gxfT+cErya6mjy4RIhP4bVbyN6yIMmeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8ifEz J5hPndGZa0UaoW74jY2VRnupLfvT1e7dy+fNoTC0+6FisgFNKw9eUxDL0BCgoub7KuTEVvnxCf5 kJJfuTTypY3Bjx0uiBCgDf5kaYsDpN1JFeUKeMEiOOUXfTkScBZSbxIRLLN37zfneGoTKOTw8g2 HBNcF5k= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-0.405100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768675-t111NGAWzXRp X-PPE-DISP: 1602768675;t111NGAWzXRp Subject: [dpdk-dev] [PATCH v2 05/11] net/bonding: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across net/bonding according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- drivers/net/bonding/rte_eth_bond_api.c | 7 ++++++- drivers/net/bonding/rte_eth_bond_pmd.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c index a4007fe07c..55c8e3167c 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -237,7 +237,12 @@ slave_rte_flow_prepare(uint16_t slave_id, struct bond_dev_private *internals) uint16_t slave_port_id = internals->slaves[slave_id].port_id; if (internals->flow_isolated_valid != 0) { - rte_eth_dev_stop(slave_port_id); + if (rte_eth_dev_stop(slave_port_id) != 0) { + RTE_BOND_LOG(ERR, "Failed to stop device on port %u", + slave_port_id); + return -1; + } + if (rte_flow_isolate(slave_port_id, internals->flow_isolated, &ferror)) { RTE_BOND_LOG(ERR, "rte_flow_isolate failed for slave" diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 1c404b2edd..b75646117c 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1694,7 +1694,10 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, struct bond_dev_private *internals = bonded_eth_dev->data->dev_private; /* Stop slave */ - rte_eth_dev_stop(slave_eth_dev->data->port_id); + errval = rte_eth_dev_stop(slave_eth_dev->data->port_id); + if (errval != 0) + RTE_BOND_LOG(ERR, "rte_eth_dev_stop: port %u, err (%d)", + slave_eth_dev->data->port_id, errval); /* Enable interrupts on slave device if supported */ if (slave_eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) @@ -2110,7 +2113,11 @@ bond_ethdev_close(struct rte_eth_dev *dev) while (internals->slave_count != skipped) { uint16_t port_id = internals->slaves[skipped].port_id; - rte_eth_dev_stop(port_id); + if (rte_eth_dev_stop(port_id) != 0) { + RTE_BOND_LOG(ERR, "Failed to stop device on port %u", + port_id); + skipped++; + } if (rte_eth_bond_slave_remove(bond_port_id, port_id) != 0) { RTE_BOND_LOG(ERR, From patchwork Thu Oct 15 13:30:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80917 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 0F525A04DB; Thu, 15 Oct 2020 15:32:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 90BCE1E950; Thu, 15 Oct 2020 15:31:24 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 9B8271E882 for ; Thu, 15 Oct 2020 15:31:17 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 24BCB600A1; Thu, 15 Oct 2020 13:31:16 +0000 (UTC) Received: from us4-mdac16-44.ut7.mdlocal (unknown [10.7.64.25]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 212F08009B; Thu, 15 Oct 2020 13:31:16 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 8FA93280053; Thu, 15 Oct 2020 13:31:15 +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 475471C006C; Thu, 15 Oct 2020 13:31: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; Thu, 15 Oct 2020 14:31:11 +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; Thu, 15 Oct 2020 14:31:11 +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 09FDVASZ025329; Thu, 15 Oct 2020 14:31:11 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 26EF01613AB; Thu, 15 Oct 2020 14:31:11 +0100 (BST) From: Andrew Rybchenko To: Ferruh Yigit CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:40 +0100 Message-ID: <1602768646-13142-7-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-0.385100-8.000000-10 X-TMASE-MatchedRID: URRd+XkY8EzRlxaUc/KTYX4neC0h7SAD3V4UShoTXad+SLLtNOiBhiXD Fxgit6TpGTEKg4xHKqqbHAuQ1dUnuWJZXQNDzktSutvHF25zoU99LQinZ4QefCP/VFuTOXUT3n8 eBZjGmUzkwjHXXC/4I8ZW5ai5WKlypahlEGd2cKgUi0WYpBNca4IR4y5/iVfT+eaNSYcbybyXeV yu5WsJjllNQRIFZQs3nYpixVlVsRUoUiVB9z2vwjh3ID15xRoG8OyccFNBL2TKhETi2//sjuP9C b59K8ACZrS+A8PszW/U9h9N881NSQ== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--0.385100-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768676-L6xojN03HRcp X-PPE-DISP: 1602768676;L6xojN03HRcp Subject: [dpdk-dev] [PATCH v2 06/11] kni: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across kni according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- app/test/test_kni.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/test/test_kni.c b/app/test/test_kni.c index e47ab36e02..931e8cb67e 100644 --- a/app/test/test_kni.c +++ b/app/test/test_kni.c @@ -755,7 +755,8 @@ test_kni(void) ret = 0; fail: - rte_eth_dev_stop(port_id); + if (rte_eth_dev_stop(port_id) != 0) + printf("Failed to stop port %u\n", port_id); return ret; } From patchwork Thu Oct 15 13:30:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80920 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 9107EA04DB; Thu, 15 Oct 2020 15:33:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2DB6D1E964; Thu, 15 Oct 2020 15:31:29 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 78AA01E93E for ; Thu, 15 Oct 2020 15:31:18 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id E0A01600D1; Thu, 15 Oct 2020 13:31:16 +0000 (UTC) Received: from us4-mdac16-20.ut7.mdlocal (unknown [10.7.65.244]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id DDD4C2009A; Thu, 15 Oct 2020 13:31:16 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 5E2E21C0053; Thu, 15 Oct 2020 13:31:16 +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 13F5E1C0093; Thu, 15 Oct 2020 13:31:16 +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; Thu, 15 Oct 2020 14:31:11 +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; Thu, 15 Oct 2020 14:31:11 +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 09FDVASb025329; Thu, 15 Oct 2020 14:31:11 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id C1AE11613AB; Thu, 15 Oct 2020 14:31:11 +0100 (BST) From: Andrew Rybchenko To: Chas Williams , "Min Hu (Connor)" CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:41 +0100 Message-ID: <1602768646-13142-8-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-4.089200-8.000000-10 X-TMASE-MatchedRID: cxaTYRzWUivRlxaUc/KTYX4neC0h7SAD3V4UShoTXaeYkF7ZtFfCU0kx APClfhN0YHB0GcKFMltFdYu4cV7ttyHhSBQfglfsA9lly13c/gHVoHA9HwvQm5wsUqEjZnPr2VC 1QWKKKPoRtfYWlraBqb5XOALI4JsjBOatfChdjHspJ8SpVT9O/3607foZgOWyJmE4A+qD79lZru EoKvBZSdXn8fbOSyKigF2CU61NPqQfE8yM4pjsDwtuKBGekqUpm+MB6kaZ2g7eWeTngWZnHRf+g QU4ZiK245RtQqwkfAAMHRdGyc5Bo6etsYcwQ3ZYbeKv4AcAnvRrqo/xyJSPfviN5FIY1ka611uZ 65NlHybkA8OrYHdwDGfYlY/yoV/0Up6EHOb2+c7kHZDO53QSwjflzkGcoK72 X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--4.089200-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768676-hoCq_JPlgcj5 X-PPE-DISP: 1602768676;hoCq_JPlgcj5 Subject: [dpdk-dev] [PATCH v2 07/11] test/bonding: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across test/bonding according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- app/test/test_link_bonding.c | 42 +++++++++++++++++++++------- app/test/test_link_bonding_mode4.c | 8 ++++-- app/test/test_link_bonding_rssconf.c | 3 +- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c index 3a46f943f1..e8b76bd850 100644 --- a/app/test/test_link_bonding.c +++ b/app/test/test_link_bonding.c @@ -613,7 +613,9 @@ test_stop_bonded_device(void) struct rte_eth_link link_status; int retval; - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); retval = rte_eth_link_get(test_params->bonded_port_id, &link_status); TEST_ASSERT(retval >= 0, @@ -647,7 +649,10 @@ remove_slaves_and_stop_bonded_device(void) TEST_ASSERT_SUCCESS(test_remove_slave_from_bonded_device(), "test_remove_slave_from_bonded_device failed"); - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); + rte_eth_stats_reset(test_params->bonded_port_id); rte_eth_bond_mac_address_reset(test_params->bonded_port_id); @@ -755,7 +760,9 @@ test_set_primary_slave(void) test_params->slave_port_ids[i]); /* stop/start bonded eth dev to apply new MAC */ - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); TEST_ASSERT_SUCCESS(rte_eth_dev_start(test_params->bonded_port_id), "Failed to start bonded port %d", @@ -1024,7 +1031,10 @@ test_set_bonded_port_initialization_mac_assignment(void) slave_port_ids[2]), "failed to set primary port on bonded device."); - rte_eth_dev_stop(bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(bonded_port_id), + "Failed to stop bonded port %u", + bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_start(bonded_port_id), "Failed to start bonded pmd eth device %d.", bonded_port_id); @@ -1063,7 +1073,9 @@ test_set_bonded_port_initialization_mac_assignment(void) * b - remove slave ethdevs * c - Verify slave ethdevs MACs are restored */ - rte_eth_dev_stop(bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(bonded_port_id), + "Failed to stop bonded port %u", + bonded_port_id); for (i = 0; i < BONDED_INIT_MAC_ASSIGNMENT_SLAVE_COUNT; i++) { TEST_ASSERT_SUCCESS(rte_eth_bond_slave_remove(bonded_port_id, @@ -1769,7 +1781,9 @@ test_roundrobin_verify_mac_assignment(void) /* stop / start bonded device and verify that primary MAC address is * propagate to bonded device and slaves */ - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); TEST_ASSERT_SUCCESS(rte_eth_dev_start(test_params->bonded_port_id), "Failed to start bonded device"); @@ -2404,7 +2418,9 @@ test_activebackup_verify_mac_assignment(void) /* stop / start bonded device and verify that primary MAC address is * propagated to bonded device and slaves */ - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); TEST_ASSERT_SUCCESS(rte_eth_dev_start(test_params->bonded_port_id), "Failed to start device"); @@ -3335,7 +3351,9 @@ test_balance_verify_mac_assignment(void) /* stop / start bonded device and verify that primary MAC address is * propagated to bonded device and slaves */ - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); TEST_ASSERT_SUCCESS(rte_eth_dev_start(test_params->bonded_port_id), "Failed to start bonded device"); @@ -3932,7 +3950,9 @@ test_broadcast_verify_mac_assignment(void) /* stop / start bonded device and verify that primary MAC address is * propagated to bonded device and slaves */ - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); TEST_ASSERT_SUCCESS(rte_eth_dev_start(test_params->bonded_port_id), "Failed to start bonded device"); @@ -4472,7 +4492,9 @@ test_tlb_verify_mac_assignment(void) /* stop / start bonded device and verify that primary MAC address is * propagated to bonded device and slaves */ - rte_eth_dev_stop(test_params->bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params->bonded_port_id), + "Failed to stop bonded port %u", + test_params->bonded_port_id); TEST_ASSERT_SUCCESS(rte_eth_dev_start(test_params->bonded_port_id), "Failed to start device"); diff --git a/app/test/test_link_bonding_mode4.c b/app/test/test_link_bonding_mode4.c index cf12f026dd..2c835fa7ad 100644 --- a/app/test/test_link_bonding_mode4.c +++ b/app/test/test_link_bonding_mode4.c @@ -355,7 +355,9 @@ remove_slaves_and_stop_bonded_device(void) uint16_t slaves[RTE_MAX_ETHPORTS]; uint16_t i; - rte_eth_dev_stop(test_params.bonded_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params.bonded_port_id), + "Failed to stop bonded port %u", + test_params.bonded_port_id); FOR_EACH_SLAVE(i, slave) remove_slave(slave); @@ -368,7 +370,9 @@ remove_slaves_and_stop_bonded_device(void) test_params.bonded_port_id, retval); FOR_EACH_PORT(i, slave) { - rte_eth_dev_stop(slave->port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(slave->port_id), + "Failed to stop bonded port %u", + slave->port_id); TEST_ASSERT(slave->bonded == 0, "Port id=%u is still marked as enslaved.", slave->port_id); diff --git a/app/test/test_link_bonding_rssconf.c b/app/test/test_link_bonding_rssconf.c index 1a9571e5c6..5dac60ca1e 100644 --- a/app/test/test_link_bonding_rssconf.c +++ b/app/test/test_link_bonding_rssconf.c @@ -176,7 +176,8 @@ static int remove_slaves_and_stop_bonded_device(void) { TEST_ASSERT_SUCCESS(remove_slaves(), "Removing slaves"); - rte_eth_dev_stop(test_params.bond_port_id); + TEST_ASSERT_SUCCESS(rte_eth_dev_stop(test_params.bond_port_id), + "Failed to stop port %u", test_params.bond_port_id); return TEST_SUCCESS; } From patchwork Thu Oct 15 13:30:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80919 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 7CF42A04DB; Thu, 15 Oct 2020 15:33:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B41031E95C; Thu, 15 Oct 2020 15:31:27 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 281D61E882 for ; Thu, 15 Oct 2020 15:31:19 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.62]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A6FA460060; Thu, 15 Oct 2020 13:31:17 +0000 (UTC) Received: from us4-mdac16-41.ut7.mdlocal (unknown [10.7.64.23]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A3C7A8009B; Thu, 15 Oct 2020 13:31:17 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 2A204280053; Thu, 15 Oct 2020 13:31: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 D521B1C0097; Thu, 15 Oct 2020 13:31:16 +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; Thu, 15 Oct 2020 14:31: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; Thu, 15 Oct 2020 14:31: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 09FDVASd025329; Thu, 15 Oct 2020 14:31:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 2EE711613AB; Thu, 15 Oct 2020 14:31:12 +0100 (BST) From: Andrew Rybchenko To: Wisam Jaddo CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:42 +0100 Message-ID: <1602768646-13142-9-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-0.990600-8.000000-10 X-TMASE-MatchedRID: 3VvmmxedNeLRlxaUc/KTYX4neC0h7SAD3V4UShoTXac7FE26mju9OwZe An7ANE0amASPBg63wn37QvycQTEpnyxppiUy9o4cA9lly13c/gE0VTU7yL3Dk14KJoYT5MRLo8W MkQWv6iUoTQl7wNH8Pg1fA1QHegDv3QfwsVk0UbvqwGfCk7KUsyKnZ6UtQNAzqcHfMsna70Ei3n PzECRbB1Y1JbYvTyyzrGAw15yH6cNmb1WpXm6zPssBzjx8WlgS0ZJGTqtMIjoKdytL748r2g9cv Ed/Et5dVEc5IqztENReYfSkFq6uAb7jE6+wkCSeftwZ3X11IV0= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--0.990600-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768677-wBT0D5vv9TiI X-PPE-DISP: 1602768677;wBT0D5vv9TiI Subject: [dpdk-dev] [PATCH v2 08/11] app/flow-perf: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across app/flow-perf according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- app/test-flow-perf/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c index c420da6a57..2189b945de 100644 --- a/app/test-flow-perf/main.c +++ b/app/test-flow-perf/main.c @@ -1450,7 +1450,8 @@ main(int argc, char **argv) RTE_ETH_FOREACH_DEV(port) { rte_flow_flush(port, &error); - rte_eth_dev_stop(port); + if (rte_eth_dev_stop(port) != 0) + printf("Failed to stop device on port %u\n", port); rte_eth_dev_close(port); } return 0; From patchwork Thu Oct 15 13:30:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80923 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 7F262A04DB; Thu, 15 Oct 2020 15:34:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6765F1E97C; Thu, 15 Oct 2020 15:31:36 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 31DC81E947 for ; Thu, 15 Oct 2020 15:31:22 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.61]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B4CD46008B; Thu, 15 Oct 2020 13:31:20 +0000 (UTC) Received: from us4-mdac16-75.ut7.mdlocal (unknown [10.7.64.194]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B2A41800A4; Thu, 15 Oct 2020 13:31:20 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 288D680075; Thu, 15 Oct 2020 13:31:20 +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 D30531C008B; Thu, 15 Oct 2020 13:31:19 +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; Thu, 15 Oct 2020 14:31: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; Thu, 15 Oct 2020 14:31: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 09FDVASf025329; Thu, 15 Oct 2020 14:31:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 86C5A1613AB; Thu, 15 Oct 2020 14:31:12 +0100 (BST) From: Andrew Rybchenko To: Wenzhuo Lu , Beilei Xing , Bernard Iremonger CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:43 +0100 Message-ID: <1602768646-13142-10-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-1.548700-8.000000-10 X-TMASE-MatchedRID: bPLNq/JhYEHRlxaUc/KTYX4neC0h7SAD3V4UShoTXac7FE26mju9OwZe An7ANE0aGTEKg4xHKqqbHAuQ1dUnuWJZXQNDzktS+CjwEqX1p7l9LQinZ4QefOYQ3zcXToXr+gt Hj7OwNO2OhzOa6g8KrXDcLRjjdV22tz3xEVh9B6qyKVec2b7IwIi466djQy7oFo9Ftj+jagzue0 oAB0AZQIj28gSLdbynU2j0zPz1qckndASHStcjtoXXmHr+iJs1sqxYnjga4QY83Fq7f38GK0XAd maT51YybiPTBhvbLhaUTGVAhB5EbQ== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--1.548700-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768680-b1bkGc0z8Wjs X-PPE-DISP: 1602768680;b1bkGc0z8Wjs Subject: [dpdk-dev] [PATCH v2 09/11] app/testpmd: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across app/testpmd according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- app/test-pmd/testpmd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index ccba71c076..84dedcf919 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -2628,7 +2628,9 @@ stop_port(portid_t pid) RTE_PORT_HANDLING) == 0) continue; - rte_eth_dev_stop(pi); + if (rte_eth_dev_stop(pi) != 0) + RTE_LOG(ERR, EAL, "rte_eth_dev_stop failed for port %u\n", + pi); if (rte_atomic16_cmpset(&(port->port_status), RTE_PORT_HANDLING, RTE_PORT_STOPPED) == 0) From patchwork Thu Oct 15 13:30:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80921 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 E62DEA04DB; Thu, 15 Oct 2020 15:34:17 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CC9071E96C; Thu, 15 Oct 2020 15:31:30 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 2CC661E882 for ; Thu, 15 Oct 2020 15:31:20 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.60]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id AD009600E0; Thu, 15 Oct 2020 13:31:18 +0000 (UTC) Received: from us4-mdac16-6.ut7.mdlocal (unknown [10.7.65.74]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A9D862009A; Thu, 15 Oct 2020 13:31:18 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.174]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 1EB871C0054; Thu, 15 Oct 2020 13:31:18 +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 A29A11C00A2; Thu, 15 Oct 2020 13:31:17 +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; Thu, 15 Oct 2020 14:31:13 +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; Thu, 15 Oct 2020 14:31:13 +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 09FDVASh025329; Thu, 15 Oct 2020 14:31:12 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id DC98D1613AB; Thu, 15 Oct 2020 14:31:12 +0100 (BST) From: Andrew Rybchenko To: Gaetan Rivet CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:44 +0100 Message-ID: <1602768646-13142-11-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-3.265200-8.000000-10 X-TMASE-MatchedRID: Y4ICLEyyxIvRlxaUc/KTYX4neC0h7SAD3V4UShoTXacd0WOKRkwsh2hk SwpykoqVx/C5Mf1iTDw+ikRlw7XhPCHhSBQfglfsA9lly13c/gExXH/dlhvLv1IxScKXZnK0g7l N9LOvFDuuOtzV1CQbqrlxRECWghM+HxPMjOKY7A8LbigRnpKlKZvjAepGmdoO4XZgwUVcpt//n7 sle0kdnShBB3y5D8tsJeSuilafgQq/1z/Mo+nFOM5Jk3EZ8sl03LJHzayC9jTRlah3Rsjp84i/t pzivH2g5APDq2B3cAxn2JWP8qFf9FKehBzm9vnO5B2Qzud0EsLj5cAllduzaw== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-3.265200-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768678-wfB5ZPqTBC4G X-PPE-DISP: 1602768678;wfB5ZPqTBC4G Subject: [dpdk-dev] [PATCH v2 10/11] net/failsafe: check eth dev stop status 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 rte_eth_dev_stop() return value was changed from void to int, so this patch modify usage of this function across net/failsafe according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- drivers/net/failsafe/failsafe_ether.c | 4 +++- drivers/net/failsafe/failsafe_ops.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c index f18935a7e2..7c6e28dc93 100644 --- a/drivers/net/failsafe/failsafe_ether.c +++ b/drivers/net/failsafe/failsafe_ether.c @@ -282,7 +282,9 @@ fs_dev_remove(struct sub_device *sdev) switch (sdev->state) { case DEV_STARTED: failsafe_rx_intr_uninstall_subdevice(sdev); - rte_eth_dev_stop(PORT_ID(sdev)); + ret = rte_eth_dev_stop(PORT_ID(sdev)); + if (ret < 0) + ERROR("Failed to stop sub-device %u", SUB_ID(sdev)); sdev->state = DEV_ACTIVE; /* fallthrough */ case DEV_ACTIVE: diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c index 0ce7dfc8a6..5bcc250b5e 100644 --- a/drivers/net/failsafe/failsafe_ops.c +++ b/drivers/net/failsafe/failsafe_ops.c @@ -147,7 +147,9 @@ fs_dev_start(struct rte_eth_dev *dev) if (ret) { if (!fs_err(sdev, ret)) continue; - rte_eth_dev_stop(PORT_ID(sdev)); + if (fs_err(sdev, rte_eth_dev_stop(PORT_ID(sdev))) < 0) + ERROR("Failed to stop sub-device %u", + SUB_ID(sdev)); fs_unlock(dev, 0); return ret; } From patchwork Thu Oct 15 13:30:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 80924 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 300CBA04DB; Thu, 15 Oct 2020 15:35:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2896A1E981; Thu, 15 Oct 2020 15:31:38 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 85B051E960 for ; Thu, 15 Oct 2020 15:31:28 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.7.65.61]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 0EBC06011F; Thu, 15 Oct 2020 13:31:27 +0000 (UTC) Received: from us4-mdac16-29.ut7.mdlocal (unknown [10.7.66.139]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 09245800B0; Thu, 15 Oct 2020 13:31:27 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.7.66.37]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 8174680055; Thu, 15 Oct 2020 13:31:24 +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 5FBD9B4008C; Thu, 15 Oct 2020 13:31:23 +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; Thu, 15 Oct 2020 14:31:15 +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; Thu, 15 Oct 2020 14:31:15 +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 09FDVEHv025779; Thu, 15 Oct 2020 14:31:14 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id A1A911613A9; Thu, 15 Oct 2020 14:31:14 +0100 (BST) From: Andrew Rybchenko To: "John W. Linville" , Ciara Loftus , Qi Zhang , Shepard Siegel , Ed Czeck , "John Miller" , Igor Russkikh , Pavel Belous , Steven Webster , Matt Peters , Somalapuram Amaranath , Rasesh Mody , Shahed Shaikh , "Ajit Khaparde" , Somnath Kotur , Chas Williams , "Min Hu (Connor)" , Rahul Lakkireddy , Hemant Agrawal , Sachin Saxena , Jeff Guo , Haiyue Wang , Marcin Wojtas , "Michal Krawczyk" , Guy Tzalik , "Evgeny Schemeilin" , Igor Chauskin , "Gagandeep Singh" , John Daley , Hyong Youb Kim , Gaetan Rivet , Xiao Wang , Ziyang Xuan , Xiaoyun Wang , Guoyang Zhou , "Wei Hu (Xavier)" , Yisen Zhuang , Beilei Xing , Jingjing Wu , Qiming Yang , "Alfredo Cardigliano" , Rosen Xu , "Ferruh Yigit" , Shijith Thotton , Srisivasubramanian Srinivasan , Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko , Zyta Szpak , Liron Himi , Stephen Hemminger , "K. Y. Srinivasan" , Haiyang Zhang , Long Li , Martin Spinler , Heinrich Kuhn , Tetsuya Mukawa , Harman Kalra , Jerin Jacob , Nithin Dabilpuram , "Kiran Kumar K" , Akhil Goyal , "Bruce Richardson" , Andrew Rybchenko , Jasvinder Singh , Cristian Dumitrescu , Keith Wiles , Maciej Czekaj , "Maxime Coquelin" , Chenbo Xia , Zhihong Wang , Yong Wang , Thomas Monjalon CC: , Ivan Ilchenko Date: Thu, 15 Oct 2020 14:30:45 +0100 Message-ID: <1602768646-13142-12-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> References: <1602682146-4722-1-git-send-email-arybchenko@solarflare.com> <1602768646-13142-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25726.003 X-TM-AS-Result: No-3.051200-8.000000-10 X-TMASE-MatchedRID: KjD1bwMIPIXed0Ij9t5iQzKVTrGMDe/Dkos2tunL8DRjLp8Cm8vwF4gg kHfdF/Q7/7yMlJ1P+1GF0jPFsyHqkqPKM9uZBgjQNVRz+HwqL4JUE+MH85/4VB3RY4pGTCyHiiG PD3c6GvPTQUky8ZUXixqIdIVY5XOMaLxhTaCJKI9l1tleYYUuJ0loPruIq9jTBph69XjMbdlAHO g8qEtqyI+pAn19BHXOieYnNKQobKjTLBkSptG5BHYZxYoZm58FBnIRIVcCWN9SMUnCl2ZytO1vA bHwESsvl78RAUnUG5BF0kv+vQOmAPr252PTOmm/R/j040fRFpJezmeoa8MJ88c322cceBeE+L9A 4dCyMAmVdIB0POZpBEqNKUpOIfRVoqIp1AUZB5pbUzvsaHW6BpyqUJ2uHKFAGiPTaHrEWqtaKkw DKTo9epsVl52/xwxWrIptOCER/1Qxsx3JLN9uSQe06kQGFaIWMVx/3ZYby7+HX0cDZiY+DVg96P 8uI6M7iin/3K5DZ0aVG2JkMF2AH4+BOETL3RcxLyz9QvAyHjrnaaW2UTafyI+Ixb7djOSCCxjh3 p6X5X/O2T4AVVhMQwHzcBosy7NyU2cj/ktxlWAdjoPUYuBywNoKfgOoKJc23xlVAWOrjgEPsPha 9Ebuwm7R4YbMNOKD3alQuZOtjAgZkSsIpkaLIiMJO6daqdyWzmsVTBhahkqHv8otQeUIQlXnLj+ w+T4/0Qwb7vK5Vvhf0/WKe2O4micXXhtbe8tm8pHTorDcPMqR4K01VY0nv2i2BhDPfjxnBdktVe UMQ91729gJ2iUcAVlRYUDvlF3ucKqcXQuOZ6aeAiCmPx4NwJuJ+Pb8n/VxSnQ4MjwaO9cqtq5d3 cxkNY3vcDTzyGs12kC7SwvGlKhDwb7Jglhh1lFkOwaJdCKgGObbx/Uctjc= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--3.051200-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25726.003 X-MDID: 1602768685-nIcXutQ0QYGk X-PPE-DISP: 1602768685;nIcXutQ0QYGk Subject: [dpdk-dev] [PATCH v2 11/11] ethdev: change stop device callback 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 eth_dev_stop_t return value from void to int. Make eth_dev_stop_t implementations across all drivers to return negative errno values if case of error conditions. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko Reviewed-by: Ferruh Yigit Reviewed-by: Rosen Xu --- app/test/virtual_pmd.c | 4 ++- drivers/net/af_packet/rte_eth_af_packet.c | 3 +- drivers/net/af_xdp/rte_eth_af_xdp.c | 3 +- drivers/net/ark/ark_ethdev.c | 8 +++-- drivers/net/atlantic/atl_ethdev.c | 11 ++++--- drivers/net/avp/avp_ethdev.c | 6 ++-- drivers/net/axgbe/axgbe_ethdev.c | 8 +++-- drivers/net/bnx2x/bnx2x_ethdev.c | 6 ++-- drivers/net/bnxt/bnxt_ethdev.c | 14 ++++++--- drivers/net/bnxt/bnxt_reps.c | 15 ++++++--- drivers/net/bnxt/bnxt_reps.h | 4 +-- drivers/net/bonding/eth_bond_private.h | 2 +- drivers/net/bonding/rte_eth_bond_pmd.c | 17 ++++++++--- drivers/net/cxgbe/cxgbe_ethdev.c | 6 ++-- drivers/net/cxgbe/cxgbe_pfvf.h | 2 +- drivers/net/dpaa/dpaa_ethdev.c | 11 ++++--- drivers/net/dpaa2/dpaa2_ethdev.c | 6 ++-- drivers/net/e1000/em_ethdev.c | 15 ++++++--- drivers/net/e1000/igb_ethdev.c | 26 ++++++++++------ drivers/net/ena/ena_ethdev.c | 11 ++++--- drivers/net/enetc/enetc_ethdev.c | 9 ++++-- drivers/net/enic/enic_ethdev.c | 6 ++-- drivers/net/enic/enic_vf_representor.c | 6 ++-- drivers/net/failsafe/failsafe_ops.c | 23 +++++++++++--- drivers/net/fm10k/fm10k_ethdev.c | 11 +++++-- drivers/net/hinic/hinic_pmd_ethdev.c | 11 ++++--- drivers/net/hns3/hns3_ethdev.c | 9 ++++-- drivers/net/hns3/hns3_ethdev_vf.c | 9 ++++-- drivers/net/i40e/i40e_ethdev.c | 12 +++++--- drivers/net/i40e/i40e_ethdev_vf.c | 13 +++++--- drivers/net/i40e/i40e_vf_representor.c | 3 +- drivers/net/iavf/iavf_ethdev.c | 14 ++++++--- drivers/net/ice/ice_dcf_ethdev.c | 6 ++-- drivers/net/ice/ice_ethdev.c | 13 +++++--- drivers/net/igc/igc_ethdev.c | 11 ++++--- drivers/net/ionic/ionic_ethdev.c | 6 ++-- drivers/net/ipn3ke/ipn3ke_representor.c | 4 ++- drivers/net/ixgbe/ixgbe_ethdev.c | 37 +++++++++++++---------- drivers/net/ixgbe/ixgbe_vf_representor.c | 3 +- drivers/net/kni/rte_eth_kni.c | 13 +++++--- drivers/net/liquidio/lio_ethdev.c | 17 ++++++++--- drivers/net/mlx4/mlx4.c | 8 +++-- drivers/net/mlx5/mlx5.h | 2 +- drivers/net/mlx5/mlx5_trigger.c | 4 ++- drivers/net/mvneta/mvneta_ethdev.c | 12 +++++--- drivers/net/mvpp2/mrvl_ethdev.c | 4 +-- drivers/net/netvsc/hn_ethdev.c | 10 +++--- drivers/net/netvsc/hn_var.h | 2 +- drivers/net/netvsc/hn_vf.c | 13 ++++++-- drivers/net/nfb/nfb_ethdev.c | 9 ++++-- drivers/net/nfp/nfp_net.c | 6 ++-- drivers/net/null/rte_eth_null.c | 6 ++-- drivers/net/octeontx/octeontx_ethdev.c | 10 +++--- drivers/net/octeontx2/otx2_ethdev.c | 4 ++- drivers/net/pcap/rte_eth_pcap.c | 4 ++- drivers/net/pfe/pfe_ethdev.c | 16 ++++++---- drivers/net/qede/qede_ethdev.c | 15 ++++++--- drivers/net/ring/rte_eth_ring.c | 8 +++-- drivers/net/sfc/sfc_ethdev.c | 4 ++- drivers/net/softnic/rte_eth_softnic.c | 4 ++- drivers/net/szedata2/rte_eth_szedata2.c | 24 ++++++++++----- drivers/net/tap/rte_eth_tap.c | 4 ++- drivers/net/thunderx/nicvf_ethdev.c | 6 ++-- drivers/net/vhost/rte_eth_vhost.c | 10 +++--- drivers/net/virtio/virtio_ethdev.c | 11 ++++--- drivers/net/vmxnet3/vmxnet3_ethdev.c | 13 +++++--- lib/librte_ethdev/rte_ethdev.c | 7 +++-- lib/librte_ethdev/rte_ethdev_driver.h | 2 +- lib/librte_ethdev/rte_ethdev_trace.h | 3 +- 69 files changed, 417 insertions(+), 218 deletions(-) diff --git a/app/test/virtual_pmd.c b/app/test/virtual_pmd.c index 4bd4d1c9ad..2c24c9b3f5 100644 --- a/app/test/virtual_pmd.c +++ b/app/test/virtual_pmd.c @@ -48,7 +48,7 @@ virtual_ethdev_start_fail(struct rte_eth_dev *eth_dev __rte_unused) return -1; } -static void virtual_ethdev_stop(struct rte_eth_dev *eth_dev __rte_unused) +static int virtual_ethdev_stop(struct rte_eth_dev *eth_dev __rte_unused) { void *pkt = NULL; struct virtual_ethdev_private *prv = eth_dev->data->dev_private; @@ -60,6 +60,8 @@ static void virtual_ethdev_stop(struct rte_eth_dev *eth_dev __rte_unused) while (rte_ring_dequeue(prv->tx_queue, &pkt) != -ENOENT) rte_pktmbuf_free(pkt); + + return 0; } static int diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index 25876224f8..cb1c39b027 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -272,7 +272,7 @@ eth_dev_start(struct rte_eth_dev *dev) /* * This function gets called when the current port gets stopped. */ -static void +static int eth_dev_stop(struct rte_eth_dev *dev) { unsigned i; @@ -296,6 +296,7 @@ eth_dev_stop(struct rte_eth_dev *dev) } dev->data->dev_link.link_status = ETH_LINK_DOWN; + return 0; } static int diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index 0562e58696..1c1e3cadd6 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -599,10 +599,11 @@ eth_dev_start(struct rte_eth_dev *dev) } /* This function gets called when the current port gets stopped. */ -static void +static int eth_dev_stop(struct rte_eth_dev *dev) { dev->data->dev_link.link_status = ETH_LINK_DOWN; + return 0; } /* Find ethdev in list */ diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index e3b1347769..f86a87fb47 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -29,7 +29,7 @@ static int ark_config_device(struct rte_eth_dev *dev); static int eth_ark_dev_uninit(struct rte_eth_dev *eth_dev); static int eth_ark_dev_configure(struct rte_eth_dev *dev); static int eth_ark_dev_start(struct rte_eth_dev *dev); -static void eth_ark_dev_stop(struct rte_eth_dev *dev); +static int eth_ark_dev_stop(struct rte_eth_dev *dev); static int eth_ark_dev_close(struct rte_eth_dev *dev); static int eth_ark_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); @@ -584,7 +584,7 @@ eth_ark_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int eth_ark_dev_stop(struct rte_eth_dev *dev) { uint16_t i; @@ -593,7 +593,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) struct ark_mpu_t *mpu; if (ark->started == 0) - return; + return 0; ark->started = 0; /* Stop the extension first */ @@ -672,6 +672,8 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) ark_pktchkr_dump_stats(ark->pc); ark_pktchkr_stop(ark->pc); } + + return 0; } static int diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index 2217511ca0..310d8fe79c 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -17,7 +17,7 @@ static int eth_atl_dev_init(struct rte_eth_dev *eth_dev); static int atl_dev_configure(struct rte_eth_dev *dev); static int atl_dev_start(struct rte_eth_dev *dev); -static void atl_dev_stop(struct rte_eth_dev *dev); +static int atl_dev_stop(struct rte_eth_dev *dev); static int atl_dev_set_link_up(struct rte_eth_dev *dev); static int atl_dev_set_link_down(struct rte_eth_dev *dev); static int atl_dev_close(struct rte_eth_dev *dev); @@ -599,7 +599,7 @@ atl_dev_start(struct rte_eth_dev *dev) /* * Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void +static int atl_dev_stop(struct rte_eth_dev *dev) { struct rte_eth_link link; @@ -639,6 +639,8 @@ atl_dev_stop(struct rte_eth_dev *dev) rte_free(intr_handle->intr_vec); intr_handle->intr_vec = NULL; } + + return 0; } /* @@ -689,6 +691,7 @@ atl_dev_close(struct rte_eth_dev *dev) struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct aq_hw_s *hw; + int ret; PMD_INIT_FUNC_TRACE(); @@ -697,7 +700,7 @@ atl_dev_close(struct rte_eth_dev *dev) hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private); - atl_dev_stop(dev); + ret = atl_dev_stop(dev); atl_free_queues(dev); @@ -712,7 +715,7 @@ atl_dev_close(struct rte_eth_dev *dev) pthread_mutex_destroy(&hw->mbox_mutex); - return 0; + return ret; } static int diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c index 95fdb57451..67f16623c5 100644 --- a/drivers/net/avp/avp_ethdev.c +++ b/drivers/net/avp/avp_ethdev.c @@ -37,7 +37,7 @@ static int avp_dev_create(struct rte_pci_device *pci_dev, static int avp_dev_configure(struct rte_eth_dev *dev); static int avp_dev_start(struct rte_eth_dev *dev); -static void avp_dev_stop(struct rte_eth_dev *dev); +static int avp_dev_stop(struct rte_eth_dev *dev); static int avp_dev_close(struct rte_eth_dev *dev); static int avp_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); @@ -2075,7 +2075,7 @@ avp_dev_start(struct rte_eth_dev *eth_dev) return ret; } -static void +static int avp_dev_stop(struct rte_eth_dev *eth_dev) { struct avp_dev *avp = AVP_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); @@ -2084,6 +2084,7 @@ avp_dev_stop(struct rte_eth_dev *eth_dev) rte_spinlock_lock(&avp->lock); if (avp->flags & AVP_F_DETACHED) { PMD_DRV_LOG(ERR, "Operation not supported during VM live migration\n"); + ret = -ENOTSUP; goto unlock; } @@ -2099,6 +2100,7 @@ avp_dev_stop(struct rte_eth_dev *eth_dev) unlock: rte_spinlock_unlock(&avp->lock); + return ret; } static int diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c index cf085487cc..ce30a4f22c 100644 --- a/drivers/net/axgbe/axgbe_ethdev.c +++ b/drivers/net/axgbe/axgbe_ethdev.c @@ -13,7 +13,7 @@ static int eth_axgbe_dev_init(struct rte_eth_dev *eth_dev); static int axgbe_dev_configure(struct rte_eth_dev *dev); static int axgbe_dev_start(struct rte_eth_dev *dev); -static void axgbe_dev_stop(struct rte_eth_dev *dev); +static int axgbe_dev_stop(struct rte_eth_dev *dev); static void axgbe_dev_interrupt_handler(void *param); static int axgbe_dev_close(struct rte_eth_dev *dev); static int axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); @@ -386,7 +386,7 @@ axgbe_dev_start(struct rte_eth_dev *dev) } /* Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void +static int axgbe_dev_stop(struct rte_eth_dev *dev) { struct axgbe_port *pdata = dev->data->dev_private; @@ -396,7 +396,7 @@ axgbe_dev_stop(struct rte_eth_dev *dev) rte_intr_disable(&pdata->pci_dev->intr_handle); if (rte_bit_relaxed_get32(AXGBE_STOPPED, &pdata->dev_state)) - return; + return 0; rte_bit_relaxed_set32(AXGBE_STOPPED, &pdata->dev_state); axgbe_dev_disable_tx(dev); @@ -406,6 +406,8 @@ axgbe_dev_stop(struct rte_eth_dev *dev) pdata->hw_if.exit(pdata); memset(&dev->data->dev_link, 0, sizeof(struct rte_eth_link)); rte_bit_relaxed_set32(AXGBE_DOWN, &pdata->dev_state); + + return 0; } static int diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c index ce9df87489..28f8aaeb4d 100644 --- a/drivers/net/bnx2x/bnx2x_ethdev.c +++ b/drivers/net/bnx2x/bnx2x_ethdev.c @@ -251,7 +251,7 @@ bnx2x_dev_start(struct rte_eth_dev *dev) return ret; } -static void +static int bnx2x_dev_stop(struct rte_eth_dev *dev) { struct bnx2x_softc *sc = dev->data->dev_private; @@ -278,10 +278,10 @@ bnx2x_dev_stop(struct rte_eth_dev *dev) ret = bnx2x_nic_unload(sc, UNLOAD_NORMAL, FALSE); if (ret) { PMD_DRV_LOG(DEBUG, sc, "bnx2x_nic_unload failed (%d)", ret); - return; + return ret; } - return; + return 0; } static int diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index b4654ec6af..1fa7b0c2d9 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1345,12 +1345,13 @@ static void bnxt_free_switch_domain(struct bnxt *bp) } /* Unload the driver, release resources */ -static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) +static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct rte_eth_link link; + int ret; eth_dev->data->dev_started = 0; eth_dev->data->scattered_rx = 0; @@ -1365,7 +1366,9 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) rte_intr_disable(intr_handle); /* Stop the child representors for this device */ - bnxt_rep_stop_all(bp); + ret = bnxt_rep_stop_all(bp); + if (ret != 0) + return ret; /* delete the bnxt ULP port details */ bnxt_ulp_port_deinit(bp); @@ -1406,11 +1409,14 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) /* All filters are deleted on a port stop. */ if (BNXT_FLOW_XSTATS_EN(bp)) bp->flow_stat->flow_count = 0; + + return 0; } static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; + int ret = 0; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -1421,7 +1427,7 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) bnxt_cancel_fc_thread(bp); if (eth_dev->data->dev_started) - bnxt_dev_stop_op(eth_dev); + ret = bnxt_dev_stop_op(eth_dev); bnxt_free_switch_domain(bp); @@ -1447,7 +1453,7 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) rte_free(bp->grp_info); bp->grp_info = NULL; - return 0; + return ret; } static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 74a76fce57..fb171245df 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -476,7 +476,7 @@ static int bnxt_vfr_free(struct bnxt_representor *vfr) return rc; } -void bnxt_rep_dev_stop_op(struct rte_eth_dev *eth_dev) +int bnxt_rep_dev_stop_op(struct rte_eth_dev *eth_dev) { struct bnxt_representor *vfr_bp = eth_dev->data->dev_private; @@ -492,6 +492,8 @@ void bnxt_rep_dev_stop_op(struct rte_eth_dev *eth_dev) eth_dev->data->dev_link.link_status = 0; bnxt_rep_free_rx_mbufs(vfr_bp); + + return 0; } int bnxt_rep_dev_close_op(struct rte_eth_dev *eth_dev) @@ -808,19 +810,24 @@ int bnxt_rep_stats_reset_op(struct rte_eth_dev *eth_dev) return 0; } -void bnxt_rep_stop_all(struct bnxt *bp) +int bnxt_rep_stop_all(struct bnxt *bp) { uint16_t vf_id; struct rte_eth_dev *rep_eth_dev; + int ret; /* No vfrep ports just exit */ if (!bp->rep_info) - return; + return 0; for (vf_id = 0; vf_id < BNXT_MAX_VF_REPS; vf_id++) { rep_eth_dev = bp->rep_info[vf_id].vfr_eth_dev; if (!rep_eth_dev) continue; - bnxt_rep_dev_stop_op(rep_eth_dev); + ret = bnxt_rep_dev_stop_op(rep_eth_dev); + if (ret != 0) + return ret; } + + return 0; } diff --git a/drivers/net/bnxt/bnxt_reps.h b/drivers/net/bnxt/bnxt_reps.h index a019530094..916769ca67 100644 --- a/drivers/net/bnxt/bnxt_reps.h +++ b/drivers/net/bnxt/bnxt_reps.h @@ -44,10 +44,10 @@ int bnxt_rep_tx_queue_setup_op(struct rte_eth_dev *eth_dev, tx_conf); void bnxt_rep_rx_queue_release_op(void *rx_queue); void bnxt_rep_tx_queue_release_op(void *tx_queue); -void bnxt_rep_dev_stop_op(struct rte_eth_dev *eth_dev); +int bnxt_rep_dev_stop_op(struct rte_eth_dev *eth_dev); int bnxt_rep_dev_close_op(struct rte_eth_dev *eth_dev); int bnxt_rep_stats_get_op(struct rte_eth_dev *eth_dev, struct rte_eth_stats *stats); int bnxt_rep_stats_reset_op(struct rte_eth_dev *eth_dev); -void bnxt_rep_stop_all(struct bnxt *bp); +int bnxt_rep_stop_all(struct bnxt *bp); #endif /* _BNXT_REPS_H_ */ diff --git a/drivers/net/bonding/eth_bond_private.h b/drivers/net/bonding/eth_bond_private.h index 62e3a9dbf3..8f198bd50e 100644 --- a/drivers/net/bonding/eth_bond_private.h +++ b/drivers/net/bonding/eth_bond_private.h @@ -316,7 +316,7 @@ bond_tlb_enable(struct bond_dev_private *internals); void bond_tlb_activate_slave(struct bond_dev_private *internals); -void +int bond_ethdev_stop(struct rte_eth_dev *eth_dev); int diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index b75646117c..8ae017cd42 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -2049,11 +2049,12 @@ bond_ethdev_free_queues(struct rte_eth_dev *dev) } } -void +int bond_ethdev_stop(struct rte_eth_dev *eth_dev) { struct bond_dev_private *internals = eth_dev->data->dev_private; uint16_t i; + int ret; if (internals->mode == BONDING_MODE_8023AD) { struct port *port; @@ -2092,10 +2093,17 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev) internals->active_slave_count, slave_id) != internals->active_slave_count) { internals->slaves[i].last_link_status = 0; - rte_eth_dev_stop(slave_id); + ret = rte_eth_dev_stop(slave_id); + if (ret != 0) { + RTE_BOND_LOG(ERR, "Failed to stop device on port %u", + slave_id); + return ret; + } deactivate_slave(eth_dev, slave_id); } } + + return 0; } int @@ -3428,6 +3436,7 @@ bond_remove(struct rte_vdev_device *dev) struct rte_eth_dev *eth_dev; struct bond_dev_private *internals; const char *name; + int ret = 0; if (!dev) return -EINVAL; @@ -3450,12 +3459,12 @@ bond_remove(struct rte_vdev_device *dev) return -EBUSY; if (eth_dev->data->dev_started == 1) { - bond_ethdev_stop(eth_dev); + ret = bond_ethdev_stop(eth_dev); bond_ethdev_close(eth_dev); } rte_eth_dev_release_port(eth_dev); - return 0; + return ret; } /* this part will resolve the slave portids after all the other pdev and vdev diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c index 16beb2d435..29c061e505 100644 --- a/drivers/net/cxgbe/cxgbe_ethdev.c +++ b/drivers/net/cxgbe/cxgbe_ethdev.c @@ -416,7 +416,7 @@ int cxgbe_dev_start(struct rte_eth_dev *eth_dev) /* * Stop device: disable rx and tx functions to allow for reconfiguring. */ -void cxgbe_dev_stop(struct rte_eth_dev *eth_dev) +int cxgbe_dev_stop(struct rte_eth_dev *eth_dev) { struct port_info *pi = eth_dev->data->dev_private; struct adapter *adapter = pi->adapter; @@ -424,7 +424,7 @@ void cxgbe_dev_stop(struct rte_eth_dev *eth_dev) CXGBE_FUNC_TRACE(); if (!(adapter->flags & FULL_INIT_DONE)) - return; + return 0; cxgbe_down(pi); @@ -434,6 +434,8 @@ void cxgbe_dev_stop(struct rte_eth_dev *eth_dev) */ t4_sge_eth_clear_queues(pi); eth_dev->data->scattered_rx = 0; + + return 0; } int cxgbe_dev_configure(struct rte_eth_dev *eth_dev) diff --git a/drivers/net/cxgbe/cxgbe_pfvf.h b/drivers/net/cxgbe/cxgbe_pfvf.h index 69d91639e9..801d6995d1 100644 --- a/drivers/net/cxgbe/cxgbe_pfvf.h +++ b/drivers/net/cxgbe/cxgbe_pfvf.h @@ -18,7 +18,7 @@ void cxgbe_dev_rx_queue_release(void *q); void cxgbe_dev_tx_queue_release(void *q); -void cxgbe_dev_stop(struct rte_eth_dev *eth_dev); +int cxgbe_dev_stop(struct rte_eth_dev *eth_dev); int cxgbe_dev_close(struct rte_eth_dev *eth_dev); int cxgbe_dev_info_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *device_info); diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index af47c196ae..4a4570a8d7 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -415,7 +415,7 @@ static int dpaa_eth_dev_start(struct rte_eth_dev *dev) return 0; } -static void dpaa_eth_dev_stop(struct rte_eth_dev *dev) +static int dpaa_eth_dev_stop(struct rte_eth_dev *dev) { struct fman_if *fif = dev->process_private; @@ -424,6 +424,8 @@ static void dpaa_eth_dev_stop(struct rte_eth_dev *dev) if (!fif->is_shared_mac) fman_if_disable_rx(fif); dev->tx_pkt_burst = dpaa_eth_tx_drop_all; + + return 0; } static int dpaa_eth_dev_close(struct rte_eth_dev *dev) @@ -436,6 +438,7 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) struct rte_eth_link *link = &dev->data->dev_link; struct dpaa_if *dpaa_intf = dev->data->dev_private; int loop; + int ret; PMD_INIT_FUNC_TRACE(); @@ -457,7 +460,7 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) intr_handle = &dpaa_dev->intr_handle; __fif = container_of(fif, struct __fman_if, __if); - dpaa_eth_dev_stop(dev); + ret = dpaa_eth_dev_stop(dev); /* Reset link to autoneg */ if (link->link_status && !link->link_autoneg) @@ -507,7 +510,7 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) dev->rx_pkt_burst = NULL; dev->tx_pkt_burst = NULL; - return 0; + return ret; } static int @@ -1293,7 +1296,7 @@ static int dpaa_link_down(struct rte_eth_dev *dev) if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) dpaa_update_link_status(__fif->node_name, ETH_LINK_DOWN); else - dpaa_eth_dev_stop(dev); + return dpaa_eth_dev_stop(dev); return 0; } diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index d8624514df..3a17d54e2e 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -1195,7 +1195,7 @@ dpaa2_dev_start(struct rte_eth_dev *dev) * This routine disables all traffic on the adapter by issuing a * global reset on the MAC. */ -static void +static int dpaa2_dev_stop(struct rte_eth_dev *dev) { struct dpaa2_dev_priv *priv = dev->data->dev_private; @@ -1227,12 +1227,14 @@ dpaa2_dev_stop(struct rte_eth_dev *dev) if (ret) { DPAA2_PMD_ERR("Failure (ret %d) in disabling dpni %d dev", ret, priv->hw_id); - return; + return ret; } /* clear the recorded link status */ memset(&link, 0, sizeof(link)); rte_eth_linkstatus_set(dev, &link); + + return 0; } static int diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index d050eb478a..fe567cc3d6 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -33,7 +33,7 @@ static int eth_em_configure(struct rte_eth_dev *dev); static int eth_em_start(struct rte_eth_dev *dev); -static void eth_em_stop(struct rte_eth_dev *dev); +static int eth_em_stop(struct rte_eth_dev *dev); static int eth_em_close(struct rte_eth_dev *dev); static int eth_em_promiscuous_enable(struct rte_eth_dev *dev); static int eth_em_promiscuous_disable(struct rte_eth_dev *dev); @@ -533,7 +533,9 @@ eth_em_start(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); - eth_em_stop(dev); + ret = eth_em_stop(dev); + if (ret != 0) + return ret; e1000_power_up_phy(hw); @@ -709,7 +711,7 @@ eth_em_start(struct rte_eth_dev *dev) * global reset on the MAC. * **********************************************************************/ -static void +static int eth_em_stop(struct rte_eth_dev *dev) { struct rte_eth_link link; @@ -751,6 +753,8 @@ eth_em_stop(struct rte_eth_dev *dev) rte_free(intr_handle->intr_vec); intr_handle->intr_vec = NULL; } + + return 0; } static int @@ -761,11 +765,12 @@ eth_em_close(struct rte_eth_dev *dev) E1000_DEV_PRIVATE(dev->data->dev_private); struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - eth_em_stop(dev); + ret = eth_em_stop(dev); adapter->stopped = 1; em_dev_free_queues(dev); e1000_phy_hw_reset(hw); @@ -781,7 +786,7 @@ eth_em_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(intr_handle, eth_em_interrupt_handler, dev); - return 0; + return ret; } static int diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index cb3d97e2a3..33cda52e08 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -74,7 +74,7 @@ static int eth_igb_configure(struct rte_eth_dev *dev); static int eth_igb_start(struct rte_eth_dev *dev); -static void eth_igb_stop(struct rte_eth_dev *dev); +static int eth_igb_stop(struct rte_eth_dev *dev); static int eth_igb_dev_set_link_up(struct rte_eth_dev *dev); static int eth_igb_dev_set_link_down(struct rte_eth_dev *dev); static int eth_igb_close(struct rte_eth_dev *dev); @@ -154,7 +154,7 @@ static int eth_igb_default_mac_addr_set(struct rte_eth_dev *dev, static void igbvf_intr_disable(struct e1000_hw *hw); static int igbvf_dev_configure(struct rte_eth_dev *dev); static int igbvf_dev_start(struct rte_eth_dev *dev); -static void igbvf_dev_stop(struct rte_eth_dev *dev); +static int igbvf_dev_stop(struct rte_eth_dev *dev); static int igbvf_dev_close(struct rte_eth_dev *dev); static int igbvf_promiscuous_enable(struct rte_eth_dev *dev); static int igbvf_promiscuous_disable(struct rte_eth_dev *dev); @@ -1441,7 +1441,7 @@ eth_igb_start(struct rte_eth_dev *dev) * global reset on the MAC. * **********************************************************************/ -static void +static int eth_igb_stop(struct rte_eth_dev *dev) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1452,7 +1452,7 @@ eth_igb_stop(struct rte_eth_dev *dev) E1000_DEV_PRIVATE(dev->data->dev_private); if (adapter->stopped) - return; + return 0; eth_igb_rxtx_control(dev, false); @@ -1497,6 +1497,8 @@ eth_igb_stop(struct rte_eth_dev *dev) } adapter->stopped = true; + + return 0; } static int @@ -1534,11 +1536,12 @@ eth_igb_close(struct rte_eth_dev *dev) struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct e1000_filter_info *filter_info = E1000_DEV_PRIVATE_TO_FILTER_INFO(dev->data->dev_private); + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - eth_igb_stop(dev); + ret = eth_igb_stop(dev); e1000_phy_hw_reset(hw); igb_release_manageability(hw); @@ -1598,7 +1601,7 @@ eth_igb_close(struct rte_eth_dev *dev) /* clear all the filters list */ igb_filterlist_flush(dev); - return 0; + return ret; } /* @@ -3340,7 +3343,7 @@ igbvf_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int igbvf_dev_stop(struct rte_eth_dev *dev) { struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); @@ -3349,7 +3352,7 @@ igbvf_dev_stop(struct rte_eth_dev *dev) E1000_DEV_PRIVATE(dev->data->dev_private); if (adapter->stopped) - return; + return 0; PMD_INIT_FUNC_TRACE(); @@ -3374,6 +3377,8 @@ igbvf_dev_stop(struct rte_eth_dev *dev) } adapter->stopped = true; + + return 0; } static int @@ -3382,6 +3387,7 @@ igbvf_dev_close(struct rte_eth_dev *dev) struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct rte_ether_addr addr; struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + int ret; PMD_INIT_FUNC_TRACE(); @@ -3390,7 +3396,9 @@ igbvf_dev_close(struct rte_eth_dev *dev) e1000_reset_hw(hw); - igbvf_dev_stop(dev); + ret = igbvf_dev_stop(dev); + if (ret != 0) + return ret; igb_dev_free_queues(dev); diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index d32fa43837..e8599a8e90 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -198,7 +198,7 @@ static void ena_init_rings(struct ena_adapter *adapter, bool disable_meta_caching); static int ena_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static int ena_start(struct rte_eth_dev *dev); -static void ena_stop(struct rte_eth_dev *dev); +static int ena_stop(struct rte_eth_dev *dev); static int ena_close(struct rte_eth_dev *dev); static int ena_dev_reset(struct rte_eth_dev *dev); static int ena_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats); @@ -505,12 +505,13 @@ static int ena_close(struct rte_eth_dev *dev) struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct ena_adapter *adapter = dev->data->dev_private; + int ret = 0; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; if (adapter->state == ENA_ADAPTER_STATE_RUNNING) - ena_stop(dev); + ret = ena_stop(dev); adapter->state = ENA_ADAPTER_STATE_CLOSED; ena_rx_queue_release_all(dev); @@ -530,7 +531,7 @@ static int ena_close(struct rte_eth_dev *dev) */ dev->data->mac_addrs = NULL; - return 0; + return ret; } static int @@ -1100,7 +1101,7 @@ static int ena_start(struct rte_eth_dev *dev) return rc; } -static void ena_stop(struct rte_eth_dev *dev) +static int ena_stop(struct rte_eth_dev *dev) { struct ena_adapter *adapter = dev->data->dev_private; struct ena_com_dev *ena_dev = &adapter->ena_dev; @@ -1118,6 +1119,8 @@ static void ena_stop(struct rte_eth_dev *dev) ++adapter->dev_stats.dev_stop; adapter->state = ENA_ADAPTER_STATE_STOPPED; + + return 0; } static int ena_create_io_queue(struct ena_ring *ring) diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index b3dec7e64d..50bb3f096b 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -45,7 +45,7 @@ enetc_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int enetc_dev_stop(struct rte_eth_dev *dev) { struct enetc_eth_hw *hw = @@ -61,6 +61,8 @@ enetc_dev_stop(struct rte_eth_dev *dev) val = enetc_port_rd(enetc_hw, ENETC_PM0_CMD_CFG); enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG, val & (~(ENETC_PM0_TX_EN | ENETC_PM0_RX_EN))); + + return 0; } static const uint32_t * @@ -549,12 +551,13 @@ static int enetc_dev_close(struct rte_eth_dev *dev) { uint16_t i; + int ret; PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - enetc_dev_stop(dev); + ret = enetc_dev_stop(dev); for (i = 0; i < dev->data->nb_rx_queues; i++) { enetc_rx_queue_release(dev->data->rx_queues[i]); @@ -571,7 +574,7 @@ enetc_dev_close(struct rte_eth_dev *dev) if (rte_eal_iova_mode() == RTE_IOVA_PA) dpaax_iova_table_depopulate(); - return 0; + return ret; } static int diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index 60ee5e01de..4a34c0ef83 100644 --- a/drivers/net/enic/enic_ethdev.c +++ b/drivers/net/enic/enic_ethdev.c @@ -428,19 +428,21 @@ static int enicpmd_dev_start(struct rte_eth_dev *eth_dev) /* * Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void enicpmd_dev_stop(struct rte_eth_dev *eth_dev) +static int enicpmd_dev_stop(struct rte_eth_dev *eth_dev) { struct rte_eth_link link; struct enic *enic = pmd_priv(eth_dev); if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; ENICPMD_FUNC_TRACE(); enic_disable(enic); memset(&link, 0, sizeof(link)); rte_eth_linkstatus_set(eth_dev, &link); + + return 0; } /* diff --git a/drivers/net/enic/enic_vf_representor.c b/drivers/net/enic/enic_vf_representor.c index 169c611a68..984a754e35 100644 --- a/drivers/net/enic/enic_vf_representor.c +++ b/drivers/net/enic/enic_vf_representor.c @@ -242,7 +242,7 @@ static int enic_vf_dev_start(struct rte_eth_dev *eth_dev) return 0; } -static void enic_vf_dev_stop(struct rte_eth_dev *eth_dev) +static int enic_vf_dev_stop(struct rte_eth_dev *eth_dev) { struct enic_vf_representor *vf; struct vnic_rq *rq; @@ -250,7 +250,7 @@ static void enic_vf_dev_stop(struct rte_eth_dev *eth_dev) ENICPMD_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; /* Undo dev_start. Disable/clean WQ */ vf = eth_dev->data->dev_private; pf = vf->pf; @@ -271,6 +271,8 @@ static void enic_vf_dev_stop(struct rte_eth_dev *eth_dev) eth_dev->data->rx_queue_state[0] = RTE_ETH_QUEUE_STATE_STOPPED; /* Clean up representor flowman */ enic_fm_destroy(&vf->enic); + + return 0; } /* diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c index 5bcc250b5e..70b18f6c0f 100644 --- a/drivers/net/failsafe/failsafe_ops.c +++ b/drivers/net/failsafe/failsafe_ops.c @@ -179,22 +179,32 @@ fs_set_queues_state_stop(struct rte_eth_dev *dev) RTE_ETH_QUEUE_STATE_STOPPED; } -static void +static int fs_dev_stop(struct rte_eth_dev *dev) { struct sub_device *sdev; uint8_t i; + int ret; fs_lock(dev, 0); PRIV(dev)->state = DEV_STARTED - 1; FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_STARTED) { - rte_eth_dev_stop(PORT_ID(sdev)); + ret = rte_eth_dev_stop(PORT_ID(sdev)); + if (fs_err(sdev, ret) < 0) { + ERROR("Failed to stop device %u", + PORT_ID(sdev)); + PRIV(dev)->state = DEV_STARTED + 1; + fs_unlock(dev, 0); + return ret; + } failsafe_rx_intr_uninstall_subdevice(sdev); sdev->state = DEV_STARTED - 1; } failsafe_rx_intr_uninstall(dev); fs_set_queues_state_stop(dev); fs_unlock(dev, 0); + + return 0; } static int @@ -644,8 +654,13 @@ failsafe_eth_dev_close(struct rte_eth_dev *dev) fs_lock(dev, 0); failsafe_hotplug_alarm_cancel(dev); - if (PRIV(dev)->state == DEV_STARTED) - dev->dev_ops->dev_stop(dev); + if (PRIV(dev)->state == DEV_STARTED) { + ret = dev->dev_ops->dev_stop(dev); + if (ret != 0) { + fs_unlock(dev, 0); + return ret; + } + } PRIV(dev)->state = DEV_ACTIVE - 1; FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) { DEBUG("Closing sub_device %d", i); diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index c4a6fdf7f0..393e84f5a8 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -1152,7 +1152,7 @@ fm10k_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int fm10k_dev_stop(struct rte_eth_dev *dev) { struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1187,6 +1187,8 @@ fm10k_dev_stop(struct rte_eth_dev *dev) rte_intr_efd_disable(intr_handle); rte_free(intr_handle->intr_vec); intr_handle->intr_vec = NULL; + + return 0; } static void @@ -2785,6 +2787,7 @@ fm10k_dev_close(struct rte_eth_dev *dev) struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct rte_pci_device *pdev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pdev->intr_handle; + int ret; PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) @@ -2800,7 +2803,9 @@ fm10k_dev_close(struct rte_eth_dev *dev) /* Stop mailbox service first */ fm10k_close_mbx_service(hw); - fm10k_dev_stop(dev); + + ret = fm10k_dev_stop(dev); + fm10k_dev_queue_release(dev); fm10k_stop_hw(hw); @@ -2827,7 +2832,7 @@ fm10k_dev_close(struct rte_eth_dev *dev) fm10k_dev_interrupt_handler_vf, (void *)dev); } - return 0; + return ret; } static const struct eth_dev_ops fm10k_eth_dev_ops = { diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 466c8362b9..aabf642cfd 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -1177,7 +1177,7 @@ static void hinic_free_all_sq(struct hinic_nic_dev *nic_dev) * @param dev * Pointer to Ethernet device structure. */ -static void hinic_dev_stop(struct rte_eth_dev *dev) +static int hinic_dev_stop(struct rte_eth_dev *dev) { int rc; char *name; @@ -1192,7 +1192,7 @@ static void hinic_dev_stop(struct rte_eth_dev *dev) if (!rte_bit_relaxed_test_and_clear32(HINIC_DEV_START, &nic_dev->dev_status)) { PMD_DRV_LOG(INFO, "Device %s already stopped", name); - return; + return 0; } /* just stop phy port and vport */ @@ -1227,6 +1227,8 @@ static void hinic_dev_stop(struct rte_eth_dev *dev) /* free mbuf */ hinic_free_all_rx_mbuf(dev); hinic_free_all_tx_mbuf(dev); + + return 0; } static void hinic_disable_interrupt(struct rte_eth_dev *dev) @@ -2968,6 +2970,7 @@ static void hinic_nic_dev_destroy(struct rte_eth_dev *eth_dev) static int hinic_dev_close(struct rte_eth_dev *dev) { struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -2980,7 +2983,7 @@ static int hinic_dev_close(struct rte_eth_dev *dev) } /* stop device first */ - hinic_dev_stop(dev); + ret = hinic_dev_stop(dev); /* rx_cqe, rx_info */ hinic_free_all_rx_resources(dev); @@ -3004,7 +3007,7 @@ static int hinic_dev_close(struct rte_eth_dev *dev) /* deinit nic hardware device */ hinic_nic_dev_destroy(dev); - return 0; + return ret; } static const struct eth_dev_ops hinic_pmd_ops = { diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index ce5bae538d..3198d3fa3d 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -4990,7 +4990,7 @@ hns3_unmap_rx_interrupt(struct rte_eth_dev *dev) } } -static void +static int hns3_dev_stop(struct rte_eth_dev *dev) { struct hns3_adapter *hns = dev->data->dev_private; @@ -5017,6 +5017,8 @@ hns3_dev_stop(struct rte_eth_dev *dev) hns3_rx_scattered_reset(dev); rte_eal_alarm_cancel(hns3_service_handler, dev); rte_spinlock_unlock(&hw->lock); + + return 0; } static int @@ -5024,6 +5026,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) { struct hns3_adapter *hns = eth_dev->data->dev_private; struct hns3_hw *hw = &hns->hw; + int ret = 0; if (rte_eal_process_type() != RTE_PROC_PRIMARY) { rte_free(eth_dev->process_private); @@ -5032,7 +5035,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) } if (hw->adapter_state == HNS3_NIC_STARTED) - hns3_dev_stop(eth_dev); + ret = hns3_dev_stop(eth_dev); hw->adapter_state = HNS3_NIC_CLOSING; hns3_reset_abort(hns); @@ -5049,7 +5052,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) hns3_mp_uninit_primary(); hns3_warn(hw, "Close port %d finished", hw->data->port_id); - return 0; + return ret; } static int diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index 1a19c0e6e6..ef622cfcf6 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -1945,7 +1945,7 @@ hns3vf_unmap_rx_interrupt(struct rte_eth_dev *dev) } } -static void +static int hns3vf_dev_stop(struct rte_eth_dev *dev) { struct hns3_adapter *hns = dev->data->dev_private; @@ -1972,6 +1972,8 @@ hns3vf_dev_stop(struct rte_eth_dev *dev) hns3_rx_scattered_reset(dev); rte_eal_alarm_cancel(hns3vf_service_handler, dev); rte_spinlock_unlock(&hw->lock); + + return 0; } static int @@ -1979,12 +1981,13 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev) { struct hns3_adapter *hns = eth_dev->data->dev_private; struct hns3_hw *hw = &hns->hw; + int ret = 0; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; if (hw->adapter_state == HNS3_NIC_STARTED) - hns3vf_dev_stop(eth_dev); + ret = hns3vf_dev_stop(eth_dev); hw->adapter_state = HNS3_NIC_CLOSING; hns3_reset_abort(hns); @@ -2000,7 +2003,7 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev) hns3_mp_uninit_primary(); hns3_warn(hw, "Close port %d finished", hw->data->port_id); - return 0; + return ret; } static int diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 943cfe71dc..2f24b6640a 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -224,7 +224,7 @@ static int eth_i40e_dev_init(struct rte_eth_dev *eth_dev, void *init_params); static int eth_i40e_dev_uninit(struct rte_eth_dev *eth_dev); static int i40e_dev_configure(struct rte_eth_dev *dev); static int i40e_dev_start(struct rte_eth_dev *dev); -static void i40e_dev_stop(struct rte_eth_dev *dev); +static int i40e_dev_stop(struct rte_eth_dev *dev); static int i40e_dev_close(struct rte_eth_dev *dev); static int i40e_dev_reset(struct rte_eth_dev *dev); static int i40e_dev_promiscuous_enable(struct rte_eth_dev *dev); @@ -2542,7 +2542,7 @@ i40e_dev_start(struct rte_eth_dev *dev) return ret; } -static void +static int i40e_dev_stop(struct rte_eth_dev *dev) { struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); @@ -2553,7 +2553,7 @@ i40e_dev_stop(struct rte_eth_dev *dev) int i; if (hw->adapter_stopped == 1) - return; + return 0; if (dev->data->dev_conf.intr_conf.rxq == 0) { rte_eal_alarm_cancel(i40e_dev_alarm_handler, dev); @@ -2601,6 +2601,8 @@ i40e_dev_stop(struct rte_eth_dev *dev) hw->adapter_stopped = 1; pf->adapter->rss_reta_updated = 0; + + return 0; } static int @@ -2628,7 +2630,7 @@ i40e_dev_close(struct rte_eth_dev *dev) PMD_INIT_LOG(WARNING, "failed to free switch domain: %d", ret); - i40e_dev_stop(dev); + ret = i40e_dev_stop(dev); /* Remove all mirror rules */ while ((p_mirror = TAILQ_FIRST(&pf->mirror_list))) { @@ -2745,7 +2747,7 @@ i40e_dev_close(struct rte_eth_dev *dev) i40e_tm_conf_uninit(dev); hw->adapter_closed = 1; - return 0; + return ret; } /* diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 4d6510d1ff..6845c43efb 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -74,7 +74,7 @@ enum i40evf_aq_result { static int i40evf_dev_configure(struct rte_eth_dev *dev); static int i40evf_dev_start(struct rte_eth_dev *dev); -static void i40evf_dev_stop(struct rte_eth_dev *dev); +static int i40evf_dev_stop(struct rte_eth_dev *dev); static int i40evf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); static int i40evf_dev_link_update(struct rte_eth_dev *dev, @@ -2176,7 +2176,7 @@ i40evf_dev_start(struct rte_eth_dev *dev) return -1; } -static void +static int i40evf_dev_stop(struct rte_eth_dev *dev) { struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); @@ -2190,7 +2190,7 @@ i40evf_dev_stop(struct rte_eth_dev *dev) rte_intr_disable(intr_handle); if (hw->adapter_stopped == 1) - return; + return 0; i40evf_stop_queues(dev); i40evf_disable_queues_intr(dev); i40e_dev_clear_queues(dev); @@ -2208,6 +2208,7 @@ i40evf_dev_stop(struct rte_eth_dev *dev) FALSE); hw->adapter_stopped = 1; + return 0; } static int @@ -2401,11 +2402,13 @@ i40evf_dev_close(struct rte_eth_dev *dev) { struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - i40evf_dev_stop(dev); + ret = i40evf_dev_stop(dev); + i40e_dev_free_queues(dev); /* * disable promiscuous mode before reset vf @@ -2431,7 +2434,7 @@ i40evf_dev_close(struct rte_eth_dev *dev) vf->aq_resp = NULL; hw->adapter_closed = 1; - return 0; + return ret; } /* diff --git a/drivers/net/i40e/i40e_vf_representor.c b/drivers/net/i40e/i40e_vf_representor.c index f09d4d8798..791c050b8c 100644 --- a/drivers/net/i40e/i40e_vf_representor.c +++ b/drivers/net/i40e/i40e_vf_representor.c @@ -118,9 +118,10 @@ i40e_vf_representor_dev_start(__rte_unused struct rte_eth_dev *dev) return 0; } -static void +static int i40e_vf_representor_dev_stop(__rte_unused struct rte_eth_dev *dev) { + return 0; } static int diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index f5e6e852ae..b2e057df1e 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -31,7 +31,7 @@ static int iavf_dev_configure(struct rte_eth_dev *dev); static int iavf_dev_start(struct rte_eth_dev *dev); -static void iavf_dev_stop(struct rte_eth_dev *dev); +static int iavf_dev_stop(struct rte_eth_dev *dev); static int iavf_dev_close(struct rte_eth_dev *dev); static int iavf_dev_reset(struct rte_eth_dev *dev); static int iavf_dev_info_get(struct rte_eth_dev *dev, @@ -531,7 +531,7 @@ iavf_dev_start(struct rte_eth_dev *dev) return -1; } -static void +static int iavf_dev_stop(struct rte_eth_dev *dev) { struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); @@ -542,7 +542,7 @@ iavf_dev_stop(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); if (adapter->stopped == 1) - return; + return 0; iavf_stop_queues(dev); @@ -562,6 +562,8 @@ iavf_dev_stop(struct rte_eth_dev *dev) false); adapter->stopped = 1; + + return 0; } static int @@ -1499,11 +1501,13 @@ iavf_dev_close(struct rte_eth_dev *dev) struct iavf_adapter *adapter = IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - iavf_dev_stop(dev); + ret = iavf_dev_stop(dev); + iavf_flow_flush(dev, NULL); iavf_flow_uninit(adapter); @@ -1548,7 +1552,7 @@ iavf_dev_close(struct rte_eth_dev *dev) vf->vf_reset = false; - return 0; + return ret; } static int diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index 33dd0c44f2..047926dab2 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -589,7 +589,7 @@ ice_dcf_stop_queues(struct rte_eth_dev *dev) } } -static void +static int ice_dcf_dev_stop(struct rte_eth_dev *dev) { struct ice_dcf_adapter *dcf_ad = dev->data->dev_private; @@ -598,7 +598,7 @@ ice_dcf_dev_stop(struct rte_eth_dev *dev) if (ad->pf.adapter_stopped == 1) { PMD_DRV_LOG(DEBUG, "Port is already stopped"); - return; + return 0; } ice_dcf_stop_queues(dev); @@ -612,6 +612,8 @@ ice_dcf_dev_stop(struct rte_eth_dev *dev) ice_dcf_add_del_all_mac_addr(&dcf_ad->real_hw, false); dev->data->dev_link.link_status = ETH_LINK_DOWN; ad->pf.adapter_stopped = 1; + + return 0; } static int diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 0056da78a5..eafa94a5fb 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -76,7 +76,7 @@ static struct proto_xtr_ol_flag ice_proto_xtr_ol_flag_params[] = { static int ice_dev_configure(struct rte_eth_dev *dev); static int ice_dev_start(struct rte_eth_dev *dev); -static void ice_dev_stop(struct rte_eth_dev *dev); +static int ice_dev_stop(struct rte_eth_dev *dev); static int ice_dev_close(struct rte_eth_dev *dev); static int ice_dev_reset(struct rte_eth_dev *dev); static int ice_dev_info_get(struct rte_eth_dev *dev, @@ -2331,7 +2331,7 @@ ice_vsi_disable_queues_intr(struct ice_vsi *vsi) ICE_WRITE_REG(hw, GLINT_DYN_CTL(0), GLINT_DYN_CTL_WB_ON_ITR_M); } -static void +static int ice_dev_stop(struct rte_eth_dev *dev) { struct rte_eth_dev_data *data = dev->data; @@ -2343,7 +2343,7 @@ ice_dev_stop(struct rte_eth_dev *dev) /* avoid stopping again */ if (pf->adapter_stopped) - return; + return 0; /* stop and clear all Rx queues */ for (i = 0; i < data->nb_rx_queues; i++) @@ -2369,6 +2369,8 @@ ice_dev_stop(struct rte_eth_dev *dev) } pf->adapter_stopped = true; + + return 0; } static int @@ -2380,6 +2382,7 @@ ice_dev_close(struct rte_eth_dev *dev) struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct ice_adapter *ad = ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -2391,7 +2394,7 @@ ice_dev_close(struct rte_eth_dev *dev) */ ice_pf_disable_irq0(hw); - ice_dev_stop(dev); + ret = ice_dev_stop(dev); if (!ad->is_safe_mode) ice_flow_uninit(ad); @@ -2420,7 +2423,7 @@ ice_dev_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(intr_handle, ice_interrupt_handler, dev); - return 0; + return ret; } static int diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index 7f5066df4b..085752b47e 100644 --- a/drivers/net/igc/igc_ethdev.c +++ b/drivers/net/igc/igc_ethdev.c @@ -179,7 +179,7 @@ static const struct rte_igc_xstats_name_off rte_igc_stats_strings[] = { static int eth_igc_configure(struct rte_eth_dev *dev); static int eth_igc_link_update(struct rte_eth_dev *dev, int wait_to_complete); -static void eth_igc_stop(struct rte_eth_dev *dev); +static int eth_igc_stop(struct rte_eth_dev *dev); static int eth_igc_start(struct rte_eth_dev *dev); static int eth_igc_set_link_up(struct rte_eth_dev *dev); static int eth_igc_set_link_down(struct rte_eth_dev *dev); @@ -607,7 +607,7 @@ eth_igc_rxtx_control(struct rte_eth_dev *dev, bool enable) * This routine disables all traffic on the adapter by issuing a * global reset on the MAC. */ -static void +static int eth_igc_stop(struct rte_eth_dev *dev) { struct igc_adapter *adapter = IGC_DEV_PRIVATE(dev); @@ -668,6 +668,8 @@ eth_igc_stop(struct rte_eth_dev *dev) rte_free(intr_handle->intr_vec); intr_handle->intr_vec = NULL; } + + return 0; } /* @@ -1173,13 +1175,14 @@ eth_igc_close(struct rte_eth_dev *dev) struct igc_hw *hw = IGC_DEV_PRIVATE_HW(dev); struct igc_adapter *adapter = IGC_DEV_PRIVATE(dev); int retry = 0; + int ret = 0; PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; if (!adapter->stopped) - eth_igc_stop(dev); + ret = eth_igc_stop(dev); igc_flow_flush(dev, NULL); igc_clear_all_filter(dev); @@ -1202,7 +1205,7 @@ eth_igc_close(struct rte_eth_dev *dev) /* Reset any pending lock */ igc_reset_swfw_lock(hw); - return 0; + return ret; } static void diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index ef7d06e526..23e785f6dd 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -24,7 +24,7 @@ static int ionic_dev_info_get(struct rte_eth_dev *eth_dev, static int ionic_dev_configure(struct rte_eth_dev *dev); static int ionic_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static int ionic_dev_start(struct rte_eth_dev *dev); -static void ionic_dev_stop(struct rte_eth_dev *dev); +static int ionic_dev_stop(struct rte_eth_dev *dev); static int ionic_dev_close(struct rte_eth_dev *dev); static int ionic_dev_set_link_up(struct rte_eth_dev *dev); static int ionic_dev_set_link_down(struct rte_eth_dev *dev); @@ -940,7 +940,7 @@ ionic_dev_start(struct rte_eth_dev *eth_dev) /* * Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void +static int ionic_dev_stop(struct rte_eth_dev *eth_dev) { struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); @@ -951,6 +951,8 @@ ionic_dev_stop(struct rte_eth_dev *eth_dev) err = ionic_lif_stop(lif); if (err) IONIC_PRINT(ERR, "Cannot stop LIF: %d", err); + + return err; } /* diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c index b9fb4d4e46..f15ee0728a 100644 --- a/drivers/net/ipn3ke/ipn3ke_representor.c +++ b/drivers/net/ipn3ke/ipn3ke_representor.c @@ -193,7 +193,7 @@ ipn3ke_rpst_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int ipn3ke_rpst_dev_stop(struct rte_eth_dev *dev) { struct ipn3ke_hw *hw = IPN3KE_DEV_PRIVATE_TO_HW(dev); @@ -206,6 +206,8 @@ ipn3ke_rpst_dev_stop(struct rte_eth_dev *dev) /* Disable the RX path */ ipn3ke_xmac_rx_disable(hw, rpst->port_id, 0); } + + return 0; } static int diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 0b98e210e7..074b40255c 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -142,13 +142,13 @@ static int ixgbe_fdir_filter_uninit(struct rte_eth_dev *eth_dev); static int ixgbe_l2_tn_filter_init(struct rte_eth_dev *eth_dev); static int ixgbe_l2_tn_filter_uninit(struct rte_eth_dev *eth_dev); static int ixgbe_ntuple_filter_uninit(struct rte_eth_dev *eth_dev); -static int ixgbe_dev_configure(struct rte_eth_dev *dev); -static int ixgbe_dev_start(struct rte_eth_dev *dev); -static void ixgbe_dev_stop(struct rte_eth_dev *dev); -static int ixgbe_dev_set_link_up(struct rte_eth_dev *dev); -static int ixgbe_dev_set_link_down(struct rte_eth_dev *dev); -static int ixgbe_dev_close(struct rte_eth_dev *dev); -static int ixgbe_dev_reset(struct rte_eth_dev *dev); +static int ixgbe_dev_configure(struct rte_eth_dev *dev); +static int ixgbe_dev_start(struct rte_eth_dev *dev); +static int ixgbe_dev_stop(struct rte_eth_dev *dev); +static int ixgbe_dev_set_link_up(struct rte_eth_dev *dev); +static int ixgbe_dev_set_link_down(struct rte_eth_dev *dev); +static int ixgbe_dev_close(struct rte_eth_dev *dev); +static int ixgbe_dev_reset(struct rte_eth_dev *dev); static int ixgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); static int ixgbe_dev_promiscuous_disable(struct rte_eth_dev *dev); static int ixgbe_dev_allmulticast_enable(struct rte_eth_dev *dev); @@ -250,7 +250,7 @@ static int ixgbevf_dev_configure(struct rte_eth_dev *dev); static int ixgbevf_dev_start(struct rte_eth_dev *dev); static int ixgbevf_dev_link_update(struct rte_eth_dev *dev, int wait_to_complete); -static void ixgbevf_dev_stop(struct rte_eth_dev *dev); +static int ixgbevf_dev_stop(struct rte_eth_dev *dev); static int ixgbevf_dev_close(struct rte_eth_dev *dev); static int ixgbevf_dev_reset(struct rte_eth_dev *dev); static void ixgbevf_intr_disable(struct rte_eth_dev *dev); @@ -2845,7 +2845,7 @@ ixgbe_dev_start(struct rte_eth_dev *dev) /* * Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void +static int ixgbe_dev_stop(struct rte_eth_dev *dev) { struct rte_eth_link link; @@ -2861,7 +2861,7 @@ ixgbe_dev_stop(struct rte_eth_dev *dev) IXGBE_DEV_PRIVATE_TO_TM_CONF(dev->data->dev_private); if (hw->adapter_stopped) - return; + return 0; PMD_INIT_FUNC_TRACE(); @@ -2917,6 +2917,8 @@ ixgbe_dev_stop(struct rte_eth_dev *dev) adapter->rss_reta_updated = 0; hw->adapter_stopped = true; + + return 0; } /* @@ -3000,7 +3002,7 @@ ixgbe_dev_close(struct rte_eth_dev *dev) ixgbe_pf_reset_hw(hw); - ixgbe_dev_stop(dev); + ret = ixgbe_dev_stop(dev); ixgbe_dev_free_queues(dev); @@ -3057,7 +3059,7 @@ ixgbe_dev_close(struct rte_eth_dev *dev) rte_free(dev->security_ctx); #endif - return 0; + return ret; } /* @@ -5401,7 +5403,7 @@ ixgbevf_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int ixgbevf_dev_stop(struct rte_eth_dev *dev) { struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -5410,7 +5412,7 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; if (hw->adapter_stopped) - return; + return 0; PMD_INIT_FUNC_TRACE(); @@ -5440,6 +5442,8 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) } adapter->rss_reta_updated = 0; + + return 0; } static int @@ -5448,6 +5452,7 @@ ixgbevf_dev_close(struct rte_eth_dev *dev) struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; + int ret; PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) @@ -5455,7 +5460,7 @@ ixgbevf_dev_close(struct rte_eth_dev *dev) ixgbe_reset_hw(hw); - ixgbevf_dev_stop(dev); + ret = ixgbevf_dev_stop(dev); ixgbe_dev_free_queues(dev); @@ -5474,7 +5479,7 @@ ixgbevf_dev_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(intr_handle, ixgbevf_dev_interrupt_handler, dev); - return 0; + return ret; } /* diff --git a/drivers/net/ixgbe/ixgbe_vf_representor.c b/drivers/net/ixgbe/ixgbe_vf_representor.c index edb5d43846..8185f0d3bb 100644 --- a/drivers/net/ixgbe/ixgbe_vf_representor.c +++ b/drivers/net/ixgbe/ixgbe_vf_representor.c @@ -113,8 +113,9 @@ static int ixgbe_vf_representor_dev_start(__rte_unused struct rte_eth_dev *dev) return 0; } -static void ixgbe_vf_representor_dev_stop(__rte_unused struct rte_eth_dev *dev) +static int ixgbe_vf_representor_dev_stop(__rte_unused struct rte_eth_dev *dev) { + return 0; } static int diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c index be747adf86..324be4f76c 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c @@ -177,7 +177,7 @@ eth_kni_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int eth_kni_dev_stop(struct rte_eth_dev *dev) { struct pmd_internals *internals = dev->data->dev_private; @@ -196,6 +196,8 @@ eth_kni_dev_stop(struct rte_eth_dev *dev) } dev->data->dev_link.link_status = 0; + + return 0; } static int @@ -207,7 +209,7 @@ eth_kni_close(struct rte_eth_dev *eth_dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - eth_kni_dev_stop(eth_dev); + ret = eth_kni_dev_stop(eth_dev); /* mac_addrs must not be freed alone because part of dev_private */ eth_dev->data->mac_addrs = NULL; @@ -218,7 +220,7 @@ eth_kni_close(struct rte_eth_dev *eth_dev) PMD_LOG(WARNING, "Not able to release kni for %s", eth_dev->data->name); - return 0; + return ret; } static int @@ -485,6 +487,7 @@ eth_kni_remove(struct rte_vdev_device *vdev) { struct rte_eth_dev *eth_dev; const char *name; + int ret; name = rte_vdev_device_name(vdev); PMD_LOG(INFO, "Un-Initializing eth_kni for %s", name); @@ -493,7 +496,9 @@ eth_kni_remove(struct rte_vdev_device *vdev) eth_dev = rte_eth_dev_allocated(name); if (eth_dev != NULL) { if (rte_eal_process_type() != RTE_PROC_PRIMARY) { - eth_kni_dev_stop(eth_dev); + ret = eth_kni_dev_stop(eth_dev); + if (ret != 0) + return ret; return rte_eth_dev_release_port(eth_dev); } eth_kni_close(eth_dev); diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index 1a41f27198..babc473694 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -1465,7 +1465,7 @@ lio_dev_start(struct rte_eth_dev *eth_dev) } /* Stop device and disable input/output functions */ -static void +static int lio_dev_stop(struct rte_eth_dev *eth_dev) { struct lio_device *lio_dev = LIO_DEV(eth_dev); @@ -1483,6 +1483,8 @@ lio_dev_stop(struct rte_eth_dev *eth_dev) /* Clear recorded link status */ lio_dev->linfo.link.link_status64 = 0; + + return 0; } static int @@ -1554,6 +1556,7 @@ static int lio_dev_close(struct rte_eth_dev *eth_dev) { struct lio_device *lio_dev = LIO_DEV(eth_dev); + int ret = 0; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -1561,7 +1564,7 @@ lio_dev_close(struct rte_eth_dev *eth_dev) lio_dev_info(lio_dev, "closing port %d\n", eth_dev->data->port_id); if (lio_dev->intf_open) - lio_dev_stop(eth_dev); + ret = lio_dev_stop(eth_dev); /* Reset ioq regs */ lio_dev->fn_list.setup_device_regs(lio_dev); @@ -1585,7 +1588,7 @@ lio_dev_close(struct rte_eth_dev *eth_dev) /* Delete all queues */ lio_dev_clear_queues(eth_dev); - return 0; + return ret; } /** @@ -1703,6 +1706,7 @@ static int lio_reconf_queues(struct rte_eth_dev *eth_dev, int num_txq, int num_rxq) { struct lio_device *lio_dev = LIO_DEV(eth_dev); + int ret; if (lio_dev->nb_rx_queues != num_rxq || lio_dev->nb_tx_queues != num_txq) { @@ -1712,8 +1716,11 @@ lio_reconf_queues(struct rte_eth_dev *eth_dev, int num_txq, int num_rxq) lio_dev->nb_tx_queues = num_txq; } - if (lio_dev->intf_open) - lio_dev_stop(eth_dev); + if (lio_dev->intf_open) { + ret = lio_dev_stop(eth_dev); + if (ret != 0) + return ret; + } /* Reset ioq registers */ if (lio_dev->fn_list.setup_device_regs(lio_dev)) { diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index cfcfb8a8fc..0857f5e1e3 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -81,7 +81,7 @@ const char *pmd_mlx4_init_params[] = { NULL, }; -static void mlx4_dev_stop(struct rte_eth_dev *dev); +static int mlx4_dev_stop(struct rte_eth_dev *dev); /** * Initialize shared data between primary and secondary process. @@ -343,13 +343,13 @@ mlx4_dev_start(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mlx4_dev_stop(struct rte_eth_dev *dev) { struct mlx4_priv *priv = dev->data->dev_private; if (!priv->started) - return; + return 0; DEBUG("%p: detaching flows from all RX queues", (void *)dev); priv->started = 0; dev->tx_pkt_burst = mlx4_tx_burst_removed; @@ -360,6 +360,8 @@ mlx4_dev_stop(struct rte_eth_dev *dev) mlx4_flow_sync(priv, NULL); mlx4_rxq_intr_disable(priv); mlx4_rss_deinit(priv); + + return 0; } /** diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index e528833ce3..1408cf94d6 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -1030,7 +1030,7 @@ void *mlx5_vlan_vmwa_init(struct rte_eth_dev *dev, uint32_t ifindex); /* mlx5_trigger.c */ int mlx5_dev_start(struct rte_eth_dev *dev); -void mlx5_dev_stop(struct rte_eth_dev *dev); +int mlx5_dev_stop(struct rte_eth_dev *dev); int mlx5_traffic_enable(struct rte_eth_dev *dev); void mlx5_traffic_disable(struct rte_eth_dev *dev); int mlx5_traffic_restart(struct rte_eth_dev *dev); diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index e72e5fbde2..7735f022a3 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -409,7 +409,7 @@ mlx5_dev_start(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -void +int mlx5_dev_stop(struct rte_eth_dev *dev) { struct mlx5_priv *priv = dev->data->dev_private; @@ -434,6 +434,8 @@ mlx5_dev_stop(struct rte_eth_dev *dev) mlx5_txq_stop(dev); mlx5_rxq_stop(dev); mlx5_txpp_stop(dev); + + return 0; } /** diff --git a/drivers/net/mvneta/mvneta_ethdev.c b/drivers/net/mvneta/mvneta_ethdev.c index 607771149a..ec37adc41b 100644 --- a/drivers/net/mvneta/mvneta_ethdev.c +++ b/drivers/net/mvneta/mvneta_ethdev.c @@ -408,19 +408,21 @@ mvneta_dev_start(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mvneta_dev_stop(struct rte_eth_dev *dev) { struct mvneta_priv *priv = dev->data->dev_private; if (!priv->ppio) - return; + return 0; mvneta_dev_set_link_down(dev); mvneta_flush_queues(dev); neta_ppio_deinit(priv->ppio); priv->ppio = NULL; + + return 0; } /** @@ -433,13 +435,13 @@ static int mvneta_dev_close(struct rte_eth_dev *dev) { struct mvneta_priv *priv = dev->data->dev_private; - int i; + int i, ret = 0; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; if (priv->ppio) - mvneta_dev_stop(dev); + ret = mvneta_dev_stop(dev); for (i = 0; i < dev->data->nb_rx_queues; i++) { mvneta_rx_queue_release(dev->data->rx_queues[i]); @@ -459,7 +461,7 @@ mvneta_dev_close(struct rte_eth_dev *dev) rte_mvep_deinit(MVEP_MOD_T_NETA); } - return 0; + return ret; } /** diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c index a230a96840..d7973afe27 100644 --- a/drivers/net/mvpp2/mrvl_ethdev.c +++ b/drivers/net/mvpp2/mrvl_ethdev.c @@ -843,10 +843,10 @@ mrvl_flush_bpool(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mrvl_dev_stop(struct rte_eth_dev *dev) { - mrvl_dev_set_link_down(dev); + return mrvl_dev_set_link_down(dev); } /** diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 5ae2d469c8..9150dfecd7 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -827,7 +827,7 @@ hn_dev_start(struct rte_eth_dev *dev) return error; } -static void +static int hn_dev_stop(struct rte_eth_dev *dev) { struct hn_data *hv = dev->data->dev_private; @@ -835,7 +835,7 @@ hn_dev_stop(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); hn_rndis_set_rxfilter(hv, 0); - hn_vf_stop(dev); + return hn_vf_stop(dev); } static int @@ -1039,14 +1039,14 @@ static int eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) { struct hn_data *hv = eth_dev->data->dev_private; - int ret; + int ret, ret_stop; PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - hn_dev_stop(eth_dev); + ret_stop = hn_dev_stop(eth_dev); hn_dev_close(eth_dev); eth_dev->dev_ops = NULL; @@ -1061,7 +1061,7 @@ eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) if (ret != 0) return ret; - return 0; + return ret_stop; } static int eth_hn_probe(struct rte_vmbus_driver *drv __rte_unused, diff --git a/drivers/net/netvsc/hn_var.h b/drivers/net/netvsc/hn_var.h index 4b63f87607..9f8b40c912 100644 --- a/drivers/net/netvsc/hn_var.h +++ b/drivers/net/netvsc/hn_var.h @@ -216,7 +216,7 @@ int hn_vf_configure(struct rte_eth_dev *dev, const uint32_t *hn_vf_supported_ptypes(struct rte_eth_dev *dev); int hn_vf_start(struct rte_eth_dev *dev); void hn_vf_reset(struct rte_eth_dev *dev); -void hn_vf_stop(struct rte_eth_dev *dev); +int hn_vf_stop(struct rte_eth_dev *dev); void hn_vf_close(struct rte_eth_dev *dev); int hn_vf_allmulticast_enable(struct rte_eth_dev *dev); diff --git a/drivers/net/netvsc/hn_vf.c b/drivers/net/netvsc/hn_vf.c index f5f15c0462..ce896a00bc 100644 --- a/drivers/net/netvsc/hn_vf.c +++ b/drivers/net/netvsc/hn_vf.c @@ -273,16 +273,23 @@ int hn_vf_start(struct rte_eth_dev *dev) return ret; } -void hn_vf_stop(struct rte_eth_dev *dev) +int hn_vf_stop(struct rte_eth_dev *dev) { struct hn_data *hv = dev->data->dev_private; struct rte_eth_dev *vf_dev; + int ret = 0; rte_rwlock_read_lock(&hv->vf_lock); vf_dev = hn_get_vf_dev(hv); - if (vf_dev) - rte_eth_dev_stop(vf_dev->data->port_id); + if (vf_dev) { + ret = rte_eth_dev_stop(vf_dev->data->port_id); + if (ret != 0) + PMD_DRV_LOG(ERR, "Failed to stop device on port %u", + vf_dev->data->port_id); + } rte_rwlock_read_unlock(&hv->vf_lock); + + return ret; } /* If VF is present, then cascade configuration down */ diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c index a9a8bc878d..d849055497 100644 --- a/drivers/net/nfb/nfb_ethdev.c +++ b/drivers/net/nfb/nfb_ethdev.c @@ -151,7 +151,7 @@ nfb_eth_dev_start(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int nfb_eth_dev_stop(struct rte_eth_dev *dev) { uint16_t i; @@ -163,6 +163,8 @@ nfb_eth_dev_stop(struct rte_eth_dev *dev) for (i = 0; i < nb_rx; i++) nfb_eth_rx_queue_stop(dev, i); + + return 0; } /** @@ -216,11 +218,12 @@ nfb_eth_dev_close(struct rte_eth_dev *dev) uint16_t i; uint16_t nb_rx = dev->data->nb_rx_queues; uint16_t nb_tx = dev->data->nb_tx_queues; + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - nfb_eth_dev_stop(dev); + ret = nfb_eth_dev_stop(dev); nfb_nc_rxmac_deinit(internals->rxmac, internals->max_rxmac); nfb_nc_txmac_deinit(internals->txmac, internals->max_txmac); @@ -236,7 +239,7 @@ nfb_eth_dev_close(struct rte_eth_dev *dev) } dev->data->nb_tx_queues = 0; - return 0; + return ret; } /** diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c index c1da66e3d6..38203777a3 100644 --- a/drivers/net/nfp/nfp_net.c +++ b/drivers/net/nfp/nfp_net.c @@ -80,7 +80,7 @@ static int nfp_net_start(struct rte_eth_dev *dev); static int nfp_net_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats); static int nfp_net_stats_reset(struct rte_eth_dev *dev); -static void nfp_net_stop(struct rte_eth_dev *dev); +static int nfp_net_stop(struct rte_eth_dev *dev); static uint16_t nfp_net_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); @@ -788,7 +788,7 @@ nfp_net_start(struct rte_eth_dev *dev) } /* Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void +static int nfp_net_stop(struct rte_eth_dev *dev) { int i; @@ -819,6 +819,8 @@ nfp_net_stop(struct rte_eth_dev *dev) nfp_eth_set_configured(dev->process_private, hw->pf_port_idx, 0); } + + return 0; } /* Set the link up. */ diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c index 7c3c76a897..9ed88f110f 100644 --- a/drivers/net/null/rte_eth_null.c +++ b/drivers/net/null/rte_eth_null.c @@ -193,13 +193,15 @@ eth_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int eth_dev_stop(struct rte_eth_dev *dev) { if (dev == NULL) - return; + return 0; dev->data->dev_link.link_status = ETH_LINK_DOWN; + + return 0; } static int diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c index aa9ef3bb70..3f08dfca57 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c @@ -676,7 +676,7 @@ octeontx_dev_start(struct rte_eth_dev *dev) return ret; } -static void +static int octeontx_dev_stop(struct rte_eth_dev *dev) { struct octeontx_nic *nic = octeontx_pmd_priv(dev); @@ -690,14 +690,14 @@ octeontx_dev_stop(struct rte_eth_dev *dev) if (ret < 0) { octeontx_log_err("failed to req stop port %d res=%d", nic->port_id, ret); - return; + return ret; } ret = octeontx_pki_port_stop(nic->port_id); if (ret < 0) { octeontx_log_err("failed to stop pki port %d res=%d", nic->port_id, ret); - return; + return ret; } ret = octeontx_pko_channel_stop(nic->base_ochan); @@ -705,8 +705,10 @@ octeontx_dev_stop(struct rte_eth_dev *dev) octeontx_log_err("failed to stop channel %d VF%d %d %d", nic->base_ochan, nic->port_id, nic->num_tx_queues, ret); - return; + return ret; } + + return 0; } static int diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c index b69b92bf58..e52e1952ba 100644 --- a/drivers/net/octeontx2/otx2_ethdev.c +++ b/drivers/net/octeontx2/otx2_ethdev.c @@ -2139,7 +2139,7 @@ otx2_nix_rx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t qidx) return rc; } -static void +static int otx2_nix_dev_stop(struct rte_eth_dev *eth_dev) { struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev); @@ -2169,6 +2169,8 @@ otx2_nix_dev_stop(struct rte_eth_dev *eth_dev) /* Stop tx queues */ for (i = 0; i < eth_dev->data->nb_tx_queues; i++) otx2_nix_tx_queue_stop(eth_dev, i); + + return 0; } static int diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 49764c0ee6..595474558b 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -607,7 +607,7 @@ eth_dev_start(struct rte_eth_dev *dev) * Is the only place for us to close all the tx streams dumpers. * If not called the dumpers will be flushed within each tx burst. */ -static void +static int eth_dev_stop(struct rte_eth_dev *dev) { unsigned int i; @@ -649,6 +649,8 @@ eth_dev_stop(struct rte_eth_dev *dev) dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED; dev->data->dev_link.link_status = ETH_LINK_DOWN; + + return 0; } static int diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c index f0de1c8a2e..44ef2bc1f0 100644 --- a/drivers/net/pfe/pfe_ethdev.c +++ b/drivers/net/pfe/pfe_ethdev.c @@ -373,7 +373,7 @@ pfe_eth_close_cdev(struct pfe_eth_priv_s *priv) } } -static void +static int pfe_eth_stop(struct rte_eth_dev *dev/*, int wake*/) { struct pfe_eth_priv_s *priv = dev->data->dev_private; @@ -383,11 +383,14 @@ pfe_eth_stop(struct rte_eth_dev *dev/*, int wake*/) dev->rx_pkt_burst = &pfe_dummy_recv_pkts; dev->tx_pkt_burst = &pfe_dummy_xmit_pkts; + + return 0; } static int pfe_eth_close(struct rte_eth_dev *dev) { + int ret; PMD_INIT_FUNC_TRACE(); if (!dev) @@ -399,7 +402,7 @@ pfe_eth_close(struct rte_eth_dev *dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - pfe_eth_stop(dev); + ret = pfe_eth_stop(dev); /* Close the device file for link status */ pfe_eth_close_cdev(dev->data->dev_private); @@ -413,7 +416,7 @@ pfe_eth_close(struct rte_eth_dev *dev) g_pfe = NULL; } - return 0; + return ret; } static int @@ -667,8 +670,7 @@ pfe_allmulticast_enable(struct rte_eth_dev *dev) static int pfe_link_down(struct rte_eth_dev *dev) { - pfe_eth_stop(dev); - return 0; + return pfe_eth_stop(dev); } static int @@ -843,7 +845,9 @@ pfe_eth_init(struct rte_vdev_device *vdev, struct pfe *pfe, int id) eth_dev->data->mtu = 1500; eth_dev->dev_ops = &ops; - pfe_eth_stop(eth_dev); + err = pfe_eth_stop(eth_dev); + if (err != 0) + goto err0; pfe_gemac_init(priv); eth_dev->data->nb_rx_queues = 1; diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 548497f3ae..f85c246392 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -1163,7 +1163,7 @@ static int qede_dev_start(struct rte_eth_dev *eth_dev) return -1; /* common error code is < 0 */ } -static void qede_dev_stop(struct rte_eth_dev *eth_dev) +static int qede_dev_stop(struct rte_eth_dev *eth_dev) { struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); @@ -1183,7 +1183,7 @@ static void qede_dev_stop(struct rte_eth_dev *eth_dev) /* Disable vport */ if (qede_activate_vport(eth_dev, false)) - return; + return 0; if (qdev->enable_lro) qede_enable_tpa(eth_dev, false); @@ -1195,6 +1195,8 @@ static void qede_dev_stop(struct rte_eth_dev *eth_dev) ecore_hw_stop_fastpath(edev); /* TBD - loop */ DP_INFO(edev, "Device is stopped\n"); + + return 0; } static const char * const valid_args[] = { @@ -1549,6 +1551,7 @@ static int qede_dev_close(struct rte_eth_dev *eth_dev) struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); + int ret = 0; PMD_INIT_FUNC_TRACE(edev); @@ -1562,7 +1565,7 @@ static int qede_dev_close(struct rte_eth_dev *eth_dev) * can release all the resources and device can be brought up newly */ if (eth_dev->data->dev_started) - qede_dev_stop(eth_dev); + ret = qede_dev_stop(eth_dev); if (qdev->vport_started) qede_stop_vport(edev); @@ -1597,7 +1600,7 @@ static int qede_dev_close(struct rte_eth_dev *eth_dev) eth_dev->rx_pkt_burst = NULL; eth_dev->tx_pkt_burst = NULL; - return 0; + return ret; } static int @@ -2342,7 +2345,9 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) } if (dev->data->dev_started) { dev->data->dev_started = 0; - qede_dev_stop(dev); + rc = qede_dev_stop(dev); + if (rc != 0) + return rc; restart = true; } rte_delay_ms(1000); diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c index 22c0802688..fa91d8c965 100644 --- a/drivers/net/ring/rte_eth_ring.c +++ b/drivers/net/ring/rte_eth_ring.c @@ -106,10 +106,11 @@ eth_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int eth_dev_stop(struct rte_eth_dev *dev) { dev->data->dev_link.link_status = ETH_LINK_DOWN; + return 0; } static int @@ -235,11 +236,12 @@ eth_dev_close(struct rte_eth_dev *dev) struct pmd_internals *internals = NULL; struct ring_queue *r = NULL; uint16_t i; + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - eth_dev_stop(dev); + ret = eth_dev_stop(dev); internals = dev->data->dev_private; if (internals->action == DEV_CREATE) { @@ -256,7 +258,7 @@ eth_dev_close(struct rte_eth_dev *dev) /* mac_addrs must not be freed alone because part of dev_private */ dev->data->mac_addrs = NULL; - return 0; + return ret; } static const struct eth_dev_ops ops = { diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 165776b652..fed9fc370c 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -276,7 +276,7 @@ sfc_dev_link_update(struct rte_eth_dev *dev, int wait_to_complete) return ret; } -static void +static int sfc_dev_stop(struct rte_eth_dev *dev) { struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev); @@ -288,6 +288,8 @@ sfc_dev_stop(struct rte_eth_dev *dev) sfc_adapter_unlock(sa); sfc_log_init(sa, "done"); + + return 0; } static int diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c index e942df78b6..3387ab485f 100644 --- a/drivers/net/softnic/rte_eth_softnic.c +++ b/drivers/net/softnic/rte_eth_softnic.c @@ -178,7 +178,7 @@ pmd_dev_start(struct rte_eth_dev *dev) return 0; } -static void +static int pmd_dev_stop(struct rte_eth_dev *dev) { struct pmd_internals *p = dev->data->dev_private; @@ -199,6 +199,8 @@ pmd_dev_stop(struct rte_eth_dev *dev) tm_hierarchy_free(p); softnic_mtr_free(p); + + return 0; } static void diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c index 0eecec1e8c..c5e4fbee62 100644 --- a/drivers/net/szedata2/rte_eth_szedata2.c +++ b/drivers/net/szedata2/rte_eth_szedata2.c @@ -1013,18 +1013,27 @@ eth_dev_start(struct rte_eth_dev *dev) return ret; } -static void +static int eth_dev_stop(struct rte_eth_dev *dev) { uint16_t i; uint16_t nb_rx = dev->data->nb_rx_queues; uint16_t nb_tx = dev->data->nb_tx_queues; + int ret; - for (i = 0; i < nb_tx; i++) - eth_tx_queue_stop(dev, i); + for (i = 0; i < nb_tx; i++) { + ret = eth_tx_queue_stop(dev, i); + if (ret != 0) + return ret; + } - for (i = 0; i < nb_rx; i++) - eth_rx_queue_stop(dev, i); + for (i = 0; i < nb_rx; i++) { + ret = eth_rx_queue_stop(dev, i); + if (ret != 0) + return ret; + } + + return 0; } static int @@ -1162,11 +1171,12 @@ eth_dev_close(struct rte_eth_dev *dev) uint16_t i; uint16_t nb_rx = dev->data->nb_rx_queues; uint16_t nb_tx = dev->data->nb_tx_queues; + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - eth_dev_stop(dev); + ret = eth_dev_stop(dev); free(internals->sze_dev_path); @@ -1181,7 +1191,7 @@ eth_dev_close(struct rte_eth_dev *dev) } dev->data->nb_tx_queues = 0; - return 0; + return ret; } static int diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index e592a469b3..7047a42ce8 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -900,7 +900,7 @@ tap_dev_start(struct rte_eth_dev *dev) /* This function gets called when the current port gets stopped. */ -static void +static int tap_dev_stop(struct rte_eth_dev *dev) { int i; @@ -912,6 +912,8 @@ tap_dev_stop(struct rte_eth_dev *dev) tap_intr_handle_set(dev, 0); tap_link_set_down(dev); + + return 0; } static int diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c index cc6eb4ba24..7ff4cdcb86 100644 --- a/drivers/net/thunderx/nicvf_ethdev.c +++ b/drivers/net/thunderx/nicvf_ethdev.c @@ -44,7 +44,7 @@ #include "nicvf_svf.h" #include "nicvf_logs.h" -static void nicvf_dev_stop(struct rte_eth_dev *dev); +static int nicvf_dev_stop(struct rte_eth_dev *dev); static void nicvf_dev_stop_cleanup(struct rte_eth_dev *dev, bool cleanup); static void nicvf_vf_stop(struct rte_eth_dev *dev, struct nicvf *nic, bool cleanup); @@ -1789,12 +1789,14 @@ nicvf_dev_stop_cleanup(struct rte_eth_dev *dev, bool cleanup) PMD_INIT_LOG(ERR, "Failed to reclaim CPI config %d", ret); } -static void +static int nicvf_dev_stop(struct rte_eth_dev *dev) { PMD_INIT_FUNC_TRACE(); nicvf_dev_stop_cleanup(dev, false); + + return 0; } static void diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index 66efecb320..d28abc5b56 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -1153,13 +1153,15 @@ eth_dev_start(struct rte_eth_dev *eth_dev) return 0; } -static void +static int eth_dev_stop(struct rte_eth_dev *dev) { struct pmd_internal *internal = dev->data->dev_private; rte_atomic32_set(&internal->started, 0); update_queuing_status(dev); + + return 0; } static int @@ -1167,7 +1169,7 @@ eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internal *internal; struct internal_list *list; - unsigned int i; + unsigned int i, ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -1176,7 +1178,7 @@ eth_dev_close(struct rte_eth_dev *dev) if (!internal) return 0; - eth_dev_stop(dev); + ret = eth_dev_stop(dev); list = find_internal_resource(internal->iface_name); if (list) { @@ -1203,7 +1205,7 @@ eth_dev_close(struct rte_eth_dev *dev) rte_free(vring_states[dev->data->port_id]); vring_states[dev->data->port_id] = NULL; - return 0; + return ret; } static int diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 65eefa2a31..0cca8ff30c 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -40,7 +40,7 @@ static int eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev); static int virtio_dev_configure(struct rte_eth_dev *dev); static int virtio_dev_start(struct rte_eth_dev *dev); -static void virtio_dev_stop(struct rte_eth_dev *dev); +static int virtio_dev_stop(struct rte_eth_dev *dev); static int virtio_dev_promiscuous_enable(struct rte_eth_dev *dev); static int virtio_dev_promiscuous_disable(struct rte_eth_dev *dev); static int virtio_dev_allmulticast_enable(struct rte_eth_dev *dev); @@ -1993,12 +1993,13 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) static int eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev) { + int ret; PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() == RTE_PROC_SECONDARY) return 0; - virtio_dev_stop(eth_dev); + ret = virtio_dev_stop(eth_dev); virtio_dev_close(eth_dev); eth_dev->dev_ops = NULL; @@ -2007,7 +2008,7 @@ eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev) PMD_INIT_LOG(DEBUG, "dev_uninit completed"); - return 0; + return ret; } @@ -2515,7 +2516,7 @@ static void virtio_dev_free_mbufs(struct rte_eth_dev *dev) /* * Stop device: disable interrupt and mark link down */ -static void +static int virtio_dev_stop(struct rte_eth_dev *dev) { struct virtio_hw *hw = dev->data->dev_private; @@ -2544,6 +2545,8 @@ virtio_dev_stop(struct rte_eth_dev *dev) rte_eth_linkstatus_set(dev, &link); out_unlock: rte_spinlock_unlock(&hw->state_lock); + + return 0; } static int diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index fa950e1ba0..6d5a8aaeaa 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -63,7 +63,7 @@ static int eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev); static int eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev); static int vmxnet3_dev_configure(struct rte_eth_dev *dev); static int vmxnet3_dev_start(struct rte_eth_dev *dev); -static void vmxnet3_dev_stop(struct rte_eth_dev *dev); +static int vmxnet3_dev_stop(struct rte_eth_dev *dev); static int vmxnet3_dev_close(struct rte_eth_dev *dev); static void vmxnet3_dev_set_rxmode(struct vmxnet3_hw *hw, uint32_t feature, int set); static int vmxnet3_dev_promiscuous_enable(struct rte_eth_dev *dev); @@ -814,7 +814,7 @@ vmxnet3_dev_start(struct rte_eth_dev *dev) /* * Stop device: disable rx and tx functions to allow for reconfiguring. */ -static void +static int vmxnet3_dev_stop(struct rte_eth_dev *dev) { struct rte_eth_link link; @@ -824,7 +824,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev) if (hw->adapter_stopped == 1) { PMD_INIT_LOG(DEBUG, "Device already stopped."); - return; + return 0; } /* disable interrupts */ @@ -858,6 +858,8 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev) rte_eth_linkstatus_set(dev, &link); hw->adapter_stopped = 1; + + return 0; } static void @@ -888,14 +890,15 @@ vmxnet3_free_queues(struct rte_eth_dev *dev) static int vmxnet3_dev_close(struct rte_eth_dev *dev) { + int ret; PMD_INIT_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - vmxnet3_dev_stop(dev); + ret = vmxnet3_dev_stop(dev); vmxnet3_free_queues(dev); - return 0; + return ret; } static void diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index b8cf04ef4d..e64481880c 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -1718,6 +1718,7 @@ int rte_eth_dev_stop(uint16_t port_id) { struct rte_eth_dev *dev; + int ret; RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); dev = &rte_eth_devices[port_id]; @@ -1732,10 +1733,10 @@ rte_eth_dev_stop(uint16_t port_id) } dev->data->dev_started = 0; - (*dev->dev_ops->dev_stop)(dev); - rte_ethdev_trace_stop(port_id); + ret = (*dev->dev_ops->dev_stop)(dev); + rte_ethdev_trace_stop(port_id, ret); - return 0; + return ret; } int diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index 35cc4fb186..1c1c10d583 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -33,7 +33,7 @@ typedef int (*eth_dev_configure_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_start_t)(struct rte_eth_dev *dev); /**< @internal Function used to start a configured Ethernet device. */ -typedef void (*eth_dev_stop_t)(struct rte_eth_dev *dev); +typedef int (*eth_dev_stop_t)(struct rte_eth_dev *dev); /**< @internal Function used to stop a configured Ethernet device. */ typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev); diff --git a/lib/librte_ethdev/rte_ethdev_trace.h b/lib/librte_ethdev/rte_ethdev_trace.h index 16f5bf24b9..0036bda746 100644 --- a/lib/librte_ethdev/rte_ethdev_trace.h +++ b/lib/librte_ethdev/rte_ethdev_trace.h @@ -77,8 +77,9 @@ RTE_TRACE_POINT( RTE_TRACE_POINT( rte_ethdev_trace_stop, - RTE_TRACE_POINT_ARGS(uint16_t port_id), + RTE_TRACE_POINT_ARGS(uint16_t port_id, int ret), rte_trace_point_emit_u16(port_id); + rte_trace_point_emit_int(ret); ) RTE_TRACE_POINT(