[dpdk-dev] [PATCH v2 0/9] support SubFunction representor
Xueming Li
xuemingl at nvidia.com
Wed Jan 6 17:17:26 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 eswitch 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 to support 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
[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
Xueming Li (9):
ethdev: refactor representor infrastructure
ethdev: support new VF representor syntax
ethdev: support sub function representor
ethdev: support PF index in representor
ethdev: support multi-host representor
devarg: change reprsentor ID to bitmap
ethdev: capability of new representor syntax
kvargs: update parser for new representor syntax
eal: allow PCI device with different representors
config/rte_config.h | 1 +
doc/guides/prog_guide/poll_mode_drv.rst | 8 +-
drivers/net/bnxt/bnxt_ethdev.c | 12 +++
drivers/net/bnxt/bnxt_reps.c | 3 +-
drivers/net/enic/enic_ethdev.c | 7 ++
drivers/net/enic/enic_vf_representor.c | 3 +-
drivers/net/i40e/i40e_ethdev.c | 8 ++
drivers/net/i40e/i40e_vf_representor.c | 3 +-
drivers/net/ixgbe/ixgbe_ethdev.c | 8 ++
drivers/net/ixgbe/ixgbe_vf_representor.c | 3 +-
drivers/net/mlx5/linux/mlx5_os.c | 15 ++-
lib/librte_eal/common/eal_common_bus.c | 25 +++++
lib/librte_ethdev/ethdev_private.c | 128 ++++++++++++++---------
lib/librte_ethdev/ethdev_private.h | 3 -
lib/librte_ethdev/rte_class_eth.c | 40 +++++--
lib/librte_ethdev/rte_ethdev.c | 31 +++++-
lib/librte_ethdev/rte_ethdev.h | 2 +
lib/librte_ethdev/rte_ethdev_driver.h | 64 ++++++++++++
lib/librte_ethdev/version.map | 2 +
lib/librte_kvargs/rte_kvargs.c | 83 ++++++++++-----
20 files changed, 348 insertions(+), 101 deletions(-)
--
2.25.1
More information about the dev
mailing list