Message ID | 1614868228-13685-1-git-send-email-xuemingl@nvidia.com (mailing list archive) |
---|---|
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 04F1AA0561; Thu, 4 Mar 2021 15:30:52 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 74C5D40684; Thu, 4 Mar 2021 15:30:52 +0100 (CET) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by mails.dpdk.org (Postfix) with ESMTP id 280CF40147 for <dev@dpdk.org>; Thu, 4 Mar 2021 15:30:51 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from xuemingl@nvidia.com) with SMTP; 4 Mar 2021 16:30:47 +0200 Received: from nvidia.com (pegasus05.mtr.labs.mlnx [10.210.16.100]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 124EUkoO027668; Thu, 4 Mar 2021 16:30:47 +0200 From: Xueming Li <xuemingl@nvidia.com> To: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Cc: dev@dpdk.org, Viacheslav Ovsiienko <viacheslavo@nvidia.com>, xuemingl@nvidia.com, Asaf Penso <asafp@nvidia.com> Date: Thu, 4 Mar 2021 14:30:16 +0000 Message-Id: <1614868228-13685-1-git-send-email-xuemingl@nvidia.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1608303356-13089-2-git-send-email-xuemingl@nvidia.com> References: <1608303356-13089-2-git-send-email-xuemingl@nvidia.com> Subject: [dpdk-dev] [PATCH v8 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 <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Series |
ethdev: support SubFunction representor
|
|
Message
Xueming Li
March 4, 2021, 2:30 p.m. UTC
SubFunction [1] is a portion of the PCI device, a SF netdev has its own dedicated queues(txq, rxq). A SF netdev supports E-Switch representation offload similar to existing PF and VF representors. A SF shares PCI level resources with other SFs and/or with its parent PCI function. From SmartNIC perspective, when PCI device is shared for multi-host, representors for host controller and host PF is required. This patch set introduces new representor types in addtion to existing VF representor. Syntax: [[c#]pf#]vf#: VF port representor/s from controller/pf [[c#]pf#]sf#: SF port representor/s from controller/pf #: VF representor - for backwards compatibility "#" is number instance, list or range, valid examples: 1, [1,3,5], [0-3], [0,2-4,6] For backward compatibility, this patch also introduces new netdev capability to indicate the capability of supportting SF representor. Version history: RFC: initial version [2] V2: - separate patch for represnetor infrastructure, controller, pf and sf. - replace representor ID macro with functions: rte_eth_representor_id_encode() rte_eth_representor_id_parse() - new patch to allow devargs with same PCI BDF but different representors. - other minor code updates according to comments, thanks Andrew! - update document V3: - improve probing of allowed devargs with same name. - parse single word of kvargs as key. - update kvargs test cases. V4: - split first representor refactor patch into 1: add representor type 2: refector representor list parsing - push the patch supporting multi-devargs for same device. V5: - add comments for parsing functions - update switch_representation.rst - Thanks Ajit V6: - split representor types into different patches, move to rte_ethdev.h - improvements of rte_eth_devargs_process_list() according to Andrew's suggestion - fixed PF probe failure for Intel i40e - replace ethdev SF capability with rte_eth_representor_info_get() - add new ethdev ops api to get representor info from PMD - replace representor ID encode/decode with conversion from representor info - change ethdev representor iterator to use new ID encoding V7: - error on duplicated representor argument: DBDF,representor=a,representor=b - fix pf representor type parsing - other small fixes suggested by Andrew. V8: - remove the "ignore" hint from pmd representor info - changed representor_id type in representor info to u32 - rename rte_eth_representor_id_convert() to ..._get() - other small fixes suggested by Andrew [1] SubFunction in kernel: https://lore.kernel.org/netdev/20201112192424.2742-1-parav@nvidia.com/ [2] RFC: http://patchwork.dpdk.org/project/dpdk/list/?series=14376 [3] V2: http://patchwork.dpdk.org/project/dpdk/list/?series=14559 [4] V3: 1 http://patchwork.dpdk.org/patch/86460/ 2 http://patchwork.dpdk.org/patch/86461/ 3 http://patchwork.dpdk.org/patch/86462/ 4 http://patchwork.dpdk.org/patch/86463/ 5 http://patchwork.dpdk.org/patch/86464/ 6 http://patchwork.dpdk.org/patch/86465/ 7 http://patchwork.dpdk.org/patch/86467/ 8 http://patchwork.dpdk.org/patch/86466/ 9 http://patchwork.dpdk.org/patch/86468/ [5] V4: http://patchwork.dpdk.org/project/dpdk/list/?series=14809 [6] V5: http://patchwork.dpdk.org/project/dpdk/list/?series=14834 [7] V6: http://patchwork.dpdk.org/project/dpdk/list/?series=15258 [8] v7: http://patchwork.dpdk.org/project/dpdk/list/?series=15441 Xueming Li (9): ethdev: introduce representor type ethdev: support representor port list ethdev: support new VF representor syntax ethdev: support sub function representor ethdev: support PF index in representor ethdev: support multi-host in representor ethdev: new API to get representor info ethdev: representor iterator compare complete info kvargs: update parser to support lists app/test/test_kvargs.c | 46 ++++- config/rte_config.h | 1 + doc/guides/prog_guide/poll_mode_drv.rst | 18 +- .../prog_guide/switch_representation.rst | 35 ++-- drivers/net/bnxt/bnxt_ethdev.c | 7 + drivers/net/enic/enic_ethdev.c | 6 + drivers/net/i40e/i40e_ethdev.c | 7 + drivers/net/ixgbe/ixgbe_ethdev.c | 7 + drivers/net/mlx5/linux/mlx5_os.c | 11 ++ lib/librte_ethdev/ethdev_driver.h | 50 +++++- lib/librte_ethdev/ethdev_private.c | 169 ++++++++++++------ lib/librte_ethdev/ethdev_private.h | 3 - lib/librte_ethdev/rte_class_eth.c | 40 +++-- lib/librte_ethdev/rte_ethdev.c | 113 +++++++++++- lib/librte_ethdev/rte_ethdev.h | 61 +++++++ lib/librte_ethdev/version.map | 4 + lib/librte_kvargs/rte_kvargs.c | 101 ++++++++--- 17 files changed, 554 insertions(+), 125 deletions(-)
Comments
On 3/4/2021 2:30 PM, Xueming Li wrote: > SubFunction [1] is a portion of the PCI device, a SF netdev has its own > dedicated queues(txq, rxq). A SF netdev supports E-Switch representation > offload similar to existing PF and VF representors. A SF shares PCI > level resources with other SFs and/or with its parent PCI function. > > From SmartNIC perspective, when PCI device is shared for multi-host, > representors for host controller and host PF is required. > > This patch set introduces new representor types in addtion to existing > VF representor. Syntax: > > [[c#]pf#]vf#: VF port representor/s from controller/pf > [[c#]pf#]sf#: SF port representor/s from controller/pf > #: VF representor - for backwards compatibility > > "#" is number instance, list or range, valid examples: > 1, [1,3,5], [0-3], [0,2-4,6] > > For backward compatibility, this patch also introduces new netdev > capability to indicate the capability of supportting SF representor. > > Version history: > RFC: > initial version [2] > V2: > - separate patch for represnetor infrastructure, controller, pf and > sf. > - replace representor ID macro with functions: > rte_eth_representor_id_encode() > rte_eth_representor_id_parse() > - new patch to allow devargs with same PCI BDF but different > representors. > - other minor code updates according to comments, thanks Andrew! > - update document > V3: > - improve probing of allowed devargs with same name. > - parse single word of kvargs as key. > - update kvargs test cases. > V4: > - split first representor refactor patch into > 1: add representor type > 2: refector representor list parsing > - push the patch supporting multi-devargs for same device. > V5: > - add comments for parsing functions > - update switch_representation.rst - Thanks Ajit > V6: > - split representor types into different patches, move to > rte_ethdev.h > - improvements of rte_eth_devargs_process_list() according to > Andrew's suggestion > - fixed PF probe failure for Intel i40e > - replace ethdev SF capability with rte_eth_representor_info_get() > - add new ethdev ops api to get representor info from PMD > - replace representor ID encode/decode with conversion from > representor info > - change ethdev representor iterator to use new ID encoding > V7: > - error on duplicated representor argument: > DBDF,representor=a,representor=b > - fix pf representor type parsing > - other small fixes suggested by Andrew. > V8: > - remove the "ignore" hint from pmd representor info > - changed representor_id type in representor info to u32 > - rename rte_eth_representor_id_convert() to ..._get() > - other small fixes suggested by Andrew > > > > [1] SubFunction in kernel: > https://lore.kernel.org/netdev/20201112192424.2742-1-parav@nvidia.com/ > > [2] RFC: > http://patchwork.dpdk.org/project/dpdk/list/?series=14376 > > [3] V2: > http://patchwork.dpdk.org/project/dpdk/list/?series=14559 > > [4] V3: > 1 http://patchwork.dpdk.org/patch/86460/ > 2 http://patchwork.dpdk.org/patch/86461/ > 3 http://patchwork.dpdk.org/patch/86462/ > 4 http://patchwork.dpdk.org/patch/86463/ > 5 http://patchwork.dpdk.org/patch/86464/ > 6 http://patchwork.dpdk.org/patch/86465/ > 7 http://patchwork.dpdk.org/patch/86467/ > 8 http://patchwork.dpdk.org/patch/86466/ > 9 http://patchwork.dpdk.org/patch/86468/ > > [5] V4: > http://patchwork.dpdk.org/project/dpdk/list/?series=14809 > > [6] V5: > http://patchwork.dpdk.org/project/dpdk/list/?series=14834 > > [7] V6: > http://patchwork.dpdk.org/project/dpdk/list/?series=15258 > > [8] v7: > http://patchwork.dpdk.org/project/dpdk/list/?series=15441 > > Xueming Li (9): > ethdev: introduce representor type > ethdev: support representor port list > ethdev: support new VF representor syntax > ethdev: support sub function representor > ethdev: support PF index in representor > ethdev: support multi-host in representor > ethdev: new API to get representor info > ethdev: representor iterator compare complete info > kvargs: update parser to support lists > > app/test/test_kvargs.c | 46 ++++- > config/rte_config.h | 1 + > doc/guides/prog_guide/poll_mode_drv.rst | 18 +- > .../prog_guide/switch_representation.rst | 35 ++-- > drivers/net/bnxt/bnxt_ethdev.c | 7 + > drivers/net/enic/enic_ethdev.c | 6 + > drivers/net/i40e/i40e_ethdev.c | 7 + > drivers/net/ixgbe/ixgbe_ethdev.c | 7 + > drivers/net/mlx5/linux/mlx5_os.c | 11 ++ > lib/librte_ethdev/ethdev_driver.h | 50 +++++- > lib/librte_ethdev/ethdev_private.c | 169 ++++++++++++------ > lib/librte_ethdev/ethdev_private.h | 3 - > lib/librte_ethdev/rte_class_eth.c | 40 +++-- > lib/librte_ethdev/rte_ethdev.c | 113 +++++++++++- > lib/librte_ethdev/rte_ethdev.h | 61 +++++++ > lib/librte_ethdev/version.map | 4 + > lib/librte_kvargs/rte_kvargs.c | 101 ++++++++--- > 17 files changed, 554 insertions(+), 125 deletions(-) > Btw, can you also update the release notes for the feature, if there will be more versions it is OK to hold the update to prevent the release notes rebases on each version, but please include it as the patchset matures.
>-----Original Message----- >From: Ferruh Yigit <ferruh.yigit@intel.com> >Sent: Tuesday, March 9, 2021 12:44 AM >To: Xueming(Steven) Li <xuemingl@nvidia.com>; Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> >Cc: dev@dpdk.org; Slava Ovsiienko <viacheslavo@nvidia.com>; Asaf Penso <asafp@nvidia.com> >Subject: Re: [dpdk-dev] [PATCH v8 0/9] ethdev: support SubFunction representor > >On 3/4/2021 2:30 PM, Xueming Li wrote: >> SubFunction [1] is a portion of the PCI device, a SF netdev has its >> own dedicated queues(txq, rxq). A SF netdev supports E-Switch >> representation offload similar to existing PF and VF representors. A >> SF shares PCI level resources with other SFs and/or with its parent PCI function. >> >> From SmartNIC perspective, when PCI device is shared for multi-host, >> representors for host controller and host PF is required. >> >> This patch set introduces new representor types in addtion to existing >> VF representor. Syntax: >> >> [[c#]pf#]vf#: VF port representor/s from controller/pf >> [[c#]pf#]sf#: SF port representor/s from controller/pf >> #: VF representor - for backwards compatibility >> >> "#" is number instance, list or range, valid examples: >> 1, [1,3,5], [0-3], [0,2-4,6] >> >> For backward compatibility, this patch also introduces new netdev >> capability to indicate the capability of supportting SF representor. >> >> Version history: >> RFC: >> initial version [2] >> V2: >> - separate patch for represnetor infrastructure, controller, pf and >> sf. >> - replace representor ID macro with functions: >> rte_eth_representor_id_encode() >> rte_eth_representor_id_parse() >> - new patch to allow devargs with same PCI BDF but different >> representors. >> - other minor code updates according to comments, thanks Andrew! >> - update document >> V3: >> - improve probing of allowed devargs with same name. >> - parse single word of kvargs as key. >> - update kvargs test cases. >> V4: >> - split first representor refactor patch into >> 1: add representor type >> 2: refector representor list parsing >> - push the patch supporting multi-devargs for same device. >> V5: >> - add comments for parsing functions >> - update switch_representation.rst - Thanks Ajit >> V6: >> - split representor types into different patches, move to >> rte_ethdev.h >> - improvements of rte_eth_devargs_process_list() according to >> Andrew's suggestion >> - fixed PF probe failure for Intel i40e >> - replace ethdev SF capability with rte_eth_representor_info_get() >> - add new ethdev ops api to get representor info from PMD >> - replace representor ID encode/decode with conversion from >> representor info >> - change ethdev representor iterator to use new ID encoding >> V7: >> - error on duplicated representor argument: >> DBDF,representor=a,representor=b >> - fix pf representor type parsing >> - other small fixes suggested by Andrew. >> V8: >> - remove the "ignore" hint from pmd representor info >> - changed representor_id type in representor info to u32 >> - rename rte_eth_representor_id_convert() to ..._get() >> - other small fixes suggested by Andrew >> >> >> >> [1] SubFunction in kernel: >> https://lore.kernel.org/netdev/20201112192424.2742-1-parav@nvidia.com/ >> >> [2] RFC: >> http://patchwork.dpdk.org/project/dpdk/list/?series=14376 >> >> [3] V2: >> http://patchwork.dpdk.org/project/dpdk/list/?series=14559 >> >> [4] V3: >> 1 http://patchwork.dpdk.org/patch/86460/ >> 2 http://patchwork.dpdk.org/patch/86461/ >> 3 http://patchwork.dpdk.org/patch/86462/ >> 4 http://patchwork.dpdk.org/patch/86463/ >> 5 http://patchwork.dpdk.org/patch/86464/ >> 6 http://patchwork.dpdk.org/patch/86465/ >> 7 http://patchwork.dpdk.org/patch/86467/ >> 8 http://patchwork.dpdk.org/patch/86466/ >> 9 http://patchwork.dpdk.org/patch/86468/ >> >> [5] V4: >> http://patchwork.dpdk.org/project/dpdk/list/?series=14809 >> >> [6] V5: >> http://patchwork.dpdk.org/project/dpdk/list/?series=14834 >> >> [7] V6: >> http://patchwork.dpdk.org/project/dpdk/list/?series=15258 >> >> [8] v7: >> http://patchwork.dpdk.org/project/dpdk/list/?series=15441 >> >> Xueming Li (9): >> ethdev: introduce representor type >> ethdev: support representor port list >> ethdev: support new VF representor syntax >> ethdev: support sub function representor >> ethdev: support PF index in representor >> ethdev: support multi-host in representor >> ethdev: new API to get representor info >> ethdev: representor iterator compare complete info >> kvargs: update parser to support lists >> >> app/test/test_kvargs.c | 46 ++++- >> config/rte_config.h | 1 + >> doc/guides/prog_guide/poll_mode_drv.rst | 18 +- >> .../prog_guide/switch_representation.rst | 35 ++-- >> drivers/net/bnxt/bnxt_ethdev.c | 7 + >> drivers/net/enic/enic_ethdev.c | 6 + >> drivers/net/i40e/i40e_ethdev.c | 7 + >> drivers/net/ixgbe/ixgbe_ethdev.c | 7 + >> drivers/net/mlx5/linux/mlx5_os.c | 11 ++ >> lib/librte_ethdev/ethdev_driver.h | 50 +++++- >> lib/librte_ethdev/ethdev_private.c | 169 ++++++++++++------ >> lib/librte_ethdev/ethdev_private.h | 3 - >> lib/librte_ethdev/rte_class_eth.c | 40 +++-- >> lib/librte_ethdev/rte_ethdev.c | 113 +++++++++++- >> lib/librte_ethdev/rte_ethdev.h | 61 +++++++ >> lib/librte_ethdev/version.map | 4 + >> lib/librte_kvargs/rte_kvargs.c | 101 ++++++++--- >> 17 files changed, 554 insertions(+), 125 deletions(-) >> > >Btw, can you also update the release notes for the feature, if there will be more versions it is OK to hold the update to prevent the >release notes rebases on each version, but please include it as the patchset matures. Got it, thanks!