From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 95CC5A0A0B; Mon, 1 Feb 2021 09:39:32 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3B88F16064D; Mon, 1 Feb 2021 09:39:32 +0100 (CET) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 358EB40693 for ; Mon, 1 Feb 2021 09:39:30 +0100 (CET) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id A1CA47F5BC; Mon, 1 Feb 2021 11:39:29 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru A1CA47F5BC DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1612168769; bh=wCSkp5e84XGUJ3SPWjogZg3NNWm5i+70QFZdq2VrBww=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=rUy6xNhRJY7ZrmhH3m6wcES9oWe5km0MBgCR2Wv5ELB04VnkYhpxItKh/Lxi7mO9d nVH1lcfOURx2ZHmUkkMunuKdleyPvzvVzKSTfnU3peCWQ7P5juS9bmWlHQZz8txOY6 iJzL4Efmk5QHV/ksOK8aywAiOEQtljEGh2SUn5xQ= To: "Xueming(Steven) Li" Cc: "dev@dpdk.org" , Slava Ovsiienko , Asaf Penso References: <1608303356-13089-2-git-send-email-xuemingl@nvidia.com> <1611040409-11548-1-git-send-email-xuemingl@nvidia.com> <27ae1146-50a9-7a56-bce8-b93740927389@oktetlabs.ru> <8afffbdd-c822-bf63-8c74-a77fe78002f8@oktetlabs.ru> <700f53fd-d327-aa5d-13e6-df7afc5331eb@oktetlabs.ru> From: Andrew Rybchenko Organization: OKTET Labs Message-ID: <6de02e03-2ab1-240e-1767-74bcc4403080@oktetlabs.ru> Date: Mon, 1 Feb 2021 11:39:29 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v5 0/9] ethdev: support SubFunction representor X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 1/28/21 5:31 PM, Xueming(Steven) Li wrote: > >>> The patch of device SF capability, but seems I misunderstood your suggestion. >>> Let me explain process to create a SF: >>> 1. SF can be created on the fly with scripts, unlike VF which is statically pre-created. >> >> Is there a maximum index and maximum total number of SF's created? How to find it? > > The maximum index is defined by firmware configuration, all SF's information could be found > from sysfs. To create a SF, both PCI and sfnum have to be specified. sysfs is obviously Linux specific. I think the information should be available via DPDK API. >> >>> 2. SF is created on a PF with a SF number. SF number is named per PF, different PF may have same SF number. >>> 3. For standalone PF, hot plug to DPDK using "PF#_BDF,representor=sf#", no need to use pf#sf# here. >>> 4. For bonding netdev, hot plug to DPDK using "PF0_BDF,representor=pf#sf#" >>> If using new api to return all representor IDs, need some way locate >>> the new created SF by PF and SF number, that's why "pf#sf#" is used in this patch set. >> >> I think the API should simply reserve/report space for maximum number of SFs. So, IDs are stable across restart/reboot in assumption >> that NIC is not reconfigured (changed maximum number of VF or maximum number of SFs of any PF). > > Yes, IDs should be stable as long as no NIC firmware configuration change. > > Just clarify, this api should be common enough to report all devices that a bus device supports: > 1. name, might contains controller and pf info, example: "eth:representor:c0pf1vf" > 2. ID range, example: 0-127 > The api describes ID ranges for each sub device type, users have to query the api and choose representor ID to probe. > > Prototype: > struct rte_bus_device_range { > char name[64]; > uint32_t base; > uint32_t number; > } > /* return number of ranges filled, or number of ranges if list is NULL. */ > int rte_bus_ dev_range_get(struct rte_bus_device_range *list, int n); Hm, I thought about more port representor specific API. For me it is hard to tell if such generic naming is good or bad. I think it should be proven that such generic API makes sense. Any other potential users / use cases? I've considered ethdev API which returns (in similar way as above) list of possible port representors which could be controlled by the device. Also I think it would be useful to include type information (enum with PF, VF, SF), controller ID. There is one more bit which is not in the picture yet - switch_info.port_id. Should it be equal to representor ID? Or different and provided in the info structure?