From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <shreyansh.jain@nxp.com>
Received: from NAM01-BN3-obe.outbound.protection.outlook.com
 (mail-bn3nam01on0083.outbound.protection.outlook.com [104.47.33.83])
 by dpdk.org (Postfix) with ESMTP id C18866CC8
 for <dev@dpdk.org>; Fri, 16 Sep 2016 06:33:09 +0200 (CEST)
Received: from BLUPR0301CA0007.namprd03.prod.outlook.com (10.162.113.145) by
 CY1PR0301MB2011.namprd03.prod.outlook.com (10.164.2.17) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id
 15.1.619.10; Fri, 16 Sep 2016 04:33:07 +0000
Received: from BN1BFFO11FD051.protection.gbl (2a01:111:f400:7c10::1:191) by
 BLUPR0301CA0007.outlook.office365.com (2a01:111:e400:5259::17) with Microsoft
 SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384)
 id 15.1.629.8 via Frontend Transport; Fri, 16 Sep 2016 04:33:07 +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
 BN1BFFO11FD051.mail.protection.outlook.com (10.58.145.6) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.619.6
 via Frontend Transport; Fri, 16 Sep 2016 04:33:07 +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 u8G4Trg4029256;
 Thu, 15 Sep 2016 21:33:04 -0700
From: Shreyansh Jain <shreyansh.jain@nxp.com>
To: <dev@dpdk.org>
CC: <viktorin@rehivetech.com>, David Marchand <david.marchand@6wind.com>,
 <hemant.agrawal@nxp.com>, Thomas Monjalon <thomas.monjalon@6wind.com>,
 Shreyansh Jain <shreyansh.jain@nxp.com>
Date: Fri, 16 Sep 2016 09:59:57 +0530
Message-ID: <1474000200-16705-23-git-send-email-shreyansh.jain@nxp.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1474000200-16705-1-git-send-email-shreyansh.jain@nxp.com>
References: <1466510566-9240-1-git-send-email-shreyansh.jain@nxp.com>
 <1474000200-16705-1-git-send-email-shreyansh.jain@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131184739879338513;
 (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)(199003)(189002)(110136003)(50986999)(104016004)(76176999)(4326007)(2906002)(86362001)(8676002)(68736007)(575784001)(8936002)(87936001)(50226002)(85426001)(11100500001)(92566002)(626004)(586003)(305945005)(77096005)(2950100001)(81166006)(7846002)(2351001)(50466002)(5660300001)(97736004)(81156014)(47776003)(48376002)(8666005)(229853001)(105606002)(106466001)(19580405001)(33646002)(356003)(19580395003)(5003940100001)(189998001)(36756003)(7059030);
 DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB2011; H:tx30smr01.am.freescale.net;
 FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD051;
 1:Ab142o3QbGMVLjgvjaaofBB8CO0WdnhprCHxopbgTQLRTqDOsBPOIIH9h9GH/apy/w05t2kz4y5YFEfyA0wNHjwL4PdNb8RzXSGnkV8Hxg+z4y4M0erKTt7Bm2etfAJnsz65PHkdMre2q3hAFobMumu9X3O+mWHS1UdBxxdp/Utg5AtrnaR8W9AhflypbXtQv/FOlxW+GPWrTtHC4NnD42bnk9+LgiDV4uAxCpl2ncMZAlWNuZlWYnqqDo3m7zbeSFRV50+zFgDgvdR/InnteGP1ofKyln4CwQQWQA1ZI9ug7+oLblt8nYWPEPTvAU3dLH7FtQdk76inUYSrMEaDc3RJlNfqtLFWRH8nQGVcIz/wYtMRwcFS1vTRF0ecW9S5x2MXUYTUHW1nttubhOS6+n3RG2wdp6AF8IggLqLKkOJHXiBX9x6zFwwDunewZoC4R0icX4JZzlsSdA+YAoGidYiioKePxm+NpNMiZjpK1BgVKY+9Je0T63K3XbQYrDoyPVAjwVA6QTLclhtcJJ49RgYSCsOka09U+tzdBNWCMU4Gc4U7h6tWK4sQtv42eH7ANv9JkR4Y+clKRLita8B3Codrdmr7SGVUDhtTXaU4nqWls/P0ePJ94pugo8d2YF9SZt7pZQzZJEMXkxpYlb47rg39LbxZEqmQhOGzGjWRE9cZg4nBVlgI4LueM3eeWAceFBto09LeIj5fTNnCm0PfQidT+3KM/f6E+3/LKCK5Svc=
MIME-Version: 1.0
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: ae73badb-ebc1-4f75-c211-08d3ddea8eec
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2011;
 2:QmgVJO4DlXc12EcccdSqyKG5e6CNWpp9kjxE/pkBL53A117q1zsKrBQvro33gF5hWkxzurDJYeA+oe9JMdBTF6oDEoE9sm0qyysN0Za5yf9lFoymEtsPmH1XAsRhYNrQ+yZdcnYIOR0D9/PVEL1u+i+HOolyvkMISaq6VSCqyxRd3qt0ci/I9YJo+aBApcxW;
 3:02uKVdYwRlyBc6laPP8kyAZUqZAyfNiDDcdvwi1LcsmJLfKm2HdHW98bjQoHlwyqrJ7khLAjSnfcGrPd20r/Hu/+z7pilQm5L//jD1A1HKz3G/ewOb2e6LKXOi/MJ8AaeCyj2Fc+AiSjDrQ8V6CqUMuMMka3nnwoZUetlcxX++485VGqo0R7Kd6mZGeLwSEJ3zv/dU+vWWLoYjcDOkXYSgDDsgtNJk4c6xnGkZGOSb4=;
 25:oJNGdImaGYVJpBhUvvrzVmbH8P3RIppnY/pgcA9VO+rkXhyErUdQ31FsP0toKZjB2orx1PSHimIcV3fzrQFw/8pZ2Yhq6fQaUOzUZ5yhtHZrdKBzvCrGnhgC6cmGTLNsO98BCF5v8gwzjp8EOUxNHPlZSmKN+wu5uOZiCHRZByFPlCRfbyKmMTtrMrMjBQJrQbL899bbWe/niK/NpxlMa5Sb3YRqFMg6MLBjQeRe6oiq2pkVM/6xF4FdzhhfGCMRHV06+PS1xWN1BXRum0dGZV0yESBPwzOhtLWjJpmtSYnFM5upRvUY/bjHkZzR9u0HUsfkSWfK80C1F0xDRmOCd7Lq0tJbUAu6TvCC7sw4A/yxJnCofBdQHfBuPldABf2huUuWLid9UlnwzjvRxcc3mR31axxOHJV3ASmsm2bmbIM=
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB2011;
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2011;
 31:7zN6ZOo25IGD74WkHecuPbW2/v5VH/JvyS7cUQnXO66D9rEYRPlrZ0XeqkvEwazzezl3s2qiFZosJMhrAng0RoJrVDUeyWfhEGQrqyjV6UPb8h7gHhqnFkSr4zYRE7engFxyG8Qohm3HwunTpjp3ylMtZgP58GXYAsBAFI95wyCnXB2Eexr1cFqLTUNUorX2Ugqn1r4A7bWl2tKslj6c5kswKeBsbUyA49aZ/+RMVEk=;
 4:Izrzn7mdLLobRC+YWrWozotYbt70PoUPqni0agNT7HPyR2KyXxm6V0D2quJOrZR6pRQ/Tj6s/hfVnDAiepr/DuKL8gJkPleVyek8Ta0SjH6mI+IZVRw+eZG5iN+YieBp0xHrZdT41ZU5LZUizvhqMmdOtDj3heOwB3rISOEaceGBVJ07ktKRVi69+H2wicXp+8rqkMJaHTlT8oV99HWZ8ClYk3GO+Tq8cBKHlwyEPQQlpg3V3sBzzdzedOv6Gce/qJoAHu7hMFkKFI1xd18nxuv+7AjAKM3cWrQ/UZbSpluyHTyg2892rZvkqg/U+UwusMqiE400shdfsYW23DZAAf/rUoWfpN4ViAks3f7+ZtXZJjmQfyG9IZbx48+bmDzL2c4GFZM1Iq61ITnrpdLi10keuXa5caEQyp+wZWb1Buqno2NEj8sNopbl/tFUDdAjQVMwyvHfv7B+i6joImPTDxriu3SCuxlC7Rp1SV9WNpna1V60D5aE/lVrcXvF3DuAQrFdVkSC2wi0aS1l+6qrtkraug/ujVsV3Zlet9dqzZk=
X-Microsoft-Antispam-PRVS: <CY1PR0301MB2011F9BC797422037104B52090F30@CY1PR0301MB2011.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(185117386973197);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6040176)(601004)(2401047)(13017025)(5005006)(8121501046)(13015025)(13024025)(13023025)(13018025)(10201501046)(3002001)(6055026);
 SRVR:CY1PR0301MB2011; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB2011; 
X-Forefront-PRVS: 0067A8BA2A
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB2011;
 23:JIfU68iGOLym5uhgVE3+Stm+UKFKQimEDhwfdUB?=
 =?us-ascii?Q?c52tIAAnGOz07omUPJSpqjMrAsfGx/3eSBAw5XeaSC910J33gSl8y8FjSj4Y?=
 =?us-ascii?Q?e2GqjMPMC3WWi0wKI07OAKr0OsgvXve9NtvMPeEhaGTdBL0axnnzDrR0n87h?=
 =?us-ascii?Q?ez9ooWq+CSgL2XKGVZlhn6s6Gr0GYkg+n/bQGE1xpWVGTRMPbkWeTpogfuD4?=
 =?us-ascii?Q?2/O10ICf2WvJrOc+Bqj1L1XMcyuhx/jF0fXKLEg5KLBBld5qKdoBJIdCdKUH?=
 =?us-ascii?Q?94eKDoeh3Zc7vVuAOvW3RbZ8JnTiWSPF+yWNX+IvrMZVCBjpoLqh8gxkOwls?=
 =?us-ascii?Q?geg6UjPhmg4c3mQHzVc7yKHDKmDFxDxKSyNWz6CuZACP5JeVhxf5iw2QmhWN?=
 =?us-ascii?Q?VbHcvCUpgqOpIVrOuuwskktNFYYOfB6coX0AiQuP96nH3fk1J8idnoJZ4rl8?=
 =?us-ascii?Q?7d9cQuK8HCAlXpf4NxnJFuFm5V1XS7fSPzWK3lYEr8LeKaBui8fPD77nJv+x?=
 =?us-ascii?Q?5FCURdq6jiYSLF+on2N5v9TUPzkYPzs5ucLZprC0/O48rn8T1Vm+67etqI3F?=
 =?us-ascii?Q?TRn07SM+MB4XwqbeeaGWW8no/w2MwFvu8iUHfMvtuiBuqexS285SDw1vS3rN?=
 =?us-ascii?Q?kiSEa9FPOHG2TojwfqlXzJIFvnqH5Dm/VpX67xllpB4ua9nESNXL7jbTNMd3?=
 =?us-ascii?Q?U9t0LXlu7+9688MPxhEHNnKovuKCh94ekdx456zPl6CjbmNaoaoaI2nIRojZ?=
 =?us-ascii?Q?pqAcu85yxd8mG1NIOA401rbrGw8c0cZ9sQJY307cKN5xBZ3rqvldnUQ2x8XY?=
 =?us-ascii?Q?F9UjY6FzgbP3bRFZt499698dy8eIc9nJo+qWU3lPJ4cxEl2TMQwduoWRE3li?=
 =?us-ascii?Q?A14qEzqpnjFOhUu043J8Ljxx28ONjP4zct1fy7usjVkKbYTzal1kJ5J02J13?=
 =?us-ascii?Q?EJIz9bsOFHGqkp1k1EjyM2jt229EihNKExgyjc5WFM0YlP+JiLgYTNrKvhY2?=
 =?us-ascii?Q?nIHUutoNcS/w5AwtxiWWKAJ2ojQlqg6KsgXOmo/oSx3ZqmYKom23I0NwMiay?=
 =?us-ascii?Q?YCKawaHfLity5Tm7tWwQGjKWt3hMBu5fhbxt6oNPMWm5K5nv9wac297ejWJ/?=
 =?us-ascii?Q?mRIL0ESNJhsdcd/w9gsf6lWmALbdJHWwJ2ti8J6J+H8Z4F3WM3nbLr7SIfxg?=
 =?us-ascii?Q?ygeh0h4CmOrECLcZyrPh//0yvhI+dvRzj9EUe?=
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2011;
 6:adcreFUq0b951lCqoafwABVVwA+NDfvATBCBnjWRusT/xrrJO6C50ks+Sx4fzyWUTy/N0bxfnNo6Ac7qAKhezdtHaN88lItF9rNyDE4ZWbppePJcw5QXHsyDJh7BQombUEhX1439PB0CPtOW8S1IPAG+10fQYR7zwS6uIA8G2WxTshfnlhUmMda5bAb7E3P6x3MYKhAjsrJhOrlTYiPpsWeMdtRCEgeYzANL4V6FFP7Ug7MvDUiR/WblhGypxJc9YwRLf9lUsEqRwRU6Nq2EdfmPxnwd/7tcvKhwFdWI8lc=;
 5:4q+yHfFJUCox1VIZf4VTSCaexCSKmCZiE84lYVgQf5DqqA/1kxv81uW03+2T1kZ20wC6ZfDxWBPzVn3s4Q1oMq5mGeO92Qb4TIQzDcOFYQpWtVZlt3/EoFV7mYC5Qu9B5siWuGIK29bLfaS89aS2HkuXt1n2P4TAnFvH5P5xhbQ=;
 24:nXUy0VClcMMwwVLJFNUleZgw0fi0uc0IzITSCPsmQzkykuGhTEVQ/riH6f5/kQVaCs3IrcuPseqDQ2KIr+Vq2hJsE+0+2jLXjM1lLPeGOtM=;
 7:rEvQPDgOYrrwF3EF6tOqP/YFHYRYgcbccYnHuqKLXQTy6dB2KIss2kNBjHTlx+Qg//A+8y75W2RrQufLBi+98rthbM2ixZrzvDFnGWjfM9TkaIQKvcAebjDY69jNFJdg11GTaxdZFzw/0hJIl0syVS4OGsb9GePp7To5cgoX/LMfr3Yh+16C18OMAR2nhS6eq5r3QscN/0RQTkAzpiHjeB58oA1qKFThw4lfVwywsx3abPGTRWCeSODtkP3YLf9N
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2016 04:33:07.7466 (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: CY1PR0301MB2011
Subject: [dpdk-dev] [PATCH v10 22/25] eal/pci: inherit RTE driver in PCI
	driver
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 16 Sep 2016 04:33:10 -0000

From: Jan Viktorin <viktorin@rehivetech.com>

Remove the 'name' member from rte_pci_driver and move to generic
rte_driver.

Most of the PMD drivers were initially using DRIVER_REGISTER_PCI(<name>..)
as well as assigning a name to eth_driver.pci_drv.name member.
In this patch, only the original DRIVER_REGISTER_PCI(<name>..) name has
been populated into the rte_driver.name member - assignments through
eth_driver has been removed.

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
[Shreyansh: Rebase and expand changes to newly added files]
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
---
 app/test/test_pci.c                     | 10 +++++++---
 app/test/virtual_pmd.c                  |  2 +-
 drivers/crypto/qat/qat_qp.c             |  2 +-
 drivers/net/bnx2x/bnx2x_ethdev.c        |  2 --
 drivers/net/bnx2x/bnx2x_rxtx.c          |  3 ++-
 drivers/net/bnxt/bnxt_ethdev.c          |  1 -
 drivers/net/cxgbe/cxgbe_ethdev.c        |  1 -
 drivers/net/cxgbe/sge.c                 |  7 ++++---
 drivers/net/e1000/em_ethdev.c           |  1 -
 drivers/net/e1000/igb_ethdev.c          |  2 --
 drivers/net/ena/ena_ethdev.c            |  1 -
 drivers/net/enic/enic_ethdev.c          |  1 -
 drivers/net/fm10k/fm10k_ethdev.c        |  1 -
 drivers/net/i40e/i40e_ethdev.c          |  1 -
 drivers/net/i40e/i40e_ethdev_vf.c       |  1 -
 drivers/net/i40e/i40e_fdir.c            |  2 +-
 drivers/net/ixgbe/ixgbe_ethdev.c        |  2 --
 drivers/net/mlx4/mlx4.c                 |  4 +++-
 drivers/net/mlx5/mlx5.c                 |  4 +++-
 drivers/net/nfp/nfp_net.c               |  5 ++---
 drivers/net/qede/qede_ethdev.c          |  2 --
 drivers/net/szedata2/rte_eth_szedata2.c |  1 -
 drivers/net/thunderx/nicvf_ethdev.c     |  1 -
 drivers/net/virtio/virtio_ethdev.c      |  3 +--
 drivers/net/vmxnet3/vmxnet3_ethdev.c    |  4 ++--
 drivers/net/vmxnet3/vmxnet3_rxtx.c      |  2 +-
 lib/librte_cryptodev/rte_cryptodev.c    |  4 ++--
 lib/librte_eal/common/eal_common_pci.c  |  4 ++--
 lib/librte_eal/common/include/rte_pci.h |  4 ++--
 lib/librte_ether/rte_ethdev.c           |  6 +++---
 30 files changed, 37 insertions(+), 47 deletions(-)

diff --git a/app/test/test_pci.c b/app/test/test_pci.c
index f1b988a..cda186d 100644
--- a/app/test/test_pci.c
+++ b/app/test/test_pci.c
@@ -78,14 +78,18 @@ struct rte_pci_id my_driver_id2[] = {
 };
 
 struct rte_pci_driver my_driver = {
-	.name = "test_driver",
+	.driver = {
+		.name = "test_driver"
+	},
 	.probe = my_driver_init,
 	.id_table = my_driver_id,
 	.drv_flags = 0,
 };
 
 struct rte_pci_driver my_driver2 = {
-	.name = "test_driver2",
+	.driver = {
+		.name = "test_driver2"
+	},
 	.probe = my_driver_init,
 	.id_table = my_driver_id2,
 	.drv_flags = 0,
@@ -95,7 +99,7 @@ static int
 my_driver_init(__attribute__((unused)) struct rte_pci_driver *dr,
 	       struct rte_pci_device *dev)
 {
-	printf("My driver init called in %s\n", dr->name);
+	printf("My driver init called in %s\n", dr->driver.name);
 	printf("%x:%x:%x.%d", dev->addr.domain, dev->addr.bus,
 	       dev->addr.devid, dev->addr.function);
 	printf(" - vendor:%x device:%x\n", dev->id.vendor_id, dev->id.device_id);
diff --git a/app/test/virtual_pmd.c b/app/test/virtual_pmd.c
index 8a1f0d0..56eeb99 100644
--- a/app/test/virtual_pmd.c
+++ b/app/test/virtual_pmd.c
@@ -586,7 +586,7 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
 		goto err;
 
 	pci_dev->numa_node = socket_id;
-	pci_drv->name = virtual_ethdev_driver_name;
+	pci_drv->driver.name = virtual_ethdev_driver_name;
 	pci_drv->id_table = id_table;
 
 	if (isr_support)
diff --git a/drivers/crypto/qat/qat_qp.c b/drivers/crypto/qat/qat_qp.c
index 5de47e3..2e7188b 100644
--- a/drivers/crypto/qat/qat_qp.c
+++ b/drivers/crypto/qat/qat_qp.c
@@ -300,7 +300,7 @@ qat_queue_create(struct rte_cryptodev *dev, struct qat_queue *queue,
 	 * Allocate a memzone for the queue - create a unique name.
 	 */
 	snprintf(queue->memz_name, sizeof(queue->memz_name), "%s_%s_%d_%d_%d",
-		dev->driver->pci_drv.name, "qp_mem", dev->data->dev_id,
+		dev->driver->pci_drv.driver.name, "qp_mem", dev->data->dev_id,
 		queue->hw_bundle_number, queue->hw_queue_number);
 	qp_mz = queue_dma_zone_reserve(queue->memz_name, queue_size_bytes,
 			socket_id);
diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c
index 4bd5142..a576ef6 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -618,7 +618,6 @@ eth_bnx2xvf_dev_init(struct rte_eth_dev *eth_dev)
 
 static struct eth_driver rte_bnx2x_pmd = {
 	.pci_drv = {
-		.name = "rte_bnx2x_pmd",
 		.id_table = pci_id_bnx2x_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
 		.probe = rte_eth_dev_pci_probe,
@@ -633,7 +632,6 @@ static struct eth_driver rte_bnx2x_pmd = {
  */
 static struct eth_driver rte_bnx2xvf_pmd = {
 	.pci_drv = {
-		.name = "rte_bnx2xvf_pmd",
 		.id_table = pci_id_bnx2xvf_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/bnx2x/bnx2x_rxtx.c b/drivers/net/bnx2x/bnx2x_rxtx.c
index 0ec4f89..7adea99 100644
--- a/drivers/net/bnx2x/bnx2x_rxtx.c
+++ b/drivers/net/bnx2x/bnx2x_rxtx.c
@@ -19,7 +19,8 @@ ring_dma_zone_reserve(struct rte_eth_dev *dev, const char *ring_name,
 	const struct rte_memzone *mz;
 
 	snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
-			dev->driver->pci_drv.name, ring_name, dev->data->port_id, queue_id);
+			dev->driver->pci_drv.driver.name, ring_name,
+			dev->data->port_id, queue_id);
 
 	mz = rte_memzone_lookup(z_name);
 	if (mz)
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index e19868f..249a8f9 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1045,7 +1045,6 @@ bnxt_dev_uninit(struct rte_eth_dev *eth_dev) {
 
 static struct eth_driver bnxt_rte_pmd = {
 	.pci_drv = {
-		    .name = "rte_" DRV_MODULE_NAME "_pmd",
 		    .id_table = bnxt_pci_id_map,
 		    .drv_flags = RTE_PCI_DRV_NEED_MAPPING,
 		    .probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
index 871103f..0bf4def 100644
--- a/drivers/net/cxgbe/cxgbe_ethdev.c
+++ b/drivers/net/cxgbe/cxgbe_ethdev.c
@@ -1039,7 +1039,6 @@ out_free_adapter:
 
 static struct eth_driver rte_cxgbe_pmd = {
 	.pci_drv = {
-		.name = "rte_cxgbe_pmd",
 		.id_table = cxgb4_pci_tbl,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/cxgbe/sge.c b/drivers/net/cxgbe/sge.c
index ab5a842..736f08c 100644
--- a/drivers/net/cxgbe/sge.c
+++ b/drivers/net/cxgbe/sge.c
@@ -1645,7 +1645,8 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
 	iq->size = cxgbe_roundup(iq->size, 16);
 
 	snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
-		 eth_dev->driver->pci_drv.name, fwevtq ? "fwq_ring" : "rx_ring",
+		 eth_dev->driver->pci_drv.driver.name,
+		 fwevtq ? "fwq_ring" : "rx_ring",
 		 eth_dev->data->port_id, queue_id);
 	snprintf(z_name_sw, sizeof(z_name_sw), "%s_sw_ring", z_name);
 
@@ -1697,7 +1698,7 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
 		fl->size = cxgbe_roundup(fl->size, 8);
 
 		snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
-			 eth_dev->driver->pci_drv.name,
+			 eth_dev->driver->pci_drv.driver.name,
 			 fwevtq ? "fwq_ring" : "fl_ring",
 			 eth_dev->data->port_id, queue_id);
 		snprintf(z_name_sw, sizeof(z_name_sw), "%s_sw_ring", z_name);
@@ -1893,7 +1894,7 @@ int t4_sge_alloc_eth_txq(struct adapter *adap, struct sge_eth_txq *txq,
 	nentries = txq->q.size + s->stat_len / sizeof(struct tx_desc);
 
 	snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
-		 eth_dev->driver->pci_drv.name, "tx_ring",
+		 eth_dev->driver->pci_drv.driver.name, "tx_ring",
 		 eth_dev->data->port_id, queue_id);
 	snprintf(z_name_sw, sizeof(z_name_sw), "%s_sw_ring", z_name);
 
diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index 5761c3c..dd4682c 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -391,7 +391,6 @@ eth_em_dev_uninit(struct rte_eth_dev *eth_dev)
 
 static struct eth_driver rte_em_pmd = {
 	.pci_drv = {
-		.name = "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,
diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index 951f14c..a7c110b 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -1078,7 +1078,6 @@ eth_igbvf_dev_uninit(struct rte_eth_dev *eth_dev)
 
 static struct eth_driver rte_igb_pmd = {
 	.pci_drv = {
-		.name = "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,
@@ -1095,7 +1094,6 @@ static struct eth_driver rte_igb_pmd = {
  */
 static struct eth_driver rte_igbvf_pmd = {
 	.pci_drv = {
-		.name = "rte_igbvf_pmd",
 		.id_table = pci_id_igbvf_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index abc5235..30849a1 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1686,7 +1686,6 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 
 static struct eth_driver rte_ena_pmd = {
 	.pci_drv = {
-		.name = "rte_ena_pmd",
 		.id_table = pci_id_ena_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c
index 69959c7..0141f33 100644
--- a/drivers/net/enic/enic_ethdev.c
+++ b/drivers/net/enic/enic_ethdev.c
@@ -613,7 +613,6 @@ static int eth_enicpmd_dev_init(struct rte_eth_dev *eth_dev)
 
 static struct eth_driver rte_enic_pmd = {
 	.pci_drv = {
-		.name = "rte_enic_pmd",
 		.id_table = pci_id_enic_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
index 985cd69..c6b5acd 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -3055,7 +3055,6 @@ static const struct rte_pci_id pci_id_fm10k_map[] = {
 
 static struct eth_driver rte_pmd_fm10k = {
 	.pci_drv = {
-		.name = "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,
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index d9e5988..4dfc92a 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -663,7 +663,6 @@ static const struct rte_i40e_xstats_name_off rte_i40e_txq_prio_strings[] = {
 
 static struct eth_driver rte_i40e_pmd = {
 	.pci_drv = {
-		.name = "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,
diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 0852472..7d863b3 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1554,7 +1554,6 @@ i40evf_dev_uninit(struct rte_eth_dev *eth_dev)
  */
 static struct eth_driver rte_i40evf_pmd = {
 	.pci_drv = {
-		.name = "rte_i40evf_pmd",
 		.id_table = pci_id_i40evf_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c
index f65c411..a4efc6d 100644
--- a/drivers/net/i40e/i40e_fdir.c
+++ b/drivers/net/i40e/i40e_fdir.c
@@ -251,7 +251,7 @@ i40e_fdir_setup(struct i40e_pf *pf)
 
 	/* reserve memory for the fdir programming packet */
 	snprintf(z_name, sizeof(z_name), "%s_%s_%d",
-			eth_dev->driver->pci_drv.name,
+			eth_dev->driver->pci_drv.driver.name,
 			I40E_FDIR_MZ_NAME,
 			eth_dev->data->port_id);
 	mz = i40e_memzone_reserve(z_name, I40E_FDIR_PKT_LEN, SOCKET_ID_ANY);
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 406302e..ae12adc 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -1562,7 +1562,6 @@ eth_ixgbevf_dev_uninit(struct rte_eth_dev *eth_dev)
 
 static struct eth_driver rte_ixgbe_pmd = {
 	.pci_drv = {
-		.name = "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,
@@ -1579,7 +1578,6 @@ static struct eth_driver rte_ixgbe_pmd = {
  */
 static struct eth_driver rte_ixgbevf_pmd = {
 	.pci_drv = {
-		.name = "rte_ixgbevf_pmd",
 		.id_table = pci_id_ixgbevf_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 172ff86..dcc4266 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -5911,7 +5911,9 @@ static const struct rte_pci_id mlx4_pci_id_map[] = {
 
 static struct eth_driver mlx4_driver = {
 	.pci_drv = {
-		.name = MLX4_DRIVER_NAME,
+		.driver = {
+			.name = MLX4_DRIVER_NAME
+		},
 		.id_table = mlx4_pci_id_map,
 		.probe = mlx4_pci_probe,
 		.drv_flags = RTE_PCI_DRV_INTR_LSC,
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index f1bc7a1..063f1d0 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -728,7 +728,9 @@ static const struct rte_pci_id mlx5_pci_id_map[] = {
 
 static struct eth_driver mlx5_driver = {
 	.pci_drv = {
-		.name = MLX5_DRIVER_NAME,
+		.driver = {
+			.name = MLX5_DRIVER_NAME
+		},
 		.id_table = mlx5_pci_id_map,
 		.probe = mlx5_pci_probe,
 		.drv_flags = RTE_PCI_DRV_INTR_LSC,
diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index bc1f8a1..f883a46 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -214,7 +214,7 @@ ring_dma_zone_reserve(struct rte_eth_dev *dev, const char *ring_name,
 	const struct rte_memzone *mz;
 
 	snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
-		 dev->driver->pci_drv.name,
+		 dev->driver->pci_drv.driver.name,
 		 ring_name, dev->data->port_id, queue_id);
 
 	mz = rte_memzone_lookup(z_name);
@@ -1000,7 +1000,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 
 	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 
-	dev_info->driver_name = dev->driver->pci_drv.name;
+	dev_info->driver_name = dev->driver->pci_drv.driver.name;
 	dev_info->max_rx_queues = (uint16_t)hw->max_rx_queues;
 	dev_info->max_tx_queues = (uint16_t)hw->max_tx_queues;
 	dev_info->min_rx_bufsize = ETHER_MIN_MTU;
@@ -2460,7 +2460,6 @@ static struct rte_pci_id pci_id_nfp_net_map[] = {
 
 static struct eth_driver rte_nfp_net_pmd = {
 	.pci_drv = {
-		.name = "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,
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 3403524..b74fc28 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1478,7 +1478,6 @@ static struct rte_pci_id pci_id_qede_map[] = {
 
 static struct eth_driver rte_qedevf_pmd = {
 	.pci_drv = {
-		    .name = "rte_qedevf_pmd",
 		    .id_table = pci_id_qedevf_map,
 		    .drv_flags =
 		    RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
@@ -1492,7 +1491,6 @@ static struct eth_driver rte_qedevf_pmd = {
 
 static struct eth_driver rte_qede_pmd = {
 	.pci_drv = {
-		    .name = "rte_qede_pmd",
 		    .id_table = pci_id_qede_map,
 		    .drv_flags =
 		    RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c
index ad5f74c..753004f 100644
--- a/drivers/net/szedata2/rte_eth_szedata2.c
+++ b/drivers/net/szedata2/rte_eth_szedata2.c
@@ -1572,7 +1572,6 @@ static const struct rte_pci_id rte_szedata2_pci_id_table[] = {
 
 static struct eth_driver szedata2_eth_driver = {
 	.pci_drv = {
-		.name     = RTE_SZEDATA2_PCI_DRIVER_NAME,
 		.id_table = rte_szedata2_pci_id_table,
 		.probe = rte_eth_dev_pci_probe,
 		.remove = rte_eth_dev_pci_remove,
diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
index ffe305c..2a999a9 100644
--- a/drivers/net/thunderx/nicvf_ethdev.c
+++ b/drivers/net/thunderx/nicvf_ethdev.c
@@ -1759,7 +1759,6 @@ static const struct rte_pci_id pci_id_nicvf_map[] = {
 
 static struct eth_driver rte_nicvf_pmd = {
 	.pci_drv = {
-		.name = "rte_nicvf_pmd",
 		.id_table = pci_id_nicvf_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 0ff8724..2934bd4 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1304,7 +1304,6 @@ eth_virtio_dev_uninit(struct rte_eth_dev *eth_dev)
 
 static struct eth_driver rte_virtio_pmd = {
 	.pci_drv = {
-		.name = "rte_virtio_pmd",
 		.id_table = pci_id_virtio_map,
 		.drv_flags = RTE_PCI_DRV_DETACHABLE,
 		.probe = rte_eth_dev_pci_probe,
@@ -1534,7 +1533,7 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	struct virtio_hw *hw = dev->data->dev_private;
 
 	if (dev->pci_dev)
-		dev_info->driver_name = dev->driver->pci_drv.name;
+		dev_info->driver_name = dev->driver->pci_drv.driver.name;
 	else
 		dev_info->driver_name = "virtio_user PMD";
 	dev_info->max_rx_queues = (uint16_t)hw->max_rx_queues;
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index cec95c4..93df3db 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -137,7 +137,8 @@ gpa_zone_reserve(struct rte_eth_dev *dev, uint32_t size,
 	const struct rte_memzone *mz;
 
 	snprintf(z_name, sizeof(z_name), "%s_%d_%s",
-					dev->driver->pci_drv.name, dev->data->port_id, post_string);
+					dev->driver->pci_drv.driver.name,
+					dev->data->port_id, post_string);
 
 	mz = rte_memzone_lookup(z_name);
 	if (mz)
@@ -328,7 +329,6 @@ eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev)
 
 static struct eth_driver rte_vmxnet3_pmd = {
 	.pci_drv = {
-		.name = "rte_vmxnet3_pmd",
 		.id_table = pci_id_vmxnet3_map,
 		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
 		.probe = rte_eth_dev_pci_probe,
diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c
index 9deeb3f..e6d93f3 100644
--- a/drivers/net/vmxnet3/vmxnet3_rxtx.c
+++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c
@@ -774,7 +774,7 @@ ring_dma_zone_reserve(struct rte_eth_dev *dev, const char *ring_name,
 	const struct rte_memzone *mz;
 
 	snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
-			dev->driver->pci_drv.name, ring_name,
+			dev->driver->pci_drv.driver.name, ring_name,
 			dev->data->port_id, queue_id);
 
 	mz = rte_memzone_lookup(z_name);
diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c
index c81e366..2e17169 100644
--- a/lib/librte_cryptodev/rte_cryptodev.c
+++ b/lib/librte_cryptodev/rte_cryptodev.c
@@ -459,7 +459,7 @@ rte_cryptodev_pci_probe(struct rte_pci_driver *pci_drv,
 		return 0;
 
 	CDEV_LOG_ERR("driver %s: crypto_dev_init(vendor_id=0x%x device_id=0x%x)"
-			" failed", pci_drv->name,
+			" failed", pci_drv->driver.name,
 			(unsigned) pci_dev->id.vendor_id,
 			(unsigned) pci_dev->id.device_id);
 
@@ -870,7 +870,7 @@ rte_cryptodev_info_get(uint8_t dev_id, struct rte_cryptodev_info *dev_info)
 
 	dev_info->pci_dev = dev->pci_dev;
 	if (dev->driver)
-		dev_info->driver_name = dev->driver->pci_drv.name;
+		dev_info->driver_name = dev->driver->pci_drv.driver.name;
 }
 
 
diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c
index bef7ee8..79f5526 100644
--- a/lib/librte_eal/common/eal_common_pci.c
+++ b/lib/librte_eal/common/eal_common_pci.c
@@ -195,7 +195,7 @@ rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, struct rte_pci_device *d
 		}
 
 		RTE_LOG(INFO, EAL, "  probe driver: %x:%x %s\n", dev->id.vendor_id,
-				dev->id.device_id, dr->name);
+				dev->id.device_id, dr->driver.name);
 
 		if (dr->drv_flags & RTE_PCI_DRV_NEED_MAPPING) {
 			/* map resources for devices that use igb_uio */
@@ -255,7 +255,7 @@ rte_eal_pci_detach_dev(struct rte_pci_driver *dr,
 				loc->function, dev->numa_node);
 
 		RTE_LOG(DEBUG, EAL, "  remove driver: %x:%x %s\n", dev->id.vendor_id,
-				dev->id.device_id, dr->name);
+				dev->id.device_id, dr->driver.name);
 
 		if (dr->remove && (dr->remove(dev) < 0))
 			return -1;	/* negative value is an error */
diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h
index 67f6ee7..f0a9ea2 100644
--- a/lib/librte_eal/common/include/rte_pci.h
+++ b/lib/librte_eal/common/include/rte_pci.h
@@ -200,7 +200,7 @@ typedef int (pci_remove_t)(struct rte_pci_device *);
  */
 struct rte_pci_driver {
 	TAILQ_ENTRY(rte_pci_driver) next;       /**< Next in list. */
-	const char *name;                       /**< Driver name. */
+	struct rte_driver driver;               /**< Inherit core driver. */
 	pci_probe_t *probe;                     /**< Device Probe function. */
 	pci_remove_t *remove;                   /**< Device Remove function. */
 	const struct rte_pci_id *id_table;	/**< ID table, NULL terminated. */
@@ -492,7 +492,7 @@ void rte_eal_pci_register(struct rte_pci_driver *driver);
 RTE_INIT(pciinitfn_ ##nm); \
 static void pciinitfn_ ##nm(void) \
 {\
-	(pci_drv).name = RTE_STR(nm);\
+	(pci_drv).driver.name = RTE_STR(nm);\
 	rte_eal_pci_register(&pci_drv); \
 } \
 DRIVER_EXPORT_NAME(nm, __COUNTER__)
diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 6acd1c7..3b9917e 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -276,7 +276,7 @@ rte_eth_dev_pci_probe(struct rte_pci_driver *pci_drv,
 		return 0;
 
 	RTE_PMD_DEBUG_TRACE("driver %s: eth_dev_init(vendor_id=0x%u device_id=0x%x) failed\n",
-			pci_drv->name,
+			pci_drv->driver.name,
 			(unsigned) pci_dev->id.vendor_id,
 			(unsigned) pci_dev->id.device_id);
 	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
@@ -2569,7 +2569,7 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name,
 	const struct rte_memzone *mz;
 
 	snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
-		 dev->driver->pci_drv.name, ring_name,
+		 dev->driver->pci_drv.driver.name, ring_name,
 		 dev->data->port_id, queue_id);
 
 	mz = rte_memzone_lookup(z_name);
@@ -3211,7 +3211,7 @@ rte_eth_copy_pci_info(struct rte_eth_dev *eth_dev, struct rte_pci_device *pci_de
 
 	eth_dev->data->kdrv = pci_dev->kdrv;
 	eth_dev->data->numa_node = pci_dev->numa_node;
-	eth_dev->data->drv_name = pci_dev->driver->name;
+	eth_dev->data->drv_name = pci_dev->driver->driver.name;
 }
 
 int
-- 
2.7.4