From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <dev-bounces@dpdk.org> Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 788CEA04B6; Tue, 13 Oct 2020 11:33:37 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4A5C71BF34; Tue, 13 Oct 2020 11:33:36 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 1EBDA1BF2F for <dev@dpdk.org>; Tue, 13 Oct 2020 11:33:33 +0200 (CEST) IronPort-SDR: KelnLAQjjbOWYN8HQfRbAQAXJ27xPBka0r0FCW6MWyEZpkM3cYo7cWMezoxO4iEmGnenhyZ0kG w3x2bcRVjsdA== X-IronPort-AV: E=McAfee;i="6000,8403,9772"; a="162416893" X-IronPort-AV: E=Sophos;i="5.77,369,1596524400"; d="scan'208";a="162416893" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2020 02:33:32 -0700 IronPort-SDR: 6OA+RBNnGLKZ4zeNnIoPskLE799dlqeRY01uI71riLtD72HejGrHb71Spb1Cv4G3bZbpdsoXoS JT6IPdYnJ6nA== X-IronPort-AV: E=Sophos;i="5.77,369,1596524400"; d="scan'208";a="530326995" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.213.214.64]) ([10.213.214.64]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2020 02:33:27 -0700 To: Thomas Monjalon <thomas@monjalon.net>, Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Cc: dev@dpdk.org, arybchenko@solarflare.com, Liron Himi <lironh@marvell.com>, Stephen Hemminger <stephen@networkplumber.org>, Ray Kinsella <mdr@ashroe.eu>, Neil Horman <nhorman@tuxdriver.com>, Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>, Gaetan Rivet <grive@u256.net>, Jakub Grajciar <jgrajcia@cisco.com>, Matan Azrad <matan@nvidia.com>, Shahaf Shuler <shahafs@nvidia.com>, Viacheslav Ovsiienko <viacheslavo@nvidia.com>, Zyta Szpak <zr@semihalf.com>, Stephen Hemminger <sthemmin@microsoft.com>, "K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, Long Li <longli@microsoft.com>, Maxime Coquelin <maxime.coquelin@redhat.com>, Chenbo Xia <chenbo.xia@intel.com>, Zhihong Wang <zhihong.wang@intel.com> References: <20200913220711.3768597-1-thomas@monjalon.net> <1850948.foQ0BKb2Qe@thomas> <c5005e10-b58c-4c6b-c796-6f62d44df4bc@oktetlabs.ru> <13936658.LjDx0tDdet@thomas> From: Ferruh Yigit <ferruh.yigit@intel.com> Message-ID: <ee84e53c-240d-66d6-969e-76093874dba2@intel.com> Date: Tue, 13 Oct 2020 10:33:23 +0100 MIME-Version: 1.0 In-Reply-To: <13936658.LjDx0tDdet@thomas> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v4 3/3] ethdev: allow close function to return an error X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> On 10/13/2020 9:55 AM, Thomas Monjalon wrote: <...> >>>>> dev = &rte_eth_devices[port_id]; >>>>> >>>>> - RTE_FUNC_PTR_OR_RET(*dev->dev_ops->dev_close); >>>>> - (*dev->dev_ops->dev_close)(dev); >>>>> + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_close, -ENOTSUP); >>>>> + *lasterr = (*dev->dev_ops->dev_close)(dev); >>>>> + if (*lasterr != 0) >>>>> + lasterr = &binerr; >>>>> >>>>> rte_ethdev_trace_close(port_id); >>>>> - rte_eth_dev_release_port(dev); >>>>> + *lasterr = rte_eth_dev_release_port(dev); >>>>> + >>>>> + return firsterr; >>>>> } >>>> >>>> This may be personal taste but above error handling looks like unnecessary >>>> complex, what do you think something like below: >>>> >>>> close_err = (*dev->dev_ops->dev_close)(dev); >>>> release_err = rte_eth_dev_release_port(dev); >>>> return close_err ? close_err : release_err; >>> >>> This is what I did first. Then thought about this "elegant" handling. >>> The pointer solution is just one more line and is more future proof. >>> >>> I'm fine with any choice. Andrew? >>> >> >> Hm, really hard to make a choice. I tend to choose Thomas's >> version. Yes, I agree that it is a bit over-complicated in >> this particular case, but thoughts to be future-proof >> overweight for me. Plus it adds a pattern on how to handle >> such cases in the future. > > Yes it's an elegant pattern :) > OK :)