mbox series

[v9,00/10] ethdev: support SubFunction representor

Message ID 1615468416-10115-1-git-send-email-xuemingl@nvidia.com (mailing list archive)
Headers
Series ethdev: support SubFunction representor |

Message

Xueming Li March 11, 2021, 1:13 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
 V9:
	- more document for PMD to implement representor_info_get
	  callback
	- updated ice and txgbe to adapt new representor type
	- updated 21.05 release notes
	- other small fixes suggested by Ferruh and Andrew, thanks.


Xueming Li (10):
  ethdev: introduce representor type
  ethdev: refactor representor port list parsing
  ethdev: support new VF representor syntax
  ethdev: support sub function representor
  kvargs: update parser to support multiple lists
  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
  doc/release: add representor enhancements

 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 ++--
 doc/guides/rel_notes/release_21_05.rst        |  18 ++
 drivers/net/bnxt/bnxt_ethdev.c                |   7 +
 drivers/net/enic/enic_ethdev.c                |   6 +
 drivers/net/i40e/i40e_ethdev.c                |   7 +
 drivers/net/ice/ice_dcf_ethdev.c              |   2 +
 drivers/net/ixgbe/ixgbe_ethdev.c              |   7 +
 drivers/net/mlx5/linux/mlx5_os.c              |  11 ++
 drivers/net/txgbe/txgbe_ethdev.c              |   2 +
 lib/librte_ethdev/ethdev_driver.h             |  70 +++++++-
 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                | 118 +++++++++++-
 lib/librte_ethdev/rte_ethdev.h                |  64 +++++++
 lib/librte_ethdev/version.map                 |   4 +
 lib/librte_kvargs/rte_kvargs.c                | 101 ++++++++---
 20 files changed, 604 insertions(+), 125 deletions(-)
  

Comments

Ferruh Yigit March 16, 2021, 7:18 p.m. UTC | #1
On 3/11/2021 1:13 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
>   V9:
> 	- more document for PMD to implement representor_info_get
> 	  callback
> 	- updated ice and txgbe to adapt new representor type
> 	- updated 21.05 release notes
> 	- other small fixes suggested by Ferruh and Andrew, thanks.
> 
> 
> Xueming Li (10):
>    ethdev: introduce representor type
>    ethdev: refactor representor port list parsing
>    ethdev: support new VF representor syntax
>    ethdev: support sub function representor
>    kvargs: update parser to support multiple lists
>    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
>    doc/release: add representor enhancements
> 

Series applied to dpdk-next-net/main, thanks.
  
Xueming Li March 17, 2021, 9 a.m. UTC | #2
>-----Original Message-----
>From: Ferruh Yigit <ferruh.yigit@intel.com>
>Sent: Wednesday, March 17, 2021 3:19 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: [PATCH v9 00/10] ethdev: support SubFunction representor
>
>On 3/11/2021 1:13 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
>>   V9:
>> 	- more document for PMD to implement representor_info_get
>> 	  callback
>> 	- updated ice and txgbe to adapt new representor type
>> 	- updated 21.05 release notes
>> 	- other small fixes suggested by Ferruh and Andrew, thanks.
>>
>>
>> Xueming Li (10):
>>    ethdev: introduce representor type
>>    ethdev: refactor representor port list parsing
>>    ethdev: support new VF representor syntax
>>    ethdev: support sub function representor
>>    kvargs: update parser to support multiple lists
>>    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
>>    doc/release: add representor enhancements
>>
>
>Series applied to dpdk-next-net/main, thanks.

Thanks!