SF (Scalable Function) support for rte_flow offloading

Hi community,

As in the official document [1] states, SFs support E-Switch representation offload like existing PF and VF representors. However, a simple rte_flow rule cannot be installed in a working SF setup (with Mellanox ConnectX-6 Dx). The installed the flow rule is simple:

flow create 1 ingress transfer pattern eth / end actions port_id id 0 / end

In this flow rule, port 1 is the representor of a PF and port 0 is the representor of a created SF. The following error was returned:

port_flow_complain(): Caught PMD error type 15 (action configuration): cause: 0x7ffc5abd74a8, failed to obtain E-Switch port id for port: Invalid argument

testpmd app is started with the EAL parameters -a 0000:3b:00.0 -a auxiliary:mlx5_core.sf.21.

So, it would be appreciated if someone could give a hint on the following questions

  1. to which extend, offloading is supported with SF?
  2. if offloading is well supported as for VF, what could be the reason such error is returned.

Thanks in advance.

[1] https://docs.nvidia.com/doca/archive/doca-v1.1/pdf/scalable-functions.pdf

To use SF, you’d better use DPU and DOCA SDK’s DPDK.

Hi XiaoFeng,

Thanks a lot for your quick reply, and suggestion. Currently, I am trying to figure out the possibilities to perform offloading on ports of SFs. The steps indicated in [1] are carried out on the hardware ConnectX-6 Dx, and a customised DPDK application without offloading is able to process traffic from/to SFs. It failed when offloading is enabled/used.

Are you suggesting that offloading on SFs created on ConnectX-6 Dx is not sufficient, but Bluefield cards and customised DPDK can make it work? Thanks in advance.

[1] GitHub - Mellanox/scalablefunctions: All about Scalable functions