From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0083.outbound.protection.outlook.com [157.56.111.83]) by dpdk.org (Postfix) with ESMTP id C0E6C95C8 for ; Tue, 2 Feb 2016 15:27:55 +0100 (CET) Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from cavium1.semihalf.local (80.82.22.190) by SN1PR07MB1453.namprd07.prod.outlook.com (10.161.223.14) with Microsoft SMTP Server (TLS) id 15.1.396.15; Tue, 2 Feb 2016 14:27:53 +0000 From: To: Date: Tue, 2 Feb 2016 15:27:18 +0100 Message-ID: <1454423239-16382-1-git-send-email-krytarowski@caviumnetworks.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [80.82.22.190] X-ClientProxiedBy: VI1PR07CA0017.eurprd07.prod.outlook.com (25.163.160.155) To SN1PR07MB1453.namprd07.prod.outlook.com (25.161.223.14) X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1453; 2:85cERM0dzAMVEiowOm6sxM8JexuUhrpUW274ZE2WS2zG6ULIXNCQmKi35wBBNhT6XDK/FeT3Fw13cbgH8q9+o33jJELad8n447SnbuME6OhJxZjqrthVaRYoHzdfTfDzzciHgHxxDhzNGaQDPHldoQ==; 3:KiPaMcIkumHWJIdcoOu+uCo1U8d8x1hcLX3IerJojdoRuUmPej5wljRtamzoJTptseBqW2gSBrl0jo79WAO4cJmS9uooaZTx2zClEkqMnSRBEo6UNj703TBl4fV4/iWW; 25:KSDwLSq+4iSWNYv0gUsWiB0EUHSlI40w3ry8Cyjb6s3TCSmBbwWaUJ5KruGwPgzQN7BRicZpV1EIfzSq6AVdPHV41TyXiqX+c3GHXTUaYnbpr5BNftOpi6O5HJruGe+PVds2MrlQxAx6kl+/LDMAjybrxFczWUl6q9Cr2hdPu3TEgKLgZvgnsDaAKOUnapiK3Il312S/cadFqIMMJxXIsUWkTVJzNTkaqSFz8+fPPKnTX1Gn8k+3Mm8AHqsVqZUO X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB1453; X-MS-Office365-Filtering-Correlation-Id: bc6181cf-b94d-4a6c-fb3d-08d32bdd09cd X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1453; 20:B0z+CjV58s7U3CUsm8xEHvf9uQddhdJe6Wvz663o1Nd/zQzODfbc8jk48t2LD1WBdRdF0nx6+JYIIjQTbnvafC5TDhYZE08JVxXv+Q5fDU2xaJ7wxiLC+bwpaVzlBTLJNjPkPPbaoRSkx3d8YfE5MmrQVNNnlZWFjzNOycEji+F4Nv2d2OuIxylDy3hBQncWSmrqpjSWBe4tIO/QXbSWH+e54AV6NHslF+gGph/fg4Xt0MKKYpmKT18O9Sk5AyJ6fTolQM1JMNQSsx557rfQ7xrEJwyyInphhSNsDsK28PYqzotLRk/8Iyt/jWQzl8fF6ePyvUJAZIrsvhaUS1cx/nm2YPRq2uZdeDHOGQ5OEnemb22AjDiLGsZ7xzVFOFQCA7p8PBQNmlzw3Ip6T7eC+QusZBrgwqCD4433P1XKuH7WvRpbndnICsmKjXgyRxjNBHgbhoUyjUfR9prkSbXg3p/czi3JCOZIJ045VwXQdMc4v+j1dF0Vu3+M0kSE09IrLltNE09GW5YLRQbF9gYbrpxpOYJHru/tO6bA55r1PXH2nYL2ohLEpNONbBMUGN8r17IGBYRaxKwVZo4qlHMAVGSZ8sr81+Y6JAGxc4GGkoE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); SRVR:SN1PR07MB1453; BCL:0; PCL:0; RULEID:; SRVR:SN1PR07MB1453; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1453; 4:X/tdPuOitmHOacolRJxayOO1iX5fw493VW4Mxbc5FN9on+WqFgNj2sqNYTfF5Dvvwo7fBMsyLZ2JbITlVTtozj0Tlcqqp+tEr9IgaSvkcvDg1+3jwJiIY5YYW2l/M7FTHpRCSwsMkavAI/cBCVqGQYFZysSqRikW78P2JJPbdJRIYSzv8pHrTWcR5EJsAgud8YMMcmzl3h5WeTG3ASeb6noSGIJWsy1kligfam8Y2nr5I2W+0ZKUzlxNM84qM9oou+iWDQPPY4QWkv80WSTBEJDCepLnHoTiPy1RX4TIkH9Yt6n4pvg6pBZATT1K1KpVRI+m6nDS721bN33GVfcaldy7liAY/a3zL/YiujJL7KazQUz4jJhLmaVYgWm1z5wS X-Forefront-PRVS: 084080FC15 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(92566002)(50986999)(4326007)(5003940100001)(87976001)(2906002)(86152002)(50226001)(5008740100001)(48376002)(6116002)(229853001)(1096002)(110136002)(36756003)(122386002)(5004730100002)(47776003)(3470700001)(586003)(66066001)(77096005)(189998001)(33646002)(40100003)(107886002)(42186005)(5001960100002)(2876002)(19580395003)(19580405001)(4001430100002)(2351001)(50466002)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR07MB1453; H:cavium1.semihalf.local; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB1453; 23:LjkDrFWCg4sUG8tVzy5qtInQnnw2Sx/v8Yhv9zeRD?= =?us-ascii?Q?fWxDVINF/IhXUzz6aQ4XUPi7g6dauo/DK0fU4PQn53VxswcrP63eIUJNgSn8?= =?us-ascii?Q?K+x2BZx2hxQxbdMp6nhy+iVktOT2MaSJcOtfrfeAYx88lnadyl9cx1yiqqOG?= =?us-ascii?Q?tHeSEGXL4ua00juqrVNBIkl9hxdllh5RES0Irhzl4qpVHEg4QrsgpIcyIg5l?= =?us-ascii?Q?np8rfOMMt/O6Uor2H+s7xgNGmPn+Kn88Z/CqSOPfvY2NZrvE325eoGnx67AA?= =?us-ascii?Q?n75rt9zCa4/c52i9/6ByG4CUNInyr8e/cx4pJAq0p1xfhdZilNuHXhht3NOb?= =?us-ascii?Q?YI9SXSnA8JWStV3/LdX7M3m100ulUa9K89miv04PThYzjK627ewIO+yHTpis?= =?us-ascii?Q?VhY+SNmZyVHOC2In12EkKfKWUCbCTkkBU22FvIS0qsNxzohcmGDSxSbq62sJ?= =?us-ascii?Q?HgYetLlkzFo+v20QC7+iKa/AP1wgIMFGeV3UyEOBz3xQ/V0gZMY9dsBl5e7o?= =?us-ascii?Q?4l2DfXvvqzsvMvKPFbzX3LSNM/qVl3jg+S+ucqek8dIieYWy7cLhE8t0rNi5?= =?us-ascii?Q?/azxGjmRs7ZkQuz4ViaMI4IpzXygp1iUVuyw5oaM16rURcyAsthk2Mj8MNGS?= =?us-ascii?Q?7kvnQAHiBmZZvN/nj57lZAi9FpmXevTKcogX+b+FxVtRDnlLF7blOY6qBFkO?= =?us-ascii?Q?yD3CQkncz6OiJk6Ar5SIcbUXp5PGmDu9vUFYyuCzgL8YBkAlVjrFbYFKFRHU?= =?us-ascii?Q?lCTqfGupv+b2TYjRDEz3zfB4QGmDhFO4Ovap35xGkJG+kEUCM8611cocNjkO?= =?us-ascii?Q?E532rfjw2oqy7+gBnvOw6NzZGQ6KZClX7T7nFyxCYLGU3aF/XrhmU5PJvIGc?= =?us-ascii?Q?Ddf9ACTWDEtPEYzBeiAUdMTmTUuDBCVEmJYBUyNqSkaYeuMkSNhnEbR3SaHU?= =?us-ascii?Q?0h2/uR/x06G+XQidlGDfSt2/+BQwH1+LRAdQ3wobmri69stE2QeQPPrv4sul?= =?us-ascii?Q?CU=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB1453; 5:S1w1u1E2Xe32aGC7bMiiMs6choLpIdAxwM59P/vR/avsOkIbwAVCpJlkPkV9LOrao7U9kXO36xZhw7tUVPw+garXticnZSe/GxW7rVveKohKwFDy2epUKkpeC5O45vL49rpkE+J1vbBvwVIBXNu0oQ==; 24:7BBREvmIYjWB/JCSeAfqOGUQewOwObicxrNeQ0LYfbLHsq93L630cVWvUNqZkiBhh8H+Zs9nQBUdBAr8xBI6QqWyPq94px/offnjh6cGlNk= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2016 14:27:53.2726 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB1453 Subject: [dpdk-dev] [PATCH 1/2] ethdev: Allow to overload pci_drv.devinit and pci_drv.devuninit 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: Tue, 02 Feb 2016 14:27:56 -0000 From: Kamil Rytarowski This change enables drivers needing custom pci (de)initialization functions through the standard callback overloading. For example: /* * virtual function driver struct */ static struct eth_driver rte_DRIVER_pmd = { { .name = "rte_DRIVER_pmd", .id_table = pci_id_DRIVER_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING, .devinit = DRIVER_pci_devinit, }, .eth_dev_init = eth_DRIVER_dev_init, .dev_private_size = sizeof(struct DRIVER), }; Use-case is as follows: NIC offers several pci virtual functions, while one of them is to be treated as port, we need to configure the rest in a specific way for particular device for full interface (port) functionality. Signed-off-by: Kamil Rytarowski --- lib/librte_ether/rte_ethdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index 756b234..ac4aeab 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -351,8 +351,10 @@ 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; + if (!eth_drv->pci_drv.devinit) + eth_drv->pci_drv.devinit = rte_eth_dev_init; + if (!eth_drv->pci_drv.devuninit) + eth_drv->pci_drv.devuninit = rte_eth_dev_uninit; rte_eal_pci_register(ð_drv->pci_drv); } -- 1.9.1