From patchwork Tue Jul 12 06:01:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 14769 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id E92514AC7; Tue, 12 Jul 2016 08:01:24 +0200 (CEST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0089.outbound.protection.outlook.com [104.47.33.89]) by dpdk.org (Postfix) with ESMTP id 98F5E558B for ; Tue, 12 Jul 2016 08:01:23 +0200 (CEST) Received: from DM2PR03CA0005.namprd03.prod.outlook.com (10.141.96.15) by SN1PR0301MB1998.namprd03.prod.outlook.com (10.163.225.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.534.14; Tue, 12 Jul 2016 06:01:22 +0000 Received: from BY2FFO11OLC016.protection.gbl (2a01:111:f400:7c0c::186) by DM2PR03CA0005.outlook.office365.com (2a01:111:e400:2428::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.534.14 via Frontend Transport; Tue, 12 Jul 2016 06:01:22 +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 BY2FFO11OLC016.mail.protection.outlook.com (10.1.15.61) with Microsoft SMTP Server (TLS) id 15.1.523.9 via Frontend Transport; Tue, 12 Jul 2016 06:01:21 +0000 Received: from Tophie.ap.freescale.net (Tophie.ap.freescale.net [10.232.14.199]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u6C60qWg006202; Mon, 11 Jul 2016 23:01:18 -0700 From: Shreyansh Jain To: CC: , , Date: Tue, 12 Jul 2016 11:31:13 +0530 Message-ID: <1468303282-2806-9-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1468303282-2806-1-git-send-email-shreyansh.jain@nxp.com> References: <1466510566-9240-1-git-send-email-shreyansh.jain@nxp.com> <1468303282-2806-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131127768815829985; (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)(1109001)(1110001)(339900001)(189002)(199003)(104016004)(47776003)(586003)(6806005)(87936001)(11100500001)(106466001)(189998001)(110136002)(356003)(50226002)(2351001)(2950100001)(86362001)(575784001)(7846002)(229853001)(305945005)(8936002)(105606002)(68736007)(81156014)(50466002)(81166006)(8676002)(76176999)(50986999)(97736004)(48376002)(85426001)(33646002)(19580405001)(19580395003)(36756003)(2906002)(92566002)(5003940100001)(77096005)(4326007); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0301MB1998; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC016; 1:7dZE3NgL2k+EM/hHqa8xU60yWotiD3OFc67ZCN8sn5OJ5O9/96hSIR9jy8qc3OS4MUyyQpq4ogqoD+IXwp+rEjws9Ofqql1ce7LSvqYwgUITyzZXhFH0sNa6kkgtZHg6F89Twfbp1yzWen9KMAVsp015szK0zvJhPa6N1iX7cG8Br5B4PJAHCY1OPJ0AJcSYQpOxnz+sRy2OMrQ0uvtQ8C1n+egvY6wrjGsxYy6qjAH8wT1ytvNdcbbuG54GFZymZNCLBj/ljZrjlfEPqzKGafmfGPuLwoyaEauzWlLWdU/UJGNKe3u1M6jFqId2NOiu3lhbgUVam3nMBbBJHcAShgkejlGmFSbRlidBymwcUAasJ6h+QGDA6jBn3WoLauWPDNDc9/zBiz3YlOVIv9stQZJMiEVXmw5wRZaJVPGS2wsOeBovkR8na3Yg/z/Z0fAeZuSddUVP3f0aZywC766NCTMpR6F+vtLn+W5b4wiV9egpQQgejeJ1EJjgv85mNhKRFMlC4itg+AppSwON/Ubyy0PWNLfw67u4q+zQ/5+iDAnIFBrRVxyj6ZIYcJzj5HJGSHe399xtETTOTTmpzJjdHcedyUOA33M/QJjHwnhBLDQHFuWJNToP3ks6pwja8rKG MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 651dec5c-c936-4495-9793-08d3aa19f2d6 X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1998; 2:tLGa0h8M6AWpDA7mX66EDmEnAUmaeOMnZiagAozttaKdbRg/erS8EHKWepNpVBZ9k8Fwt08OUvNBhswIdZB13UwQywBJgT8zlIBmSiGdmHymXJ6NqgsQ/KmPcSXnm4bKqu1veI56paYJscAoEl3chqZLps2BSG+ApwsiAzKi+sDd9okdu2SnVcmu06Fwffme; 3:afwqcIz7/ngulvLqoVuY3NvaWPasrstwJIq8FKM29OasS7QGxPvUYXUOmOqCdOyJ6661gW8/wQrteY6dCxpcML7NdUJSwPvLrYxZJ/WEzsHk4U6yIM1eQBuGFV7qQLT/jWORItC+C3fdopjWJngkPstxQhPKzPanBslB9eV+tfACZ6GC8xmujefvc6C4TBr12eOoRm5X7LgLgrSdQe1cTaLHIsXQe88F+ri2wd5qOOs=; 25:3hXqSHHvz4moIDcPc6Gq7C6RmCxCtIakk2Djo50Wvci32DuQjF7xJA+KM0UWAsDxSkP4dNMGu3kzYiMXpHPNXBhKThgJTaOEwozAMqFzz9Aey+Vggt1Zi4sjD74cGaloiutcBYi0RvVTqFHe9QqjL71tqo68vF9222UGpZXwbTaIoO7oHjwZFWy6yosOQJ0FrWpEKGsG5gtUycU0EWguSRLH7Fp90RZWPvcL2rqAHltVYbZwIVCGAK6t1zL5azONf/HkPhZq6udscjNk0n7nZ9nYf0thy6KA5xTJNfzpAqAdfi7ZRtX+ZU5IpXeRFxH1Z6nmURO7djknJXoBEmZaSqskS/3hb0sM1PQBqF2lK4ZKxlt2NCKKfwnneSyvFODTC2orEdRJRycEAwsnxcRzrYd6E/leMA1/J/kqLy8PBNY= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0301MB1998; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1998; 31:xklwWegpHVyKPG5q5XaerlFBMQ5SfG5RGfoAcETsngiHdnk4GAgduPs4s6Ka8x9nOfvt3S2Ox9GaWf2MBIVvZjaG/rzysVEZ4eog56wYy79o9zgZmWdvCHS1V2JZjgKq4rgG2J5yDkQ15VH94xH1eML0mcbDJkvvB6uPssLiFFaWxEPKUfxK083z3GJDuqLpNTk7t3h8jLMHB8TouB944w==; 4:aXZo9nHpVVC9LNwj+0+48iKSQ7Q6D9p9xKnw4qK0MPX5csAPZbGX//XkOtUZ+SnE+/x2OmgPeXmWkRc5quxj5Pr5eHHvIPb4IVoOgge0zh3vM11L0cuvVT/Bd/wQxd93deWJWsXzlONqDvYj7D9hxTx9KiSgbwzPFDE1hbcgMVgfRX/E6xmjMsSVBEoY7mEgLw7RNVYUq0fNwbGK6SMeR4zMHqILfWRUwr34oqheiM4dc28jMhdVNRsjPBRzCaivczCzdIxPdGuH3LnhpcVnsxaNUrXr5VK5kVya/vshZ7so95RhsCmd8P5rfWQcNz3UBylW8lfNawSgURIJTz2u9kSMWzlavDf6oTbjGCiux1KzzHWDlzfIdpER4bSWiasaL+1EVg+hJ4LylYbqdegPPJkdxeCQ2AveV/v1aCDeCGbaudIuYoGFwiYmuPKda8wJFOoWuVRHhwDZFiwOYT0iWOE6FDBI6rRSC/Tcoypv+go2540KetimUwq7S7SQx8Rf7bxvXhUvrDU0lcJVnAj9jQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13017025)(13023025)(13024025)(13018025)(13015025)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:SN1PR0301MB1998; BCL:0; PCL:0; RULEID:(400006); SRVR:SN1PR0301MB1998; X-Forefront-PRVS: 0001227049 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0301MB1998; 23:Jw5pqCzhZ/txl5V0EuD6VZjdG6nrhxcHSD4E3a2?= =?us-ascii?Q?K0Mcq+JnPdIhjHIKztJSbr7lMv47cgndvUlqv7o3E1rM18UXQVobT3apwUoM?= =?us-ascii?Q?sPl4QUEEBGXi8hHPYbq03ciOl+bOSMTsv3l+MYAohDQE1ydGovjE5Imhwyly?= =?us-ascii?Q?LORIdDxGtpQJMx3Mhl9FiUzuSU3OFgPJZR8duXASsR7fAxWscfO57319Qun7?= =?us-ascii?Q?oGH5tr4xsKwfO1wby5bvpSiQHEwaDHUCRICL2TPGT8nMVFF5QDrbEb5qnj5T?= =?us-ascii?Q?vC/wuazL3SRS4mrhjFb/qX5keIWRzScfrsQIEI3NJ4FGrWjBQZvPDo7GOy2e?= =?us-ascii?Q?Km8LzNf9eIwCVv1x2EMAqP3SbL8XJhH9Ol1qoAvJ1bk6oZftv3Bvl4Dec0Qx?= =?us-ascii?Q?lbhV/Vzw5lKVqsA0QSoHobtcfHI3iRFKJjDQXHI1zU+HoI6aUKboNLV5aUCg?= =?us-ascii?Q?abR/eqha7d9sIBmBhu1fJwV1d1hfC4g0W+KvliAwrh0qXLvqXcA2vEI51qjO?= =?us-ascii?Q?X5yrzs9xetwLQwVKhS0CRPpq9yYbvSlpXcU95iHW6fJq83qHT7YThif1n/kA?= =?us-ascii?Q?hvLgft6mSLT6U81DXxdhA00qQdXxMg0DYXMBcML7dkubo5zBJykY39Mczsax?= =?us-ascii?Q?SaTQqflL7weGxZfkHqH6mvfdVzQl16vt9pRgIgeUSehBgOR7pV8+H96/Zkiv?= =?us-ascii?Q?NCsbCsaXjb6TnyeVCPCW6L8xCfff2+pDF2ldwQtbHE1caklLWTTQ2JdSIgEO?= =?us-ascii?Q?tamKjvPRCkYUwH25+dS6w8+XtzHM37fbUeKWRXX56ZRoxdm628PfnVuPer/d?= =?us-ascii?Q?2mDMn+F1+eL9G7VdFGtcyrOVb+ZGpczVWArA8b7MLK6SnlIzIR1H6dFrgyCu?= =?us-ascii?Q?OMpFIflUTHuZQfcCfSTpQ6k19ZwmgsBV8qi1kkXHnsK0jzlv95P6EcQN3DOs?= =?us-ascii?Q?mBkCIxDq9cFyhKt8tW2LFWi00gyTE70tkLnfiKlJYs2GIvIHNDb93K0AAKtF?= =?us-ascii?Q?cnG4tSwZ5zJSwfBLxhDuE3ET/Vk9T3nMbisXYvD//3NJO8pdD8TwoGkbPE3y?= =?us-ascii?Q?SK8xS3xTJggnE6qZShX0+kpsGYDC6RJroO6Ld6tjIAyBhc/aRQTduhstN8uP?= =?us-ascii?Q?gISUk9PWR+axqm67ScwF+h2q25q9L3+Iy?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1998; 6:/Z6l+N5n14f7+Km0rtF/KTQxg+q2MyZj9D3/hVDDjTiAFb5iJXrdjROXwDr0cJ7VoKeBEo8oE/uJ9VAQ5MFGRSHTs1fYmNUu45w3FauABQZoBARTf7p4h98j/+iNt4eWqY3L1g1QHaHsWbNbpLjWARxtqgGDeUYRkvuZjH4gJ9ksfJTBbXSvecf5aLOVJ73E96lvK2Ugifdy3ylYBmd78oVgRcQJjHO82PGOI4/2iN29M60QfKt3CZYz7yhtHdXdeyVIKhV0tiUVr9R5llZEdyBQ0lGf8eUR0n88mbtTGTw=; 5:Zd8Am6n2kD7IN480iJpQLmV0AUP4COzQJNtL+gBTFeUQnB6WpvVvzWL9ZlaxsQrkmek8bkevTpU0DH0FTmYcFnT28t33dcQWSO8ZNBiJHjUxAIZFs8/GHVis6z9ePHIzn6eEZyX3/3Mdmm19P+pU+SK7Qf+LchaN1iqhcYlsCCs=; 24:xu++zvHHih4nSgImNsUmnVVMSwu4Yt4Hbq0gmQgzxf2B3oESJfLkF2PNRZb7F/VqvCqv8Zqtvc/m7z6LywBLqhnFVDl1+5hcag1K1KZgARI=; 7:iXsPYRXKbAEjkmNMt9XCrW8ixE3SAIs2X7D+NQH3isWj7ItOjMtzI/r7Dl/9f3yMLA+Lb5l/cJDm42iAQOyJ89Ppe+k0TxKJBo/nHzTSO2N4hIqRS1nvYoor3MQLVhycn7x29bmWh2wwLj1cnn8ErhUF4mJW1MtY7+MM0ul2YjeEHY5/Zbv2Zeubb+4s2tFOQftoxLpCiOj7yggr8WXVUCOSsLfD/XGVPypvbuIwGjoUuwV1wEaKdZ5coSEprf06 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2016 06:01:21.2398 (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: SN1PR0301MB1998 Subject: [dpdk-dev] [PATCH v6 08/17] drivers: convert all pdev drivers as 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Simplify crypto and ethdev pci drivers init by using newly introduced init macros and helpers. Those drivers then don't need to register as "rte_driver"s anymore. Exceptions: - virtio and mlx* use RTE_INIT directly as they have custom initialization steps. - VDEV devices are not modified - they continue to use PMD_REGISTER_DRIVER. Signed-off-by: David Marchand Signed-off-by: Shreyansh Jain --- drivers/crypto/qat/rte_qat_cryptodev.c | 16 +++--------- drivers/net/bnx2x/bnx2x_ethdev.c | 34 +++++------------------- drivers/net/bnxt/bnxt_ethdev.c | 16 +++--------- drivers/net/cxgbe/cxgbe_ethdev.c | 24 +++-------------- drivers/net/e1000/em_ethdev.c | 16 +++--------- drivers/net/e1000/igb_ethdev.c | 39 +++++----------------------- drivers/net/ena/ena_ethdev.c | 17 +++--------- drivers/net/enic/enic_ethdev.c | 23 +++-------------- drivers/net/fm10k/fm10k_ethdev.c | 23 +++-------------- drivers/net/i40e/i40e_ethdev.c | 24 +++-------------- drivers/net/i40e/i40e_ethdev_vf.c | 25 +++--------------- drivers/net/ixgbe/ixgbe_ethdev.c | 46 +++++---------------------------- drivers/net/mlx4/mlx4.c | 15 +++-------- drivers/net/mlx5/mlx5.c | 14 +++------- drivers/net/nfp/nfp_net.c | 21 +++------------ drivers/net/qede/qede_ethdev.c | 40 ++++++---------------------- drivers/net/szedata2/rte_eth_szedata2.c | 24 +++-------------- drivers/net/thunderx/nicvf_ethdev.c | 20 +++----------- drivers/net/virtio/virtio_ethdev.c | 25 +++++------------- drivers/net/vmxnet3/vmxnet3_ethdev.c | 23 +++-------------- 20 files changed, 78 insertions(+), 407 deletions(-) diff --git a/drivers/crypto/qat/rte_qat_cryptodev.c b/drivers/crypto/qat/rte_qat_cryptodev.c index 1e9e0ba..4c215a6 100644 --- a/drivers/crypto/qat/rte_qat_cryptodev.c +++ b/drivers/crypto/qat/rte_qat_cryptodev.c @@ -116,23 +116,13 @@ static struct rte_cryptodev_driver rte_qat_pmd = { .pci_drv = { .id_table = pci_id_qat_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .devinit = rte_cryptodev_pci_probe, + .devuninit = rte_cryptodev_pci_remove, }, .cryptodev_init = crypto_qat_dev_init, .dev_private_size = sizeof(struct qat_pmd_private), }; -static int -rte_qat_pmd_init(const char *name __rte_unused, const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - return rte_cryptodev_pmd_driver_register(&rte_qat_pmd, PMD_PDEV); -} - -static struct rte_driver pmd_qat_drv = { - .type = PMD_PDEV, - .init = rte_qat_pmd_init, -}; - -PMD_REGISTER_DRIVER(pmd_qat_drv, CRYPTODEV_NAME_QAT_SYM_PMD); +DRIVER_REGISTER_PCI(CRYPTODEV_NAME_QAT_SYM_PMD, rte_qat_pmd); DRIVER_REGISTER_PCI_TABLE(CRYPTODEV_NAME_QAT_SYM_PMD, pci_id_qat_map); diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c index c8d2bf2..dc7c893 100644 --- a/drivers/net/bnx2x/bnx2x_ethdev.c +++ b/drivers/net/bnx2x/bnx2x_ethdev.c @@ -621,6 +621,8 @@ static struct eth_driver rte_bnx2x_pmd = { .name = "rte_bnx2x_pmd", .id_table = pci_id_bnx2x_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_bnx2x_dev_init, .dev_private_size = sizeof(struct bnx2x_softc), @@ -634,38 +636,14 @@ static struct eth_driver rte_bnx2xvf_pmd = { .name = "rte_bnx2xvf_pmd", .id_table = pci_id_bnx2xvf_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_bnx2xvf_dev_init, .dev_private_size = sizeof(struct bnx2x_softc), }; -static int rte_bnx2x_pmd_init(const char *name __rte_unused, const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - rte_eth_driver_register(&rte_bnx2x_pmd); - - return 0; -} - -static int rte_bnx2xvf_pmd_init(const char *name __rte_unused, const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - rte_eth_driver_register(&rte_bnx2xvf_pmd); - - return 0; -} - -static struct rte_driver rte_bnx2x_driver = { - .type = PMD_PDEV, - .init = rte_bnx2x_pmd_init, -}; - -static struct rte_driver rte_bnx2xvf_driver = { - .type = PMD_PDEV, - .init = rte_bnx2xvf_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_bnx2x_driver, bnx2x); +DRIVER_REGISTER_PCI(bnx2x, rte_bnx2x_pmd); DRIVER_REGISTER_PCI_TABLE(bnx2x, pci_id_bnx2x_map); -PMD_REGISTER_DRIVER(rte_bnx2xvf_driver, bnx2xvf); +DRIVER_REGISTER_PCI(bnx2xvf, rte_bnx2xvf_pmd); DRIVER_REGISTER_PCI_TABLE(bnx2xvf, pci_id_bnx2xvf_map); diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 3795fac..607f88c 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1048,23 +1048,13 @@ static struct eth_driver bnxt_rte_pmd = { .name = "rte_" DRV_MODULE_NAME "_pmd", .id_table = bnxt_pci_id_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = bnxt_dev_init, .eth_dev_uninit = bnxt_dev_uninit, .dev_private_size = sizeof(struct bnxt), }; -static int bnxt_rte_pmd_init(const char *name, const char *params __rte_unused) -{ - RTE_LOG(INFO, PMD, "bnxt_rte_pmd_init() called for %s\n", name); - rte_eth_driver_register(&bnxt_rte_pmd); - return 0; -} - -static struct rte_driver bnxt_pmd_drv = { - .type = PMD_PDEV, - .init = bnxt_rte_pmd_init, -}; - -PMD_REGISTER_DRIVER(bnxt_pmd_drv, bnxt); +DRIVER_REGISTER_PCI(bnxt, bnxt_rte_pmd); DRIVER_REGISTER_PCI_TABLE(bnxt, bnxt_pci_id_map); diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c index 9208a61..70cc1f6 100644 --- a/drivers/net/cxgbe/cxgbe_ethdev.c +++ b/drivers/net/cxgbe/cxgbe_ethdev.c @@ -1042,30 +1042,12 @@ static struct eth_driver rte_cxgbe_pmd = { .name = "rte_cxgbe_pmd", .id_table = cxgb4_pci_tbl, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_cxgbe_dev_init, .dev_private_size = sizeof(struct port_info), }; -/* - * Driver initialization routine. - * Invoked once at EAL init time. - * Register itself as the [Poll Mode] Driver of PCI CXGBE devices. - */ -static int rte_cxgbe_pmd_init(const char *name __rte_unused, - const char *params __rte_unused) -{ - CXGBE_FUNC_TRACE(); - - rte_eth_driver_register(&rte_cxgbe_pmd); - return 0; -} - -static struct rte_driver rte_cxgbe_driver = { - .type = PMD_PDEV, - .init = rte_cxgbe_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_cxgbe_driver, cxgb4); +DRIVER_REGISTER_PCI(cxgb4, rte_cxgbe_pmd); DRIVER_REGISTER_PCI_TABLE(cxgb4, cxgb4_pci_tbl); - diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index ad104ed..dc7a3c7 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -395,6 +395,8 @@ static struct eth_driver rte_em_pmd = { .id_table = pci_id_em_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_em_dev_init, .eth_dev_uninit = eth_em_dev_uninit, @@ -402,13 +404,6 @@ static struct eth_driver rte_em_pmd = { }; static int -rte_em_pmd_init(const char *name __rte_unused, const char *params __rte_unused) -{ - rte_eth_driver_register(&rte_em_pmd); - return 0; -} - -static int em_hw_init(struct e1000_hw *hw) { int diag; @@ -1799,10 +1794,5 @@ eth_em_set_mc_addr_list(struct rte_eth_dev *dev, return 0; } -struct rte_driver em_pmd_drv = { - .type = PMD_PDEV, - .init = rte_em_pmd_init, -}; - -PMD_REGISTER_DRIVER(em_pmd_drv, em); +DRIVER_REGISTER_PCI(em, rte_em_pmd); DRIVER_REGISTER_PCI_TABLE(em, pci_id_em_map); diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index fbf4d09..c24a933 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -1047,6 +1047,8 @@ static struct eth_driver rte_igb_pmd = { .id_table = pci_id_igb_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_igb_dev_init, .eth_dev_uninit = eth_igb_dev_uninit, @@ -1061,19 +1063,14 @@ static struct eth_driver rte_igbvf_pmd = { .name = "rte_igbvf_pmd", .id_table = pci_id_igbvf_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_igbvf_dev_init, .eth_dev_uninit = eth_igbvf_dev_uninit, .dev_private_size = sizeof(struct e1000_adapter), }; -static int -rte_igb_pmd_init(const char *name __rte_unused, const char *params __rte_unused) -{ - rte_eth_driver_register(&rte_igb_pmd); - return 0; -} - static void igb_vmdq_vlan_hw_filter_enable(struct rte_eth_dev *dev) { @@ -1085,20 +1082,6 @@ igb_vmdq_vlan_hw_filter_enable(struct rte_eth_dev *dev) E1000_WRITE_REG(hw, E1000_RCTL, rctl); } -/* - * VF Driver initialization routine. - * Invoked one at EAL init time. - * Register itself as the [Virtual Poll Mode] Driver of PCI IGB devices. - */ -static int -rte_igbvf_pmd_init(const char *name __rte_unused, const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - - rte_eth_driver_register(&rte_igbvf_pmd); - return 0; -} - static int igb_check_mq_mode(struct rte_eth_dev *dev) { @@ -5049,16 +5032,6 @@ eth_igb_set_eeprom(struct rte_eth_dev *dev, return nvm->ops.write(hw, first, length, data); } -static struct rte_driver pmd_igb_drv = { - .type = PMD_PDEV, - .init = rte_igb_pmd_init, -}; - -static struct rte_driver pmd_igbvf_drv = { - .type = PMD_PDEV, - .init = rte_igbvf_pmd_init, -}; - static int eth_igb_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t queue_id) { @@ -5220,7 +5193,7 @@ eth_igb_configure_msix_intr(struct rte_eth_dev *dev) E1000_WRITE_FLUSH(hw); } -PMD_REGISTER_DRIVER(pmd_igb_drv, igb); +DRIVER_REGISTER_PCI(igb, rte_igb_pmd); DRIVER_REGISTER_PCI_TABLE(igb, pci_id_igb_map); -PMD_REGISTER_DRIVER(pmd_igbvf_drv, igbvf); +DRIVER_REGISTER_PCI(igbvf, rte_igbvf_pmd); DRIVER_REGISTER_PCI_TABLE(igbvf, pci_id_igbvf_map); diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 9418d50..9f46d57 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -1689,23 +1689,12 @@ static struct eth_driver rte_ena_pmd = { .name = "rte_ena_pmd", .id_table = pci_id_ena_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_ena_dev_init, .dev_private_size = sizeof(struct ena_adapter), }; -static int -rte_ena_pmd_init(const char *name __rte_unused, - const char *params __rte_unused) -{ - rte_eth_driver_register(&rte_ena_pmd); - return 0; -}; - -struct rte_driver ena_pmd_drv = { - .type = PMD_PDEV, - .init = rte_ena_pmd_init, -}; - -PMD_REGISTER_DRIVER(ena_pmd_drv, ena); +DRIVER_REGISTER_PCI(ena, rte_ena_pmd); DRIVER_REGISTER_PCI_TABLE(ena, pci_id_ena_map); diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index 3c87b49..7e7bae8 100644 --- a/drivers/net/enic/enic_ethdev.c +++ b/drivers/net/enic/enic_ethdev.c @@ -609,29 +609,12 @@ static struct eth_driver rte_enic_pmd = { .name = "rte_enic_pmd", .id_table = pci_id_enic_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_enicpmd_dev_init, .dev_private_size = sizeof(struct enic), }; -/* Driver initialization routine. - * Invoked once at EAL init time. - * Register as the [Poll Mode] Driver of Cisco ENIC device. - */ -static int -rte_enic_pmd_init(__rte_unused const char *name, - __rte_unused const char *params) -{ - ENICPMD_FUNC_TRACE(); - - rte_eth_driver_register(&rte_enic_pmd); - return 0; -} - -static struct rte_driver rte_enic_driver = { - .type = PMD_PDEV, - .init = rte_enic_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_enic_driver, enic); +DRIVER_REGISTER_PCI(enic, rte_enic_pmd); DRIVER_REGISTER_PCI_TABLE(enic, pci_id_enic_map); diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index 217853f..ee99d60 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -3061,30 +3061,13 @@ static struct eth_driver rte_pmd_fm10k = { .id_table = pci_id_fm10k_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_fm10k_dev_init, .eth_dev_uninit = eth_fm10k_dev_uninit, .dev_private_size = sizeof(struct fm10k_adapter), }; -/* - * Driver initialization routine. - * Invoked once at EAL init time. - * Register itself as the [Poll Mode] Driver of PCI FM10K devices. - */ -static int -rte_pmd_fm10k_init(__rte_unused const char *name, - __rte_unused const char *params) -{ - PMD_INIT_FUNC_TRACE(); - rte_eth_driver_register(&rte_pmd_fm10k); - return 0; -} - -static struct rte_driver rte_fm10k_driver = { - .type = PMD_PDEV, - .init = rte_pmd_fm10k_init, -}; - -PMD_REGISTER_DRIVER(rte_fm10k_driver, fm10k); +DRIVER_REGISTER_PCI(fm10k, rte_pmd_fm10k); DRIVER_REGISTER_PCI_TABLE(fm10k, pci_id_fm10k_map); diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index daac236..4e42ecf 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -667,6 +667,8 @@ static struct eth_driver rte_i40e_pmd = { .id_table = pci_id_i40e_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_i40e_dev_init, .eth_dev_uninit = eth_i40e_dev_uninit, @@ -701,27 +703,7 @@ rte_i40e_dev_atomic_write_link_status(struct rte_eth_dev *dev, return 0; } -/* - * Driver initialization routine. - * Invoked once at EAL init time. - * Register itself as the [Poll Mode] Driver of PCI IXGBE devices. - */ -static int -rte_i40e_pmd_init(const char *name __rte_unused, - const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - rte_eth_driver_register(&rte_i40e_pmd); - - return 0; -} - -static struct rte_driver rte_i40e_driver = { - .type = PMD_PDEV, - .init = rte_i40e_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_i40e_driver, i40e); +DRIVER_REGISTER_PCI(i40e, rte_i40e_pmd); DRIVER_REGISTER_PCI_TABLE(i40e, pci_id_i40e_map); /* diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index a616ae0..6526a66 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1557,34 +1557,15 @@ static struct eth_driver rte_i40evf_pmd = { .name = "rte_i40evf_pmd", .id_table = pci_id_i40evf_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = i40evf_dev_init, .eth_dev_uninit = i40evf_dev_uninit, .dev_private_size = sizeof(struct i40e_adapter), }; -/* - * VF Driver initialization routine. - * Invoked one at EAL init time. - * Register itself as the [Virtual Poll Mode] Driver of PCI Fortville devices. - */ -static int -rte_i40evf_pmd_init(const char *name __rte_unused, - const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - - rte_eth_driver_register(&rte_i40evf_pmd); - - return 0; -} - -static struct rte_driver rte_i40evf_driver = { - .type = PMD_PDEV, - .init = rte_i40evf_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_i40evf_driver, i40evf); +DRIVER_REGISTER_PCI(i40evf, rte_i40evf_pmd); DRIVER_REGISTER_PCI_TABLE(i40evf, pci_id_i40evf_map); static int diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index d478a15..bc33541 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -1509,6 +1509,8 @@ static struct eth_driver rte_ixgbe_pmd = { .id_table = pci_id_ixgbe_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_ixgbe_dev_init, .eth_dev_uninit = eth_ixgbe_dev_uninit, @@ -1523,40 +1525,14 @@ static struct eth_driver rte_ixgbevf_pmd = { .name = "rte_ixgbevf_pmd", .id_table = pci_id_ixgbevf_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_ixgbevf_dev_init, .eth_dev_uninit = eth_ixgbevf_dev_uninit, .dev_private_size = sizeof(struct ixgbe_adapter), }; -/* - * Driver initialization routine. - * Invoked once at EAL init time. - * Register itself as the [Poll Mode] Driver of PCI IXGBE devices. - */ -static int -rte_ixgbe_pmd_init(const char *name __rte_unused, const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - - rte_eth_driver_register(&rte_ixgbe_pmd); - return 0; -} - -/* - * VF Driver initialization routine. - * Invoked one at EAL init time. - * Register itself as the [Virtual Poll Mode] Driver of PCI niantic devices. - */ -static int -rte_ixgbevf_pmd_init(const char *name __rte_unused, const char *param __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - - rte_eth_driver_register(&rte_ixgbevf_pmd); - return 0; -} - static int ixgbe_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) { @@ -7352,17 +7328,7 @@ ixgbevf_dev_interrupt_handler(__rte_unused struct rte_intr_handle *handle, ixgbevf_dev_interrupt_action(dev); } -static struct rte_driver rte_ixgbe_driver = { - .type = PMD_PDEV, - .init = rte_ixgbe_pmd_init, -}; - -static struct rte_driver rte_ixgbevf_driver = { - .type = PMD_PDEV, - .init = rte_ixgbevf_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_ixgbe_driver, ixgbe); +DRIVER_REGISTER_PCI(ixgbe, rte_ixgbe_pmd); DRIVER_REGISTER_PCI_TABLE(ixgbe, pci_id_ixgbe_map); -PMD_REGISTER_DRIVER(rte_ixgbevf_driver, ixgbevf); +DRIVER_REGISTER_PCI(ixgbevf, rte_ixgbevf_pmd); DRIVER_REGISTER_PCI_TABLE(ixgbevf, pci_id_ixgbevf_map); diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 304c846..2bed4de 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -5922,12 +5922,10 @@ static struct eth_driver mlx4_driver = { /** * Driver initialization routine. */ -static int -rte_mlx4_pmd_init(const char *name, const char *args) +RTE_INIT(rte_mlx4_pmd_init); +static void +rte_mlx4_pmd_init(void) { - (void)name; - (void)args; - RTE_BUILD_BUG_ON(sizeof(wr_id_t) != sizeof(uint64_t)); /* * RDMAV_HUGEPAGES_SAFE tells ibv_fork_init() we intend to use @@ -5938,13 +5936,6 @@ rte_mlx4_pmd_init(const char *name, const char *args) setenv("RDMAV_HUGEPAGES_SAFE", "1", 1); ibv_fork_init(); rte_eal_pci_register(&mlx4_driver.pci_drv); - return 0; } -static struct rte_driver rte_mlx4_driver = { - .type = PMD_PDEV, - .init = rte_mlx4_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_mlx4_driver, mlx4); DRIVER_REGISTER_PCI_TABLE(mlx4, mlx4_pci_id_map); diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index d96a9af..3658769 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -739,11 +739,10 @@ static struct eth_driver mlx5_driver = { /** * Driver initialization routine. */ -static int -rte_mlx5_pmd_init(const char *name, const char *args) +RTE_INIT(rte_mlx5_pmd_init); +static void +rte_mlx5_pmd_init(void) { - (void)name; - (void)args; /* * RDMAV_HUGEPAGES_SAFE tells ibv_fork_init() we intend to use * huge pages. Calling ibv_fork_init() during init allows @@ -753,13 +752,6 @@ rte_mlx5_pmd_init(const char *name, const char *args) setenv("RDMAV_HUGEPAGES_SAFE", "1", 1); ibv_fork_init(); rte_eal_pci_register(&mlx5_driver.pci_drv); - return 0; } -static struct rte_driver rte_mlx5_driver = { - .type = PMD_PDEV, - .init = rte_mlx5_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_mlx5_driver, mlx5); DRIVER_REGISTER_PCI_TABLE(mlx5, mlx5_pci_id_map); diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c index 99a258a..b37007e 100644 --- a/drivers/net/nfp/nfp_net.c +++ b/drivers/net/nfp/nfp_net.c @@ -2464,29 +2464,14 @@ static struct eth_driver rte_nfp_net_pmd = { .id_table = pci_id_nfp_net_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = nfp_net_init, .dev_private_size = sizeof(struct nfp_net_adapter), }; -static int -nfp_net_pmd_init(const char *name __rte_unused, - const char *params __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - PMD_INIT_LOG(INFO, "librte_pmd_nfp_net version %s\n", - NFP_NET_PMD_VERSION); - - rte_eth_driver_register(&rte_nfp_net_pmd); - return 0; -} - -static struct rte_driver rte_nfp_net_driver = { - .type = PMD_PDEV, - .init = nfp_net_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_nfp_net_driver, nfp); +DRIVER_REGISTER_PCI(nfp, rte_nfp_net_pmd); DRIVER_REGISTER_PCI_TABLE(nfp, pci_id_nfp_net_map); /* diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 82e44b8..2143d2a 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -1482,7 +1482,9 @@ static struct eth_driver rte_qedevf_pmd = { .id_table = pci_id_qedevf_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, - }, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, + }, .eth_dev_init = qedevf_eth_dev_init, .eth_dev_uninit = qedevf_eth_dev_uninit, .dev_private_size = sizeof(struct qede_dev), @@ -1494,41 +1496,15 @@ static struct eth_driver rte_qede_pmd = { .id_table = pci_id_qede_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, - }, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, + }, .eth_dev_init = qede_eth_dev_init, .eth_dev_uninit = qede_eth_dev_uninit, .dev_private_size = sizeof(struct qede_dev), }; -static int -rte_qedevf_pmd_init(const char *name __rte_unused, - const char *params __rte_unused) -{ - rte_eth_driver_register(&rte_qedevf_pmd); - - return 0; -} - -static int -rte_qede_pmd_init(const char *name __rte_unused, - const char *params __rte_unused) -{ - rte_eth_driver_register(&rte_qede_pmd); - - return 0; -} - -static struct rte_driver rte_qedevf_driver = { - .type = PMD_PDEV, - .init = rte_qede_pmd_init -}; - -static struct rte_driver rte_qede_driver = { - .type = PMD_PDEV, - .init = rte_qedevf_pmd_init -}; - -PMD_REGISTER_DRIVER(rte_qede_driver, qede); +DRIVER_REGISTER_PCI(qede, rte_qede_pmd); DRIVER_REGISTER_PCI_TABLE(qede, pci_id_qede_map); -PMD_REGISTER_DRIVER(rte_qedevf_driver, qedevf); +DRIVER_REGISTER_PCI(qedevf, rte_qedevf_pmd); DRIVER_REGISTER_PCI_TABLE(qedevf, pci_id_qedevf_map); diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c index 483d789..d5e1551 100644 --- a/drivers/net/szedata2/rte_eth_szedata2.c +++ b/drivers/net/szedata2/rte_eth_szedata2.c @@ -1574,31 +1574,13 @@ static struct eth_driver szedata2_eth_driver = { .pci_drv = { .name = RTE_SZEDATA2_PCI_DRIVER_NAME, .id_table = rte_szedata2_pci_id_table, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = rte_szedata2_eth_dev_init, .eth_dev_uninit = rte_szedata2_eth_dev_uninit, .dev_private_size = sizeof(struct pmd_internals), }; -static int -rte_szedata2_init(const char *name __rte_unused, - const char *args __rte_unused) -{ - rte_eth_driver_register(&szedata2_eth_driver); - return 0; -} - -static int -rte_szedata2_uninit(const char *name __rte_unused) -{ - return 0; -} - -static struct rte_driver rte_szedata2_driver = { - .type = PMD_PDEV, - .init = rte_szedata2_init, - .uninit = rte_szedata2_uninit, -}; - -PMD_REGISTER_DRIVER(rte_szedata2_driver, RTE_SZEDATA2_DRIVER_NAME); +DRIVER_REGISTER_PCI(RTE_SZEDATA2_DRIVER_NAME, szedata2_eth_driver); DRIVER_REGISTER_PCI_TABLE(RTE_SZEDATA2_DRIVER_NAME, rte_szedata2_pci_id_table); diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c index 4f875c0..8d90f8d 100644 --- a/drivers/net/thunderx/nicvf_ethdev.c +++ b/drivers/net/thunderx/nicvf_ethdev.c @@ -1762,26 +1762,12 @@ static struct eth_driver rte_nicvf_pmd = { .name = "rte_nicvf_pmd", .id_table = pci_id_nicvf_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = nicvf_eth_dev_init, .dev_private_size = sizeof(struct nicvf), }; -static int -rte_nicvf_pmd_init(const char *name __rte_unused, const char *para __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - PMD_INIT_LOG(INFO, "librte_pmd_thunderx nicvf version %s", - THUNDERX_NICVF_PMD_VERSION); - - rte_eth_driver_register(&rte_nicvf_pmd); - return 0; -} - -static struct rte_driver rte_nicvf_driver = { - .type = PMD_PDEV, - .init = rte_nicvf_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_nicvf_driver, thunderx_nicvf); +DRIVER_REGISTER_PCI(thunderx_nicvf, rte_nicvf_pmd); DRIVER_REGISTER_PCI_TABLE(thunderx_nicvf, pci_id_nicvf_map); diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 850e3ba..d3cfbaf 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1307,29 +1307,24 @@ static struct eth_driver rte_virtio_pmd = { .name = "rte_virtio_pmd", .id_table = pci_id_virtio_map, .drv_flags = RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_virtio_dev_init, .eth_dev_uninit = eth_virtio_dev_uninit, .dev_private_size = sizeof(struct virtio_hw), }; -/* - * Driver initialization routine. - * Invoked once at EAL init time. - * Register itself as the [Poll Mode] Driver of PCI virtio devices. - * Returns 0 on success. - */ -static int -rte_virtio_pmd_init(const char *name __rte_unused, - const char *param __rte_unused) +RTE_INIT(rte_virtio_pmd_init); +static void +rte_virtio_pmd_init(void) { if (rte_eal_iopl_init() != 0) { PMD_INIT_LOG(ERR, "IOPL call failed - cannot use virtio PMD"); - return -1; + return; } - rte_eth_driver_register(&rte_virtio_pmd); - return 0; + rte_eal_pci_register(&rte_virtio_pmd.pci_drv); } /* @@ -1563,10 +1558,4 @@ __rte_unused uint8_t is_rx) return 0; } -static struct rte_driver rte_virtio_driver = { - .type = PMD_PDEV, - .init = rte_virtio_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_virtio_driver, virtio_net); DRIVER_REGISTER_PCI_TABLE(virtio_net, pci_id_virtio_map); diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index 5874215..25475f8 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -331,26 +331,14 @@ static struct eth_driver rte_vmxnet3_pmd = { .name = "rte_vmxnet3_pmd", .id_table = pci_id_vmxnet3_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE, + .devinit = rte_eth_dev_pci_probe, + .devuninit = rte_eth_dev_pci_remove, }, .eth_dev_init = eth_vmxnet3_dev_init, .eth_dev_uninit = eth_vmxnet3_dev_uninit, .dev_private_size = sizeof(struct vmxnet3_hw), }; -/* - * Driver initialization routine. - * Invoked once at EAL init time. - * Register itself as the [Poll Mode] Driver of Virtual PCI VMXNET3 devices. - */ -static int -rte_vmxnet3_pmd_init(const char *name __rte_unused, const char *param __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - - rte_eth_driver_register(&rte_vmxnet3_pmd); - return 0; -} - static int vmxnet3_dev_configure(struct rte_eth_dev *dev) { @@ -948,10 +936,5 @@ vmxnet3_process_events(struct vmxnet3_hw *hw) } #endif -static struct rte_driver rte_vmxnet3_driver = { - .type = PMD_PDEV, - .init = rte_vmxnet3_pmd_init, -}; - -PMD_REGISTER_DRIVER(rte_vmxnet3_driver, vmxnet3); +DRIVER_REGISTER_PCI(vmxnet3, rte_vmxnet3_pmd); DRIVER_REGISTER_PCI_TABLE(vmxnet3, pci_id_vmxnet3_map);