[v4,4/9] ethdev: support sub function representor
Checks
Commit Message
SubFunction is a portion of the PCI device, created on demand, a SF
netdev has its own dedicated queues(txq, rxq). A SF netdev supports
eswitch representation offload similar to existing PF and VF
representors.
To support SF representor, this patch introduces new devargs syntax,
examples:
representor=sf0 - single SubFunction representor
representor=sf[1,3,5] - single list
representor=sf[0-3], - single range
representor=sf[0,2-6,8,10-12] - list with singles and ranges
Signed-off-by: Xueming Li <xuemingl@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
doc/guides/prog_guide/poll_mode_drv.rst | 4 ++++
lib/librte_ethdev/ethdev_private.c | 11 +++++++++--
2 files changed, 13 insertions(+), 2 deletions(-)
@@ -378,6 +378,10 @@ parameters to those ports.
-a DBDF,representor=vf[0,4,6,9]
-a DBDF,representor=vf[0-31]
-a DBDF,representor=vf[0,2-4,7,9-11]
+ -a DBDF,representor=sf0
+ -a DBDF,representor=sf[1,3,5]
+ -a DBDF,representor=sf[0-1023]
+ -a DBDF,representor=sf[0,2-4,7,9-11]
Note: PMDs are not required to support the standard device arguments and users
should consult the relevant PMD documentation to see support devargs.
@@ -109,15 +109,22 @@ rte_eth_devargs_process_list(char *str, uint16_t *list, uint16_t *len_list,
* representor format:
* #: range or single number of VF representor - legacy
* vf#: VF port representor/s
+ * sf#: SF port representor/s
*/
int
rte_eth_devargs_parse_representor_ports(char *str, void *data)
{
struct rte_eth_devargs *eth_da = data;
- eth_da->type = RTE_ETH_REPRESENTOR_VF;
- if (str[0] == 'v' && str[1] == 'f')
+ if (str[0] == 'v' && str[1] == 'f') {
+ eth_da->type = RTE_ETH_REPRESENTOR_VF;
str += 2;
+ } else if (str[0] == 's' && str[1] == 'f') {
+ eth_da->type = RTE_ETH_REPRESENTOR_SF;
+ str += 2;
+ } else {
+ eth_da->type = RTE_ETH_REPRESENTOR_VF;
+ }
str = rte_eth_devargs_process_list(str, eth_da->representor_ports,
ð_da->nb_representor_ports, RTE_MAX_ETHPORTS);
if (str == NULL)