From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0042.outbound.protection.outlook.com [104.47.34.42]) by dpdk.org (Postfix) with ESMTP id 05B7C2E8B for ; Wed, 18 Jan 2017 11:35:22 +0100 (CET) Received: from BN6PR03CA0040.namprd03.prod.outlook.com (10.175.124.26) by BN6PR03MB2468.namprd03.prod.outlook.com (10.168.223.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13; Wed, 18 Jan 2017 10:35:21 +0000 Received: from BN1AFFO11FD043.protection.gbl (2a01:111:f400:7c10::195) by BN6PR03CA0040.outlook.office365.com (2603:10b6:404:10c::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13 via Frontend Transport; Wed, 18 Jan 2017 10:35:21 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD043.mail.protection.outlook.com (10.58.52.190) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.803.8 via Frontend Transport; Wed, 18 Jan 2017 10:35:21 +0000 Received: from tophie.ap.freescale.net ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v0IAYYhW003396; Wed, 18 Jan 2017 03:35:18 -0700 From: Shreyansh Jain To: CC: , , Shreyansh Jain Date: Wed, 18 Jan 2017 16:07:52 +0530 Message-ID: <1484735880-17178-5-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484735880-17178-1-git-send-email-shreyansh.jain@nxp.com> References: <1484660264-6531-1-git-send-email-shreyansh.jain@nxp.com> <1484735880-17178-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131292093213066661; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(7916002)(39380400002)(39450400003)(39850400002)(39400400002)(39410400002)(39840400002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(5660300001)(106466001)(85426001)(53936002)(110136003)(105606002)(50226002)(356003)(86362001)(33646002)(189998001)(48376002)(81156014)(8676002)(81166006)(97736004)(38730400001)(50466002)(77096006)(305945005)(2906002)(104016004)(36756003)(50986999)(76176999)(6916009)(6666003)(54906002)(2351001)(47776003)(68736007)(626004)(8936002)(2950100002)(8656002)(5003940100001)(4326007)(92566002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2468; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD043; 1:aVaiPgJMBcapYzLra78Gr7gZt/gTHspIm/Arhwmh1LKEMQ1NSGm44X/8yvlJUkRao4So8mWgcs2BOMJIXJVGijWpwfjL6kCHNCfnIkDQ2vYT27t0PFPNnEtpWZWD192NMUqsHsOGaVnzwlu6yyfhAPhWOu3pGuPSl8KBMB5eQRi3mcipLIWriZrAWgXQdTvjEXX9/NJwi9vMvDW0MuybF3+eIpWTbOvjJTLWoo5JoKPN9jkJ25hzoao6bIvYpZ0cyQuQyaQljRcy4Er+HgzrYr4cVpLmzhoCo2mOHrpwvLr5jzyMmEpTwkd0q2iI/dl6sE7N+IEIFLHptiqOvXLAebeNGMjV/MTxh1nsK+46H9QS8iy+XqW+XB0yv21uxKKjASscqFJbgRjRoaoQhdzeFJcMTbvRP9fSXKh58i1g0NwpPUU/mpP7xVl3392NIwpvOLAaznkXT3T/tCOIr5z1JElkpiENb2OLM9F9IHrGZGGteClnRf0mM+TMH07YkJ5x4fgaWQTHWTxm5uKsyPBYEIphDIWUMROiOHUIGZWXNim0ljm6XAWFBRjvf8c8HyfX4Oz70/4M3yL+yPzd23j0o8JBkIaCo775hzObJCUg5tENrT7W3nL5iFBgd14r6wNRHde2izN+IW4LaQRPmDqaalTgPdBRB0XW2N6GLDkHHm0yuilEplTSUkxGk8h1ZGpEHKO1aL8PbfN/SxBo8TdS8w== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 4a09e5f4-1a43-43a4-380d-08d43f8db42c X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN6PR03MB2468; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2468; 3:/9Fhy6EN8S2lyTZ12+8H/EFMivm35+VucGRXLvi5Bwb8e4UWl9BzhVQRQn1vmZgbBFARyucdVgeoojLDMiCGiQlG7rwJM9z084TZqzH7Axp/EN8s2LI+lywzjkZ6DqBsVLyNSFs3WQAAKL+BjvOqlB/yGXiWHMTxlctpxM0dXeNW3FKWRO8gcwgNE+vV4X5rbaalsfH+eeHK6kJlofQArt19wHzfjBk6nCP9LZ1L21ZoPRexQ7Eo5elph1OYgKRxGXkGjJIKvA3Bzzz3GI3HblFbxNSFS8AQJIpg8pjGUP9jSPyd+LnortZvZ1pfBSOcsc1MJZe5uP0+8rmzOMdUEEsEFNCoQ134w+MMNj3kGPatkJ5P/hAeeERdrtDhMcLz; 25:oXilNAXENzcjUjSiGlUIiKp39XKu7vhqu7K0rJsllwhrHlBGELVIkUYjbN8oGaATO1a4bNztAr6NtJaw5VKtwjzohRpLF8MNEPHh2BdPOZ23R5TF/MLg7tQ+b4Nl/apEXFF6Ne7/5lTC90Ig0WwQVBuTROxoQeEHyBC1VBZtnPbGReLMSlFufdRbTc/NOjqZrxZhLbT0wdhWsLLrRr/B4u0o/cYkFvqV1udarZZEzTlRKsrfsGBOdYXQKQUq+D/xeEZ2KHDH0ZB2Pqa5WjCmZnw/XLMaOLfe5I1TXk7idHVWM7TGLSPeKaNYn/hjpyvW0WbZoBKJtoToLzz9zBUCWvjUzFQKgTvMoaYTouqe0AG5W9VqPsi1UA38xVdQp6cB7Kbhl16e8AXzZQZLwEf56R5k3Dd293DVSaI8VdvJBuzCwJhB63nMoBy1paTD7H2eOXHiFVozfjE/eoRnx3gBtA== X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2468; 31:Enie7t6Jqt/FytBsWxDOx0BP7LoDRneTC+exjprEFxAgQwwG9lGX/oaS+6ky6HYdSEFXPg4D1uMJwUD6xnRrUBB5fFoz/i98ei85COqmVfqW5mBcvP7WAl7GEqm5SuH5UtdwLuCVPisw720B/fPrh0VG7WtkDYMA46ny1GfbUYF3WoPwmJ2LN+JvwF2/lKpkEEqHPkZumn6u7dWmT9eHWnyxKLlM6/RoXgSvRj+3/H1JHvOXjl418QL8vmTVOW7dh7/hJ2vJ+vYsWlBffxX1Rg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(5005006)(8121501046)(13018025)(13015025)(13017025)(13023025)(13024025)(10201501046)(3002001)(6055026)(6096035)(20161123559025)(20161123561025)(20161123556025)(20161123563025)(20161123565025); SRVR:BN6PR03MB2468; BCL:0; PCL:0; RULEID:(400006); SRVR:BN6PR03MB2468; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2468; 4:IpRMmddyYXvokvUubyE5Sl2Af4Ls333bVqyjoNwIVOPhuwt8wkg9dpr9u0tmjI/DQHu2/6rGAy8ZHfRWxkNTgBTvGb+mQZBdALKo9RkIwMjWmesnO5TdJaVXaTQE4pp2h6vsgfzq8od4yh00afumcfnFBEPmgPeLg1+NcHweEDecw1tVOP1DSIB/PzsWHdNuXai1anW8UrLwYEXnKwqYxucE9PPA6fTtp5EI1DQNpqDDSe70tfa7u1Z6BtfUer14QLr5Qs0vSXarad/eOLFof+0/NY91+omuJ2iLw6Nn92ISDkF6dzgPtugA7WFNPI0ySoYceLTm745fbCRtCjjcohR6Ql4LFYfHqR0VBX7hRuJpQfQhs+PWXUiLTYuOCEIQUsds+Tryg3uy6OgOU5rYBxn9zlWKE7EUBz1BD/DBH+okiqxyvjmAlPjGZVkX/iKOZDBNEjh3HmR0UxVgkNqsw+6uDMW0kDAVxdQNQzkzgml2bkC8E7mqJ03vVv/9wsaPpMgJLTLj2bDmt4Lcj6fXvpapnkhY1GgKN+Qc/X2wxaeCXJAbjBKP3aEnWit4ZtSJJ8UryjAWubRjfJeyyh0i+BbfR6ArQqriXHv6FwLSuoR5iYUUZXM3bTxNRuMrLHv3uh4ojJaxDG5rS5UesHhC7V3aOi+xW72ybbq9nnEt0QM6JOHySaU5/8AAhyWG5G3/5JxTTA+Gs3D9C8UvZiYGA4B/YH1MZ8MKXiXqKoKMeKH8liBTTImxEXsoMgOZbs/d X-Forefront-PRVS: 01917B1794 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR03MB2468; 23:Sp8Hgjz1GhgslIF8AsaHVeYiV1ZQ8LA/7VOdjeQi9?= =?us-ascii?Q?8q5L8+xzdZhFIkzN7pjhNEM/1j0exn+0PteAKIppnkBS390p6RMh6wm9JNtN?= =?us-ascii?Q?VSCmFYfxsIz0UwTaGWo0qzjAbIrxntC4ccCWauZOn9c8v5DLUBbYKcHWm//N?= =?us-ascii?Q?4NOPFqObx/dv6pEXez6vx6GkDeRRXNYUJiKHqGejA/J8DUOL789W106n28cw?= =?us-ascii?Q?Mg9/ZotExI0T0cWZy24Q4HfwQr8RuMzvuDlTyy1bNbtyC/hynEaRQupcJOCR?= =?us-ascii?Q?LwmpMG3qbtBq3yBpP3FkncPU5LShI8oMESH5itOunq8zk1dgOh0QLYQcXLAU?= =?us-ascii?Q?xnLgoTjP091DZVbQ8uqC+0DZinVJ/WxHsDuEZONYjIKtjf/otnzBdN2vmCAG?= =?us-ascii?Q?Jg191GcDeoA+y3jfrwh6r8PScNT0+hLghUEUiLFuoEvaTLeMOETSbprejvFm?= =?us-ascii?Q?I64yZv0/hSicPOuaEu5s0JaiLMDSgm3zzAVpE1wm8zLyApS7MRzq9RxOGu1p?= =?us-ascii?Q?WO+5IyoAWJtj67XbhWlAfAdjN0G4D8Mx1J2DIN7LSjpyCk9BvivbgdwRbiwm?= =?us-ascii?Q?65ArPBw/7mpPmVHzlLz4QJvcl3tJgwJEWaOre1NV8YtUTfZ9YgfaF2XQ7gCv?= =?us-ascii?Q?pu5hR4Y5c1XOU5z7sfAnFnurXQ8Q+upNQ/DATvKzw3mQshYolcTKcKL3Hcm2?= =?us-ascii?Q?nDtCUK0yjr3x3Xa513WLO62kQworJ68mJwlCdX/+zebEM9hqtIW5tV2ynS7e?= =?us-ascii?Q?VjRWkmxbaXAkbXIvzX9MYeblxj8EqA/okYb/lgcblEQLq4sr3a1z8u+dpKEV?= =?us-ascii?Q?kFaYzBpXmVIdQIwGwGJjOMdxNnB/cQi0y/28KMS3C2uuT3nnm/JDVY71JLBy?= =?us-ascii?Q?i5KcBHeYeAR2T+3uovEEK5hA/Kqo2LMNZzJSKKaYx5ROHtFaGB1H794TinUY?= =?us-ascii?Q?2hhwPd9LxWTtkvBy84myhBc6AUa8H4cUM4qaWNzwhHEBJX7uBFsLEg8RyLWX?= =?us-ascii?Q?v+PZAnjWOPVAL+RstpoG6WRCwrd4drKGTEwK2ZYzTfwuGgC/tnw7HcmlptTV?= =?us-ascii?Q?DVXoLYTk6vNYO8boJknJS3dv0pw6GbNI+B8xcXuJVRAdYLhkrU8IsyBfK6nf?= =?us-ascii?Q?mraxWQKnwfwBZq65C2IbvNFt/bbDKhT3Kf6y0WHU7xrsadUvRvUoow0JHVWE?= =?us-ascii?Q?jcpGPSaLKv6Gi8+Oznf9bwtVNzUPWjtPiY3Sr6WAs6KvlIy65RRIA/88M+fN?= =?us-ascii?Q?sB8M9FWKa1+rqB2PS7ZZ51fLHRDeVhTr4gCHZu7qZ30VSY6eHkWAxWUcqdCw?= =?us-ascii?Q?YUQJVdOOxyrfTtrqnH5Px4=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2468; 6:2U/ZSS0g3TUSiJZUtSeA5Vkv36E+ozPYYYU6gvzcgaGYUa1ylA9RrCEd6kxDjzu7KyFMNdn1bHINy4TGuGIG7KRu08RQvXByJEwCZGtrFD/v1qEdj+swmKTfYztx5lIBOvsN/MRtz7BtMK47LnIwF7OKE7QdG9NLZoiQ3icHsGzErG49jJlDgjcnTntJbb9oP9TqFCEeXkLo86hmfURfosubDdMpjaFwsX6VskCjGlP5Z67fzFgcP2Lng8PBL/bLw/age066mHHWd3kY7JV6dnoWL0HMa16seyAfBnyo2g8PaiLNJ3B8kPINfyQ4X/pGloZxo0nqYi9Zcbau9t8dM0x6+g5affCMBgboAAIDM8xsg0YOPJYwNc9/KdDdUmEXc5S6xP3vLq4JqQvBKSmE/AkQf89LTarL2wde4O9uEkiri3DeEcZqxbVmaO3Xf0qP; 5:YkwI2/edbsw3Gk7OSX/V1iv3/Q6On9cJf3CTzv5lp0IH6OiM2lly1E7YZC1VIKvyamOfvNb9DeRJixmE5FknowXQMfcK9NtHsJXJ4WApv3CjlzLSECZSc+Aee4xvF4LBrbw4trUAnP3ffpEwRTXhD+youp5oCCbGXl4vBl8Cnbl9CDnF52FQDLmH1hqre30b; 24:0+zccxTEaaT+VOqZivJ+u93ZUjyj34ZRbIw4GoYq2h0bnU9U7suYZHzlOjp+OMuz+0o0O/NhSDZ8HE9g2813rRF5Uf8V6YzQXRlNsLXtUUw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2468; 7:3+KzLLldxD46apZgg98elvC1IfTI4pXcL8UoJ0fYU2yqvz5+uxreC12K6TKJR9X8esgsX8Rfl5u1xKjGF0XiL9sXuwc8LOUXbmocIsE2b2SjJKbdym3NSECgartkVoET+ePt0epvBxZA7j6//a/PVX2b6ZE37w9b4TCafi+DE9plB6Nr4ju+VmH8DPNFUFwTxPAE6DaavlmS3jPDX6BHHQFx3uAs12kq1w9MrtV2tX+KrOAVmumpSFOuo2HKjATMiiW1fTxxYlpDIbaEMNb6XCF+CyR8yoFVEM9el3LPMVDMdhTelamgkSwFNfHn5Mz9T5M3/1LPO2B8/Dd55/raEsOJMoedJnbmoTR7hD5t2E+2+CeDN6xNYnhcQW6Iq+R53fpl5a1nEDMCyHS4/rSaYTq49+K6U3K2Z/UfkDV4nq+Rz74ruUypSqYKJCItFKOz/K8zFrsSu3UjeLa0hsTv+g== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 10:35:21.0101 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2468 Subject: [dpdk-dev] [PATCH v9 04/12] eal: remove loop over drivers in device detach 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: , X-List-Received-Date: Wed, 18 Jan 2017 10:35:23 -0000 rte_eal_pci_detach calls pci_detach_all_drivers which loops over all PCI drivers for detaching the device. This is unnecessary as the device already has the PCI driver reference which can be used directly. Removing pci_detach_all_drivers and restructuring rte_eal_pci_detach and rte_eal_pci_detach_dev to work without looping over driver list. Signed-off-by: Shreyansh Jain --- lib/librte_eal/common/eal_common_pci.c | 41 +++++++++------------------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c index 4f155c6..7548ab0 100644 --- a/lib/librte_eal/common/eal_common_pci.c +++ b/lib/librte_eal/common/eal_common_pci.c @@ -259,15 +259,17 @@ rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, * driver. */ static int -rte_eal_pci_detach_dev(struct rte_pci_driver *dr, - struct rte_pci_device *dev) +rte_eal_pci_detach_dev(struct rte_pci_device *dev) { int ret; struct rte_pci_addr *loc; + struct rte_pci_driver *dr; - if ((dr == NULL) || (dev == NULL)) + if ((dev == NULL)) return -EINVAL; + dr = dev->driver; + ret = rte_pci_match(dr, dev); if (ret) { /* Device and driver don't match */ @@ -328,33 +330,6 @@ pci_probe_all_drivers(struct rte_pci_device *dev) } /* - * If vendor/device ID match, call the remove() function of all - * registered driver for the given device. Return -1 if initialization - * failed, return 1 if no driver is found for this device. - */ -static int -pci_detach_all_drivers(struct rte_pci_device *dev) -{ - struct rte_pci_driver *dr = NULL; - int rc = 0; - - if (dev == NULL) - return -1; - - TAILQ_FOREACH(dr, &pci_driver_list, next) { - rc = rte_eal_pci_detach_dev(dr, dev); - if (rc < 0) - /* negative value is an error */ - return -1; - if (rc > 0) - /* positive value means driver doesn't support it */ - continue; - return 0; - } - return 1; -} - -/* * Find the pci device specified by pci address, then invoke probe function of * the driver of the devive. */ @@ -407,9 +382,13 @@ rte_eal_pci_detach(const struct rte_pci_addr *addr) if (rte_eal_compare_pci_addr(&dev->addr, addr)) continue; - ret = pci_detach_all_drivers(dev); + ret = rte_eal_pci_detach_dev(dev); if (ret < 0) + /* negative value is an error */ goto err_return; + if (ret > 0) + /* positive value means driver doesn't support it */ + continue; TAILQ_REMOVE(&pci_device_list, dev, next); free(dev); -- 2.7.4