[dpdk-dev] [PATCH v8 0/9] ethdev: support SubFunction representor
Xueming Li
xuemingl at nvidia.com
Thu Mar 4 15:30:16 CET 2021
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(-)
--
2.25.1
More information about the dev
mailing list