From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0077.outbound.protection.outlook.com [157.56.111.77]) by dpdk.org (Postfix) with ESMTP id 703502A5D for ; Wed, 3 Feb 2016 12:40:12 +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 localhost.localdomain (80.82.22.190) by DM2PR07MB1451.namprd07.prod.outlook.com (10.161.139.145) with Microsoft SMTP Server (TLS) id 15.1.396.15; Wed, 3 Feb 2016 11:40:10 +0000 To: David Marchand References: <1454423239-16382-1-git-send-email-krytarowski@caviumnetworks.com> From: Kamil Rytarowski Message-ID: <56B1E70B.4070607@caviumnetworks.com> Date: Wed, 3 Feb 2016 12:39:55 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [80.82.22.190] X-ClientProxiedBy: HE1PR09CA0006.eurprd09.prod.outlook.com (25.162.19.16) To DM2PR07MB1451.namprd07.prod.outlook.com (25.161.139.145) X-Microsoft-Exchange-Diagnostics: 1; DM2PR07MB1451; 2:8MlN9NAqIBjKHx7KnBAJrn8YGKvrn3nbchMJcxwl9tCjNidYhxcPFVqKPC6rtzGxRJoiPtCl0XDtT5PpZUQI+r5GiZ5cKDSxgvte8pMPBYNwtHtSCRkjWCGocbRv0QdjbiZ+iAnmNnSe6vm8usLSUQ==; 3:kqtEUEm8asQMCT3+jXYZAxqRUwSbCFHJMVTAwOPnteBJ1++WvOK5xW7XX4jFUrudr5PHCG+6Wx6ulEJ6N16+vtAWRD63fSts+wA0bRM+6xMpiMXcf/M2eyctHLPnSeWd; 25:tbYbaqaCB9YjgWBj6P5eLNPuf7a22nZrXOXA5ATtXdu3sLslTfQWGdP/pQyYVYbhwuZhrWJBKSDox0BjF+hVHTapyMqFJWOf24yovx+q+xBT7LXfa3o1uYzuVp6QBd0uuKbzU6I4GdRKiIautoEIgDaZAJANpdTcOo64lMFn/FSgIL8SOh6Oo5Fubo0kbs4ftwbxa/iHbi+uuKqj6d15rKlDIKedtrnIuDWbFqwHYshHOZktIblwjYu1vsDiSp// X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR07MB1451; X-MS-Office365-Filtering-Correlation-Id: 8f2cca62-c9f1-4808-a48b-08d32c8ec64a X-Microsoft-Exchange-Diagnostics: 1; DM2PR07MB1451; 20:M5pARHS56Pllbny8vgR3vpnrkruEcF51GgDfFW2aQ86YELdqWbQ4uwuJ0s1PG0uS9+4atqe6oEak0TTb9ijvoTWVzQbP6Bz33ncX/qqtPx8iv1dlowqpAdH0/5CRvea8lGC+Xehi3x/gMFp6E4BzU6jjnDSy2ms1+Q/z7LsobZYtYkE1Nf+EB24xVJsIrVukiwyfC4iuaazyRoGAC2NWZpbzp8bNPmcvp6D8pAZR51JrNxCgo0n1pcKfqAUwVZzBz1RoYAVrgE1riu5S+ysTmTc4C9sV2juVhCZl1QjZK9AK1oGarh2rLyWcKEuJw86EJ4jhbZ8Bbo2905vS8dRkO+0YSHG5LD0VgHR5Kzgj4MD06JcbwxAX7Du6bLO4Y8rbtd5DaGmD5uFZTsNiG42Z0KYnRg8LCUkY8T25nfQWsPJKGWXTJPCTic6/1o4zXO8TImaQqtS/A5+QjHUUAH9BR4UNQQ5WYxpSMh+cN2oJcFEDGr0YxS3ego+U6iLjzeULGo8iht9335RO76zxvrHKAb9NrpoNjCB2Up+Rbylj+WP0jOOAd/rgf/M9Jhhpjt6UGGCYrRX4rivcx2XXy0ECeil8IJrJqpASOsiGbWBKzVI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046); SRVR:DM2PR07MB1451; BCL:0; PCL:0; RULEID:; SRVR:DM2PR07MB1451; X-Microsoft-Exchange-Diagnostics: 1; DM2PR07MB1451; 4:ywBW4gfESFuBiDUBV+GVCrVRPh7Q6ciVAJ0eQ0i96i702V3EVCXschMuLXv/xi/h4jJILaggEUHvwCkrFFBB3DyZw8Y1mMePhDDXprRIq1a6CYdu8/G6vmqTjGMMAEIA20E7VAxKQ/YTQ0uR3JvWWM/YZiyD6f5E3K4z8i3WfnHhEFxPlOwK9f8leyvTvYnRdJCn+eHN/0bxYfzZV2LDtP6TWIJZiEH7L6X+Bu5uz90PkE9Cij4MHl577xfqVtlQu0O+kjXF+skwpMAkvBfKBxcKvS3RmWEiVjm++eflXyaRDO1g++utrb6bSJrZfOv0W/+qVcVyfDAzb4WrWuXbZ4nAmVgxF2xVKK/98LARhVNkQoYvoA670ov9OgH9julU X-Forefront-PRVS: 08417837C5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(377454003)(24454002)(189998001)(2950100001)(40100003)(5008740100001)(33656002)(50466002)(4001350100001)(4326007)(122386002)(2906002)(5004730100002)(110136002)(87976001)(5001960100002)(23676002)(77096005)(36756003)(586003)(1096002)(65806001)(92566002)(80316001)(87266999)(50986999)(47776003)(19580405001)(19580395003)(66066001)(230700001)(3846002)(42186005)(83506001)(54356999)(65956001)(65816999)(6116002)(76176999)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR07MB1451; H:localhost.localdomain; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjA3TUIxNDUxOzIzOnN1S04xOWxkZGl1dXBUTENQcGFpU2h4UTMy?= =?utf-8?B?RFlGRnVxbUF3RllqZFJtWnBPb2NPeE5yYis0aERZMGJnQS9NWkcxemg1ZFF0?= =?utf-8?B?UEszZnZZMXg2c2xwbWNVZGJ1akFSbm1xMnhDa3JnemQ1RVpEY0NCWlBKKy9a?= =?utf-8?B?VU84RndheTVTN21FYnBlUGQ3T0dObExxRFZycjJmbjdlTTNGYmhlUytNVDQw?= =?utf-8?B?YjRWaVVDRmw1NFcyZEU2SGtKL2lUMHR4QUJmQU9nZGlKUzZ2SmE1YW9DUW4v?= =?utf-8?B?RzlYc1pNL3Z0VXNxaW9hZ2pPckxRMWpoMThoNXJyWUt1eVhUdTdLVEx0TFdH?= =?utf-8?B?MHVTeU9GQ1lqZm5GeHNOZWRXcjFsSkUxM3VPWk1uQmtLU2xXeEhQcVJSMkRE?= =?utf-8?B?VHBuaWtsQ0piTTlqc2NhYjVoV0RDd3NHd0k1RUp6Qzc2NnFNbHV5d2VCc2wz?= =?utf-8?B?anVGU3FiWW1CVDV3UC9QcXBPMDl6YXpjU0MrdHlnb050QXc2TkgzQ085Qjdh?= =?utf-8?B?RVJ0VjAzUVdqSlNzdmFKQlVWbnk2VHM2dU1pN1FqOVd4OUYrd3NQTjhXakFq?= =?utf-8?B?S1Y1TzF6d050c0lIVXlqUlhHOCs3VUNKR2wwR1c1RkhxY2xIb0FhSE1zUk54?= =?utf-8?B?K0hwZDVhcUhxKzV3MmpxRUQxZ0NWZlg2SUJuOFExaGRVM0kyMXp2UDdYM0tH?= =?utf-8?B?ODVhQWxGVWdKZ0lqalBrbzAxakl6cW5Kak4rS2V1Y3VzeWk3NWM5SUFCdHRR?= =?utf-8?B?elhwR2FLNHRhVm5xK1NOSzE4UmF6TWU3NkVnR1craDRaR28xWTBwUlVjbGNO?= =?utf-8?B?YWNzVlhOWWx3WVpTM2JYYkVBV2pMVjZ4SzI1RExWWEM1VmpPTmc0TjEzdm5H?= =?utf-8?B?aDVsV0RybTJuclNLYVNhb3NyRjBmcm5ReU5UNVl5dVJwNnFwNnRpZFZZQitq?= =?utf-8?B?Z3JSVVhxS3dNdllBa1FBTEJWa2luSDVFREUrSnlhVUd6eWZlanFEK2dBcFdr?= =?utf-8?B?RnVxdFVzd2ZKN2dqWjhPTHJSaFRlWWhndUx6R2JOSWd6NE1wRkRqL0Z5M1hY?= =?utf-8?B?R3hUS1V6bzRldFZua1pSb003bFhOOS9mU2loT1hhVXZnZWw1T2d3VzZ5NnFv?= =?utf-8?B?WkFxditGWmRGRnpsRWRUN09xczVmblFHRDlKRFRqOGtnQnI2RlRtZ3NZMkZv?= =?utf-8?B?TUZVWXVjNHo1M1NnUUVrL3BoWVgwMHVrUHUyUUNUTk4yemxEVUdXOE5WYWdY?= =?utf-8?B?MjNkRVYreGlNK1FLOUdMQi9aREdJRm1od0JUd3BWdDUyV1lzSFVjcVFJQ2VF?= =?utf-8?B?UUkybG10Q2ViYk5hSDB4NHUrMkJUdnVrSEwveElhQU05N08xeE8xNXVxb2lj?= =?utf-8?B?M1ducmc2ZTloU2lVTGJWTUVHODNDMUJFTU5IR1N3d1RrNElHQzlTYjZqWlYz?= =?utf-8?B?TUJ3YTAvRjhjUWo3OW1haGplWG5uWEZWOVVLSVNxMjc5bEc1aTZTR0o2c25t?= =?utf-8?Q?zZsic8biP8Wu8DnUv+jRF3BFs=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR07MB1451; 5:IvtoJoNme3yuPnGesCcRxhgeyF2hLO3t4TuGy621lrojzy0LzQlA0q+Xp0m4yaY1c6IXcs+G3sWqoAF0MYg+rE51c6BGq7jb12+pReCnKcxlFk/VenRwL3Dc+WxHSeYThsdW1cDJ65uKiY8O+YptyA==; 24:J4i0Us6EDiEw9oppCqAiiQiOgyWfobqd7W3n7WD1YK1712OlVqQ8tQNJkqzwVMQMMhKzZq8ctYdqX+plGqohH42WNGLrLDEs4xqsVlUOZRw= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2016 11:40:10.5161 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR07MB1451 Cc: "dev@dpdk.org" Subject: Re: [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: Wed, 03 Feb 2016 11:40:13 -0000 W dniu 03.02.2016 o 09:47, David Marchand pisze: > Hello, Hello, > On Tue, Feb 2, 2016 at 3:27 PM, wrote: >> 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. > Mmm, why don't you register a custom pci driver rather than a eth_driver ? Both Virtual Functions are of eth_driver type and they share the same PCI ID. They are like 2 (or more) NIC devices working in tandem (it's not bonding), with a possibility to join into a single one and offer additional functionality. In that case one is master and the other is donor of functionality, like additional queue sets. > And do your custom things in its devinit function ? > > Yes, I'm doing custom things. I'm requesting from PF the mode of the device to be initialized. This part is handled dynamically and depends of the current configuration in PF. In my use-case there are two device types: primary (master) and secondary (slave). For the primary VF I'm creating a DPDK port normally, for secondary I retain configured PCI device for further reuse (and there is no port created). I cannot overload functions called after .devinit() as the secondary devices will be wrongly treated like a DPDK port. My use-case doesn't need modified API to be functional. The missing handling of overloaded .devinit and .devuninit looks like a bug - there is API for it, but it will keep overwriting the pointers with local functions (rte_eth_dev_init(), rte_eth_dev_uninit()).