From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0074.outbound.protection.outlook.com [104.47.38.74]) by dpdk.org (Postfix) with ESMTP id 04087FA55 for ; Wed, 18 Jan 2017 15:03:38 +0100 (CET) Received: from BN3PR0301CA0011.namprd03.prod.outlook.com (10.160.180.149) by BY2PR0301MB0744.namprd03.prod.outlook.com (10.160.63.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Wed, 18 Jan 2017 14:03:37 +0000 Received: from BN1BFFO11FD027.protection.gbl (2a01:111:f400:7c10::1:165) by BN3PR0301CA0011.outlook.office365.com (2a01:111:e400:4000::21) 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 14:03:37 +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 BN1BFFO11FD027.mail.protection.outlook.com (10.58.144.90) 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 14:03:36 +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 v0IE250w026776; Wed, 18 Jan 2017 07:03:34 -0700 From: Shreyansh Jain To: CC: , , Shreyansh Jain Date: Wed, 18 Jan 2017 19:35:20 +0530 Message-ID: <1484748329-5418-5-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1484748329-5418-1-git-send-email-shreyansh.jain@nxp.com> References: <1484735880-17178-1-git-send-email-shreyansh.jain@nxp.com> <1484748329-5418-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131292218169793448; (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)(7916002)(336005)(39410400002)(39860400002)(39850400002)(39400400002)(39450400003)(39840400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(86362001)(110136003)(5660300001)(305945005)(48376002)(8656002)(2950100002)(53936002)(92566002)(50466002)(5003940100001)(54906002)(6666003)(189998001)(33646002)(47776003)(626004)(8936002)(97736004)(50226002)(85426001)(8676002)(2351001)(81156014)(6916009)(68736007)(104016004)(81166006)(36756003)(356003)(106466001)(2906002)(38730400001)(4326007)(77096006)(50986999)(76176999)(105606002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0744; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD027; 1:0N6ERwNcTWEvP4NbQ4TtGyXafaUyjFIFGL7ZqvF0pjI6X5PIjhAbtXIyrNsWDq2XFvBbATvELxbwpY827lmprKOOyQj3XWl4AyhmjiVojG694q+jO19M7buXNoQGh4RxY3ZJQO1lzjVUsYrKQSaX6/jRHZ9DV43LJxI1hfv0vn0qxxqaFPyI++IIG0zBn6mc6f2SCdYKEQsua7/Eq1Pvs9eLG0mCe9xJSNIHS0rtbxUeCDhykLEorzZqtl3h/WQf8ffTLwsKYPRjWCtaLbBvT1ZGQKsNBuxaODr+1tuVI751kQvsyLfAcuhuVPrs6BbqZ9N9ytD0klyFEhjYK2mX2HHtVg1MEp+jnNcKsF6HzLAg+m6Cppqk28iqXjhNjWPvUNiIOt/izJj1gT315g8HlNFz/lEaISO4n2SD1QC7mtJups8LEUFfdvO54qtLxefouw1/G47YkBvKyqCIUmjxDiOyYlSQ1Br2UTDF4RnNwN8bbSmIhB98c55kISzbkgWg8fKwRTEma4li3403QIy5ZPwqJUjZ9JZ5fKJk/nSFj46sEXqAwwtdOs0Y9xhN/cEUYvp9PwWS3IIF/b/4qNJXuaDTvujWu7o6So26D/k0+QLSsJkcxtqAHhP7s+VZ9QGniNNr08wyq9WlG6oZkwnIpcvvbFTr4No84wt3pItHOphZXDXtGDTu+hLRgCtlZziBEwwJnVH0ibKhQfGBaW/IkA== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: e68896ae-ca23-4d89-3a49-08d43faacc3d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR0301MB0744; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0744; 3:HZjPQ+nKBSdJ3JCodbSZdTzu0FwtbxwIjFX9pFHL/JXT2Q87JKPcbyqGbfe5AN9SDuHicpfwlMzgKt8HdT/oF8gERKDFhYRxLlzqmlx8cCrmrbYurHZNAD/33rc3C/RY1G73zdxClMq1JpH3TWOSo3Cp63hTKssa50qDvhwT5OQUMy+XB1Bbag2ECICuehz58cBBDjbRcHYlfi/BuBloaLQpCfcCBVTBFPctsHNO+83PBMbWQDy013LM74NZnFdM7C5zPuSnInLCfXsuFPFuedIVCL0/OTt2kv8R4dGZFkunIWHsViJpunAVnR1JbekDa/VXkxYmIhknX1hn4HVJDYMhTEW1FNl56IB3U9XmFCs1BjMFvVAmTYWltSIk/BKM; 25:J0u6VX0ukkgVj78feATuhnEAWEVRQnj2umpG1QEKWBO7rgAgxuWSAUXWsXZr2SjZO8TLfeQB6iICt8csV8cn54r1MOnsojDsFW+L9JPAfEJFBn2BOUkEBShpsY04Lo5nP+xBxGjkrPIjCl9ig7Fl9MnGpeKnwJGwQboT5FZ4uS+rBCvSsNDEDMbBBW8HolJvTY0Cc97rb3ItnVbm467d574VRuH0ECZMpVoEQZivUd+9rCeDkec6UUQbr8DhIhSTVy126XHNiHdQrP4W8ZnYdPVJxtgSD/uPAkCFVJ8SC0EfcUTLHi1529cSIKwxGIXauc5J4QB8xFJVJX3V6yIUHYgz3hO9igJi0dz9bRfWNSwwOHl1zoaHRI86pOh6skLOuTew74G+6EOwLy8+zG+kP8rgQj7c7CoIRrFuVfff+sfQQ0TJVE+WwwDMWVrU8zR1lHde25oR7LtSrbKahkrtHg== X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0744; 31:oGODgAJI4+YnzEOI7oqMcOoINdp3TnzKQ+5SHe0lT3Ruv/RWaLYqNo/0mmiVT/CBh2nsQ/gLd0klDKWp8x1KEUgHyOIN7fQprmM8xCJxKW3Apd1p9xM1513xOBRd+aP2QiKvi22vkV5TjCGPm4fFioBWQK26Ih24lsP46sq5KRQR/kUmoYzQgUhUFfdFtoZNS44+xD6xflot4j9ibhUDRRgnjcfcWdEzOkTF5OaIunaNyOLjRKkz8QpQF6xKyBev0Rf+UEm9e18p1WIk+QU1cg== 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)(13015025)(13024025)(13023025)(13018025)(13017025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123565025)(20161123563025)(20161123556025)(20161123561025)(20161123559025); SRVR:BY2PR0301MB0744; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB0744; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0744; 4:ASD2hGV4FK89obmJQErBc+fbmDYaMcTmHYDCb6MGrJ5YrY7oTyM0B+RMfR3v841cyR83r3I1044p4OK5hO2W/pCTXvPBrOg+XGJ3wNwOc95IwPFrKP40ILIB6oFzeGu2Hzw58jNIMwwhzYRkznY3FzOXxneQi/mge2VNlh4Qg9/IsaxZ4mtfgQVmWYW1OmQacGWA7r8YVMQK+zJ0onlP4HYAscT/7J+dI7NUyJ1jajrrHDBPQ6DwtkOPKFYtyOmMZjLn7r9dylTeAEz6TO8hBQItt+58FyjN+b9c4Ed2LgT730Ac0VA4x9Bsj1+6aNr0Ng14dijHjrbq1HmtHD1L7cY6vMpCytMO0IbAjGpOvr43zUhdoaZZqPq5tyeDETxeZTFHSmcwqQW4J2SlfA8bo9e+FXUbf51kPqhZVxaXadNhTosaKFC0rDwXIsEt1UKq+PtIH6d+dRJ/T52o0MdhmaE2posmR56FJQGbpPXOAMoSJdD6Fyax8c4N/DKi588niTyCDELlkErRMEy9wuYLzzzJAijvNggIvVs85u5SXCwv2bMkHG0yBOOuF2zvqJ7BMzeonhHuiWGnakeDMGhrUUmrPzbcKYeSBXietxL48B4Ydh5INYeVu7aEiOoCwxGhvz9xMrIgbjNJw3Ug5NjcquqPW9fC4VvRJIjBRgNcSLyLk3s3Ov02/h5MAGc1DBE6R49/p+wAMHNqpkhQ2caliKvRi9xygbTOTgCU3Lg4n3QOD7wwJXZj9ssW8Sp2nGKp X-Forefront-PRVS: 01917B1794 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0744; 23:FLzTBraHJl3CEJMMKjRB9CPu+3WM/B41UOyf6Js?= =?us-ascii?Q?xwTURP7Buc06Edb1q1OnVEMpq/AqNP78ZgTO9CemYCbvpyFm89YBBmsb7aIf?= =?us-ascii?Q?V9g4DwuppKeR0lz9xokCmL/up3TOWsWWyevFlqe/nAyPY3vretA010PyCdtw?= =?us-ascii?Q?5XkOnm8myCcWnJkbBnRhXTkuUCc/6aLSke1tyO/ef02Hn6Nt5cHET6iasveb?= =?us-ascii?Q?czh2OL6NZa+k7jVQV+f1h2mf7A02v7N1k9RZ22qlKanwTUyWdlSOR44lZfJ+?= =?us-ascii?Q?93O+ad/XC/MZNdjO8ItRiCTplLyK54IqsoopWKfT/ktWOjn5iQWTz05+4v2l?= =?us-ascii?Q?vSTErFBQxebCeno6NrsnEvajQU0rhhTDhaUr9uCe5R9Ws++FI/dps0SHeEdu?= =?us-ascii?Q?Hos10xtM6nQ880EiHkDQ2XG9j37tyAeiS0vlPH4weheOmgKMWREcz2Jt2c+5?= =?us-ascii?Q?xhOcN2SgnpL99CrvczFIoq3iMb5Hw3MnIHjeq/aOUpXLsk2GUW/eNbcyFwt2?= =?us-ascii?Q?Z0TNGBb2KUvBriMSfRBMviGv6OVq5dOh6UNe/ZU3K292Hxh150Idn5Wb9T21?= =?us-ascii?Q?+llwjJe9Z7OE9iTcPo68DhAU2HmHjfVNmkFeYneMya4h8Q2CGMY+Cc5bKOwY?= =?us-ascii?Q?kMFKxItIvmll3NOJb1G/WOMpiTZvGeZyND6HZIkuIw6DhWW3qNMkr2VzT70k?= =?us-ascii?Q?yXQQJuLeXuOoyGhhx82ESbaOncZQBpB/JLsS7IYdKeDYnByKNQeg7ACam/Vs?= =?us-ascii?Q?ifqNZLerCeMKIkkaKiSQIWO6Kd/00vhEwus276hzF2fN9TyJRRzUEovntV4w?= =?us-ascii?Q?LZL4zSWPs4siBC68H71Q81fjulgVChWLA/GKvpxVx9mMOD66+f51BPG/6PEb?= =?us-ascii?Q?bCanYMKQVd3gm7MUR1ubJHpLxj827TVRxozZwA/pWspTymoiL1DSDfKoOBes?= =?us-ascii?Q?1XbjB5ChuRMrEPVZ2g+GOGyirJI3azygAU74oQVeDpVmRU15R08UNp7o1EwW?= =?us-ascii?Q?mMEEYsnJ978b0Hft9GAbbAQO4n3/5KRhZo6mXVXQcAiF9QzV7GoaCNmFwEHk?= =?us-ascii?Q?5HjS0SjciD6XtcBaLtTHoH9ofJmNcuuy8viU0O84BTzEzHmKDasz5vTgAhQ8?= =?us-ascii?Q?wV9oAzcrzRSrCkRdTDBBLePw/KpkNu+jSPNLWbdS/m0C9dtamMsTEVWWLF9l?= =?us-ascii?Q?whB+PtzUJ+RFTwCDn7R4SJr2VzlhzUISAqe6CGz36FwJFPtAJl/5kvBsqDZe?= =?us-ascii?Q?+N38RtJeuGj66BO0DLXDUbZD5M8N0vl5rpFBvX4O5ShAYaODNWDbhU8iZdLA?= =?us-ascii?Q?s4Hb+dS0DKKlLUJWjhhF0Hss=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0744; 6:1ADnsLYeE34xMPafI1wFn2nLVf/h9M6ugMUuEWkD5hlCSgvcU4OMKLCPH6RjfPnDiT7L+HUpYq7o6fqq2BpUVxoLFa3Kfpr5rC1FfN6Igdsv7Grp0hFvZD0dw0FShLqf2t4thYh9JayiOVT5RMkqCLOQazLFmtlIV55VrSjsMiFxXTqrRepRgTkS8keIT53Imq3Gow7OjPctGexsa7CEGjFM8QTK91jTTxG6l8guwiAxIlf3Cs0Jc5hR/ZFM/jGZcLBvba1QasmRIAMRdvmh6iznCu3uJh90mH6buGIPHO9Fb3MsTvjB5ddqgsF6U28Q+deaGeVnvC0eUzkY83nOY0RLOh2xU1oEQuNFw0TT1RKkD/93Yv0AyU0trqiskaBk+s/blkmC648d9B7FGa6y+0dZmShobSYCrtNHgwowdrWnJ5VgOw0rqfw20frm1dnf; 5:wHM2LBCSugJCMFXPep/hqRy+qJ1u3Jgx9SiDOonxzNNKif3OyE+Dm4KiPLvF8L9dykLHgXgkwfRSTfYfNUxbGIA+IOqRV8MInjMCtxbylgd7IY/aE0rPNPvGSUT2jROfUGbZ2r9dH+gH+pd1Urm6KsDI+WVVWvxJClHyIYoR+ObfRKZ2qeQxso4Zx2Zbu42m; 24:KDUCimewLa4U8tR8nJb4YGOXmYJNZ2bnpnPKKStje6mOdKkyo6ZlUxraC9Rn3WgGhwWBztQgCax670XVogMOumgx+nd+RuQAv2oE4hia6BQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0744; 7:RX8KZQ0c7Nj2UQFLSgBNslM4cYOuRKBjzLXB5WjP0oHhcyFUy5Lle81dHiJFt+qmsFdIFkonTFUEVIomi3+q5Zf8WOxbV6l8taJzwYKupX1LOut1ckXfZROe6kLVeTaukxmSaEUwTlPDQKyTx41KHli7QHkOeaXrU4QlKRpmPLx9hPj+zNxqeKYd6Kex0F2fwzYGh5Nb06ATxEVqPpRkMyXLw1ny8CJiiICyM8fid2AeL/wuiZ2h6XqydaE+cq4HIBQ3hAN4BEUtv51nVVMKGkElRUFPGT5+rl5HQtqV/E8jgNYI8gkMIFp6eYWJXeuo/yVRe48hT6FsrKEZuReYG1pmzZVYhUA9YVauAWMXcvnzevYJ1L0ycvok0VMgOdxHaWFy37J8KGqMdYmYSyj62IGIFsM02V76ALaj1GGmfxE8Lq/u7akEjpsT1u7w+NFfrfyLDLZpO6d9dekkmVab0g== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 14:03:36.6985 (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: BY2PR0301MB0744 Subject: [dpdk-dev] [PATCH v10 04/13] 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 14:03:39 -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 | 47 +++++++--------------------------- 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c index 4f155c6..8b4ae2d 100644 --- a/lib/librte_eal/common/eal_common_pci.c +++ b/lib/librte_eal/common/eal_common_pci.c @@ -259,21 +259,15 @@ 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; - ret = rte_pci_match(dr, dev); - if (ret) { - /* Device and driver don't match */ - return 1; - } - + dr = dev->driver; loc = &dev->addr; RTE_LOG(DEBUG, EAL, "PCI device "PCI_PRI_FMT" on NUMA socket %i\n", @@ -328,33 +322,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 +374,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