From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0081.outbound.protection.outlook.com [104.47.37.81]) by dpdk.org (Postfix) with ESMTP id AE5E58E65 for ; Wed, 7 Sep 2016 16:09:54 +0200 (CEST) Received: from DM5PR03CA0013.namprd03.prod.outlook.com (10.175.104.23) by CY1PR0301MB2009.namprd03.prod.outlook.com (10.164.2.15) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.599.9; Wed, 7 Sep 2016 14:09:52 +0000 Received: from BY2FFO11FD029.protection.gbl (2a01:111:f400:7c0c::117) by DM5PR03CA0013.outlook.office365.com (2603:10b6:3:118::23) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.609.9 via Frontend Transport; Wed, 7 Sep 2016 14:09:52 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; 6wind.com; dkim=none (message not signed) header.d=none;6wind.com; dmarc=fail action=none header.from=nxp.com; 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 BY2FFO11FD029.mail.protection.outlook.com (10.1.14.212) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.587.6 via Frontend Transport; Wed, 7 Sep 2016 14:09:52 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.87]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u87E8BCq013556; Wed, 7 Sep 2016 07:09:50 -0700 From: Shreyansh Jain To: CC: , Shreyansh Jain , "David Marchand" Date: Wed, 7 Sep 2016 19:37:59 +0530 Message-ID: <1473257297-7221-8-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1473257297-7221-1-git-send-email-shreyansh.jain@nxp.com> References: <1466510566-9240-1-git-send-email-shreyansh.jain@nxp.com> <1473257297-7221-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131177309924849799; (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)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(356003)(8936002)(8666005)(50226002)(86362001)(81156014)(19580395003)(50466002)(81166006)(48376002)(2351001)(8676002)(626004)(575784001)(2950100001)(50986999)(33646002)(85426001)(19580405001)(2906002)(92566002)(106466001)(5890100001)(77096005)(11100500001)(189998001)(68736007)(105606002)(110136002)(5660300001)(5003940100001)(47776003)(586003)(104016004)(87936001)(229853001)(36756003)(7846002)(76176999)(4326007)(305945005)(97736004)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB2009; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD029; 1:t+Qqr/Pkpcohi9GjDQuCUI/6Tfv5cNXML++Ezry7cYRT24VcRIirsUvGnfsvx5fyzTuYNGRdk9oIaJZcCPqDKX29J2JQtu2gJU0Dfb6r+2IVbAAuzhIJ4TQhmQupPot2J8GjxIP+W0CpwfD7M90LSXZRSaG77Rlv9ciu3ttErhdu7KaJL+v93aJeYWKh4qbihYGvAUuHgB34STjnpM9IxgSXw7kcw/CwveH3hKLsAJ0z7eUFpjEWZrgjYXcsq53og6pk5mLGaifyBFfY1VRN1j1v1t+cG6K4VfYHMGvAo+k1NuF3JnzQIYayhCyEV/1KP6KjZsqHnh8Rp/xHuQLGyE4UcD9LtlOVzpgTTzdccDs6yRp6VVANul6YdRh8XUf13lhyLZgIJj5rA7pmwK2gnM5EmI9I6bmGYZnRA9+VEBmKB/7yK1zHiX0SFIyySZfbr3XK/0I1ER6NvJor+fu9wHBnGxL5PcPtLI/GxXkvPU+aPmNzj0Pb8CmX3ZqcaitKf0uIiWm5U1LxR9V5pb+cgmacTh5KzNRTKePf4cwXlR9zMqb9zd2vrqZV1boPAdK6f0pfKGct5F5Pg5hJ8xtQ1az8HB6EyIv/ffj3s1aDc6bUqgSiGYrzEwdN2wjzB84S MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: fbf17fbd-7173-4e9b-7887-08d3d728a320 X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2009; 2:wphVUqLEBxh2/LPu1oeOflPp3eRJrFZRMaLlSw9DvICx3nw1pSdljiSvfBtZ4pXrjSeo98vn27XGbTkff1lhVmTBMzjO9EG8BX02ThlqVPdE8WMD+fayP5mv3jYvfxTCzLZJjYI8EqtlfwifZxXuZWowh9FVX6B7gLRNF7zHtpgQrnBfLQYVhw+m3Rdz5sYx; 3:V9NuEP/03YWxQmr/VoL2zQ8vuS1BPuxXb1Nh3b0J1/d7JNIQTEyKGUK6JD7jin7FIBrDEXaGWfojIcF2+SLaUEGlFeux+rJ6B/mYGPRvUOZtqahP1QtTFTLdFiPVOfkfMcryu0KUGc+gEhJbT93C7RLg/E/0O9KxnF3lTd0AEdeDy0/SHgLRJOyDVyWQ9/k6PojJat05jg0SEu6cCBr1TLg6OTRqImk04KeEwJ17LeE= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB2009; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2009; 25:QpyfxVsWhbRKyWklaCZr5pm4yHUmUql8vNiVx7ONKQ6SvnQz38yOLd5wT8azyZEtqwcFleqhuMSdTNNunt0pPR6wwH8xuGl5KxnZKjtrtn8pt+qpVpZty1zItDiarc+mcYxN23kJKxnWnx0Bt5R/S7N51omkrZBpN21m1wNWwp2kH/DqDFRbuiBSijvy70AU3B5Pq94lZF2rGIdcO7ZR/81CfUTqk2MQRsVrKoVfgIg4+4ucGphhOUacLbbql8SmGfMcyzBKR8AkIKnpcgRR5zF7Ll1EJ32bEn3PM3yvAOtO/St+vKQbkyVDd5yMzG7M0XHUseMtPdJm4BoumXJAd/6zCyv6B+gmfvJ70ZrU2x7NStmBv29MFHSUYP/YQ+y8J0kdstiUY08i/dmEm2eFy2yz+CtOvMEJw1GEBx69x8HjY306/m/teWr2U+ItIYAybXS6jC3RtHE3R0jaKiiAyRpJDaqAFCOH3e39vdhuHRtemi63oraYwE6x6gU52MCBjbs55oxgnD+wsM2g55ycDWSaINhGvoKM8SCf9KwChoO2r/+5KZt6H5Ss4B8sHh268fDs0okZ/EdC2BRJZKLRG+8sIKSJS68ItAslygUIupne0jYrCvF60MHv1AvvU3qA4F8imxSifNLmRl1BV3JYmL/LxEf+TBaxCtBeKCB9XOtZNQ2c7/dYZAXRro402vzVKpZMTTgFRha+P5FV6Hcs8sxK5q77mCyGknAWUDripic18pe6/idQLl5MTboiNp8o X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2009; 31:RDgQfOoU2IrRM6xnVWhdlkDtxbEnty/dMe+ukzSXzF1yhSPBbW5P5Q5go6b0AWTMvKEtEMoF4iJcdWrKOBHSABuKpTydsoS5p7dohfQDwG+Nx9trhOic0VYN8dtA3G9P5GraPV362yOfFZDI40RLtKog+t1LgX7hMtTB0kbISWkPhdU67vRIfAA6RBwOo5pj8Gcl/jlP/z/yKdS2CDQZEaFIRaQdgW2qarMNY1mXud8=; 4:UVwJa6GuGE4WmE58mlhRKRgA4fJ5k0IqG8K53he3atw5V9wmrHa1dhiDq1D16eaa8KZygDgecaLSmmq1S/ogDV+E7dmWfEVz2tAQHwka5V+qMFGRUfPKOs+OLWJ2AWgbMJ9MkddSjP2d/94oTvAjYh48/HiQZmpbhy8HrILYrjY02OmtTBaCCT07OsN5Z8RkHvjEEZoRjYDbQBJaDFEpfBRqEf2EZpmG3zQDwjxU3JM2Qw5bA4mJ1LhhNeOVQa1lsbYZkK9umKsZZLV+m7YY91QCjOyHVS8DOK71hynRZXtP/e7iZsGySwDgEwmKAlRAHtC5gTVnQ2SzBEPfzq5CxVlMNBLcfNxCMaLCNdBdZwz+b1tFzMkx6JRgON5oPFaIwFA2S3ysVgSc43Zihy/3NXcoarh+hWTC1GCvxDZcn0GKpq39YJpCF6Vj4dfRxoVwdGLXJyn/zEku78LfioKUDVwZqQgeKRYPu42hybR09qt2pzhmbCcwd569/TmaIHLZZ4umofaG3+QABX0pA5gYDOwecrwjIdblOuolxQfYbW0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(13015025)(13017025)(13024025)(13023025)(13018025)(10201501046)(3002001)(6055026); SRVR:CY1PR0301MB2009; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB2009; X-Forefront-PRVS: 0058ABBBC7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB2009; 23:3XBr3S0Ct+nZXN3vQtPp8gPrLay3iQx4jJX+15l?= =?us-ascii?Q?2ktvgDj+ymlKRWMoYEc5ilrvnFA1KF3rY8QJb/Zp59TSPemF4UO/vMKKooLR?= =?us-ascii?Q?OtLlXdyb0TVI6ENjmdkhRC56MjPXy9HFK3eB2bu+aSOE/573qMXw+hg8vOhi?= =?us-ascii?Q?K+Av9k4j+T0f6LFAZydfqIftTGPfRjP0Ek6hIfHMnvW+kfHqA/zMpuLnpPTM?= =?us-ascii?Q?NBDma2llUHMYnKHCTzRp8z8/k0MgiaO/OsgDagkgM0lyBvq68g3JU+cFe/fU?= =?us-ascii?Q?781C5saslwX3EcfTYcvstuZ0wBl+FKwfmkBYLXnkPUD5A/7j2JaTdrOEU8+B?= =?us-ascii?Q?nvpRFgbIf2LKCxIEdG421Ga8Usccm4qLFArp9iIhhwG0F+nk9QZuEbOoZaJZ?= =?us-ascii?Q?6XrBysSCqILn+6vlweMicgWe3duKKscO8usvgEi5Ktp1H6vMBL4b2/2H6C0d?= =?us-ascii?Q?FbvZl4p9kjzUcdNHRciPkktMu8WeBVOpJD4bgZZfvyAZnuS1qstlZeY0LTOn?= =?us-ascii?Q?GmUxLXG1AWsqdl6lEte54hvXTPYldMBEDJRlRNEpxSMEyblPdhu3quizhqKd?= =?us-ascii?Q?XNd/A4ft+e8F/nZ47uzXSB97bsvUFvMxdhUXz14wWKYXPXy4I7mMOm88VuMd?= =?us-ascii?Q?YbS8zhSE6ejUxwmj6DN1PkPRKcbCmzkG3BOvVYBIVBKTJ87l9UwxGdK2Dnzg?= =?us-ascii?Q?38LR1Z8YlEXIIjM3a9N/Ob+MnAcpihLmovWSdd/Wi8UBjo54wtGX53nLG6Dq?= =?us-ascii?Q?N93w1x55jWFILEZZlvO8r/hnvib07ucO1RcR9IcPv4c8cexbxnnKye8VnhAl?= =?us-ascii?Q?tDxaa/IZS2hWeV1vJzKp+vk4Kkm0tEo4t0KjsPCZRKEIhm1ldPJE4HPkslUP?= =?us-ascii?Q?xX9bYfatlqNA3EYMAw1hVujL3JKE5VkcWIeux7Ug0eA8c0/Qq8XUKIOamNYY?= =?us-ascii?Q?AFRpSBspHasu1C2YiM001jeTQEPIPXeLAriz3UdC8TdoMZ9EV2bS3t7NLhSK?= =?us-ascii?Q?38S5y2eoPLvziv1LG5mmpGlnszUEthPl6Veccbxg4KkTcmivmjZIAvSWj3H2?= =?us-ascii?Q?3EvWNXqKcUHRSTpkLtCHlyH/OJmPsa0Bfh6S2krG9IVZ1nWUaXvU/fJdIvj5?= =?us-ascii?Q?1IX112YYrFxLHQrAF1vSPEnEo2jK2EgMlt96RuVkfg3uIrJrgzuk2RG38BIF?= =?us-ascii?Q?DrEWNhcmrYrmp4hyJxLdyMyOz8FHkH4wZs5zW5mkKAZVgsNDWRIkz/vaRug?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2009; 6:wmnrJyKks4KT3MkmGSrv0AECvNSuCOEdH9FQxYtK/oheimR67UFDmQg69a8Xc3+185f/2WOmFlRhgUmxsA2uymjbs9M6+khVg9YtrCmP0wuOCUlmjwnqANIq1hvJhKAKdhh5waiWEAIivO4Jonf9/NAr+43j33qDH1pPoeqxv+8F6hRj3HiM7Ve74/SDyYGPcmgV4HjOGgnY3qpogfNXjUANfgfVyOrZKumLkfTX4+7uNhylPZPhAGEhS4WmLFyktB9/7D26l+swFO4eGwDTyR/wmPglRhxDj2+ogUq5VWA=; 5:Wqv6Npjd5BVA5qhLar7UToUqooWR19TTVrZOK04/lZ8Th6DhZ7TEfp01qND6tMNXmYHjvGVyuEAIEZGkI+M0+zLAI0Rky5mmYz8yntiCmq8KhbPn75qu20d4OPsguXuyFa8r8W64XdTgHXo9K6asBMYawSDkrfGzL1DSqqAYtRw=; 24:pE+SIfCTryR85vxKrXI+kAVF28sfkgS+7FYeEIrmMpFd0cs2FhDkTCdD2kLs9ij6kPc5nOpp4E9SyYpB3zyy46t22SU42d9EA1Ce9TaUz18=; 7:US26700Zj1OI2kOoR+oNGriPSDVnMPj0J/oT/quAr6fTpEhB84xgsTtlDjj15uYb+uP6cJ8FhwN91FLZyezjnJxmq0B8/W89adT+nXPw8DWhoKiZjroN3a45sApQwjJFFq+mPAOvOEWDuJxQ2qrG4y2fgSVuwtqjhopSKlCisCRmlp474zVc2OsE0DD9wIBxP8lrxcRNoQ6Swy/EGm2C/jOpI7/tkAE+X9sb3WfB1KJbpOpAKQSWNuqeVpCxOXaN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2016 14:09:52.2821 (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: CY1PR0301MB2009 Subject: [dpdk-dev] [PATCH v9 07/25] driver: init/uninit common wrappers for PCI drivers X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Sep 2016 14:09:55 -0000 crypto and ethdev drivers aligned to PCI probe/remove. Existing handlers for init/uninit can be easily reused for this. Signed-off-by: David Marchand Signed-off-by: Shreyansh Jain --- lib/librte_cryptodev/rte_cryptodev.c | 16 ++++++++-------- lib/librte_cryptodev/rte_cryptodev_pmd.h | 12 ++++++++++++ lib/librte_cryptodev/rte_cryptodev_version.map | 7 +++++++ lib/librte_ether/rte_ethdev.c | 14 +++++++------- lib/librte_ether/rte_ethdev.h | 13 +++++++++++++ lib/librte_ether/rte_ether_version.map | 9 +++++++++ 6 files changed, 56 insertions(+), 15 deletions(-) diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c index 6434894..b1e82b6 100644 --- a/lib/librte_cryptodev/rte_cryptodev.c +++ b/lib/librte_cryptodev/rte_cryptodev.c @@ -429,9 +429,9 @@ rte_cryptodev_pmd_virtual_dev_init(const char *name, size_t dev_private_size, return cryptodev; } -static int -rte_cryptodev_init(struct rte_pci_driver *pci_drv, - struct rte_pci_device *pci_dev) +int +rte_cryptodev_pci_probe(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev) { struct rte_cryptodev_driver *cryptodrv; struct rte_cryptodev *cryptodev; @@ -490,8 +490,8 @@ rte_cryptodev_init(struct rte_pci_driver *pci_drv, return -ENXIO; } -static int -rte_cryptodev_uninit(struct rte_pci_device *pci_dev) +int +rte_cryptodev_pci_remove(struct rte_pci_device *pci_dev) { const struct rte_cryptodev_driver *cryptodrv; struct rte_cryptodev *cryptodev; @@ -539,15 +539,15 @@ rte_cryptodev_pmd_driver_register(struct rte_cryptodev_driver *cryptodrv, { /* Call crypto device initialization directly if device is virtual */ if (type == PMD_VDEV) - return rte_cryptodev_init((struct rte_pci_driver *)cryptodrv, + return rte_cryptodev_pci_probe((struct rte_pci_driver *)cryptodrv, NULL); /* * Register PCI driver for physical device intialisation during * PCI probing */ - cryptodrv->pci_drv.devinit = rte_cryptodev_init; - cryptodrv->pci_drv.devuninit = rte_cryptodev_uninit; + cryptodrv->pci_drv.devinit = rte_cryptodev_pci_probe; + cryptodrv->pci_drv.devuninit = rte_cryptodev_pci_remove; rte_eal_pci_register(&cryptodrv->pci_drv); diff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h index c977c61..3fb7c7c 100644 --- a/lib/librte_cryptodev/rte_cryptodev_pmd.h +++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h @@ -534,6 +534,18 @@ rte_cryptodev_pmd_driver_register(struct rte_cryptodev_driver *crypto_drv, void rte_cryptodev_pmd_callback_process(struct rte_cryptodev *dev, enum rte_cryptodev_event_type event); +/** + * Wrapper for use by pci drivers as a .devinit function to attach to a crypto + * interface. + */ +int rte_cryptodev_pci_probe(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev); + +/** + * Wrapper for use by pci drivers as a .devuninit function to detach a crypto + * interface. + */ +int rte_cryptodev_pci_remove(struct rte_pci_device *pci_dev); #ifdef __cplusplus } diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map index a08fd20..1fc0d57 100644 --- a/lib/librte_cryptodev/rte_cryptodev_version.map +++ b/lib/librte_cryptodev/rte_cryptodev_version.map @@ -39,3 +39,10 @@ DPDK_16.07 { rte_cryptodev_parse_vdev_init_params; } DPDK_16.04; + +DPDK_16.11 { + global: + + rte_cryptodev_pci_probe; + rte_cryptodev_pci_remove; +} DPDK_16.07; diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index f62a9ec..8825219 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -245,9 +245,9 @@ rte_eth_dev_release_port(struct rte_eth_dev *eth_dev) return 0; } -static int -rte_eth_dev_init(struct rte_pci_driver *pci_drv, - struct rte_pci_device *pci_dev) +int +rte_eth_dev_pci_probe(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev) { struct eth_driver *eth_drv; struct rte_eth_dev *eth_dev; @@ -299,8 +299,8 @@ rte_eth_dev_init(struct rte_pci_driver *pci_drv, return diag; } -static int -rte_eth_dev_uninit(struct rte_pci_device *pci_dev) +int +rte_eth_dev_pci_remove(struct rte_pci_device *pci_dev) { const struct eth_driver *eth_drv; struct rte_eth_dev *eth_dev; @@ -357,8 +357,8 @@ rte_eth_dev_uninit(struct rte_pci_device *pci_dev) void rte_eth_driver_register(struct eth_driver *eth_drv) { - eth_drv->pci_drv.devinit = rte_eth_dev_init; - eth_drv->pci_drv.devuninit = rte_eth_dev_uninit; + eth_drv->pci_drv.devinit = rte_eth_dev_pci_probe; + eth_drv->pci_drv.devuninit = rte_eth_dev_pci_remove; rte_eal_pci_register(ð_drv->pci_drv); } diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index b0fe033..37d78bf 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -4368,6 +4368,19 @@ rte_eth_dev_get_port_by_name(const char *name, uint8_t *port_id); int rte_eth_dev_get_name_by_port(uint8_t port_id, char *name); +/** + * Wrapper for use by pci drivers as a .devinit function to attach to a ethdev + * interface. + */ +int rte_eth_dev_pci_probe(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev); + +/** + * Wrapper for use by pci drivers as a .devuninit function to detach a ethdev + * interface. + */ +int rte_eth_dev_pci_remove(struct rte_pci_device *pci_dev); + #ifdef __cplusplus } #endif diff --git a/lib/librte_ether/rte_ether_version.map b/lib/librte_ether/rte_ether_version.map index 45ddf44..17e7448 100644 --- a/lib/librte_ether/rte_ether_version.map +++ b/lib/librte_ether/rte_ether_version.map @@ -138,4 +138,13 @@ DPDK_16.07 { rte_eth_dev_get_name_by_port; rte_eth_dev_get_port_by_name; rte_eth_xstats_get_names; + } DPDK_16.04; + +DPDK_16.11 { + global: + + rte_eth_dev_pci_probe; + rte_eth_dev_pci_remove; + +} DPDK_16.07; -- 2.7.4