What’s the FW version are you using?

If you are using OFED driver, it is suggested that you try the OFED >=5.8 with the FW inside.

 

BR. Bing

 

From: Junghan Yoon <cerotyki@gmail.com>
Sent: Friday, June 9, 2023 9:50 PM
To: Bing Zhao <bingz@nvidia.com>; users@dpdk.org
Subject: RE: RE: About rte_flow asynchronous API

 

External email: Use caution opening links or attachments

 

Thank you Zhao.

 

I tried it, but now mlx5 driver returned error.

mlx5_net: [mlx5dr_action_create_generic]: Cannot create HWS action since HWS is not supported

It is what I saw in my original code before trying on testpmd.

It seems to be an issue from connectX-6 configuration.

 

Is there anyone ever tried to use asynchronous API with connectX-6?

Setting dv_flow_en=2 and dv_esw_en=1 seems not enough.

I explored the mlx5 code, and found that rte_flow_configure() queries HCA capability by mlx5dr_cmd_query_caps().

In my case, rte_flow_configure() returned error since caps->wqe_based_update is set by 0.

 

Is there anyone know how to set this value to non-zero?

I already wrote the same question on nvidia forum.

 

Sincerely,

Junghan Yoon

 

보낸 사람: Bing Zhao
보낸 날짜: 2023 6 9일 금요일 오후 10:00
받는 사람: users@dpdk.org; cerotyki@gmail.com
제목: RE: About rte_flow asynchronous API

 

Hi Junghan,

 

In testpmd, you can easily do it by:

 

port stop all

# or port stop 0

 

flow configure 0 ……

# if there are other port(s)

# flow configure Y ……

 

 

port start all

# or port start 0

 

With the source code implementation, you can configure it before starting a device.

 

BR. Bing

 

 

From: Junghan Yoon <cerotyki@gmail.com>
Sent: Friday, June 9, 2023 10:57:13 AM
To: users@dpdk.org <users@dpdk.org>
Subject: About rte_flow asynchronous API

 

Hi.

Im trying to use testpmd to test rte_flow with asynchronous API in DPDK 22.11.

 

I turned on dv_esw_en=1 by echoing switchdev to /sys/class/net/., and set dv_flow_en to 2 to use connectX-6 HWS (hardware steering).

sudo build/app/dpdk-testpmd -a 0000:8a:00.0,dv_flow_en=2 -a 0000:8a:00.1,dv_flow_en=2 -- -i --rxq=1 --txq=1

 

In the prompt, I typed below

flow configure 0 queues_number 1 queues_size 10 counters_number 0 aging_counters_number 0 meters_number 0 flags 0

 

but it said Device with port_id=0 already started..

 

I know rte_flow_configure() call should be in the middle of rte_eth_dev_configure() and rte_eth_dev_start().

So, I run testpmd by below to postpone device start,

sudo build/app/dpdk-testpmd -a 0000:8a:00.0,dv_flow_en=2 -a 0000:8a:00.1,dv_flow_en=2 -- -i --rxq=1 --txq=1 --disable-device-start

 

However, now not only rte_eth_dev_start() but also rte_eth_dev_configure() does not start, so it said Device with port_id=0 is not configured..

 

How can I run rte_flow_configure() between rte_eth_dev_configure() and rte_eth_dev_start() in testpmd?

Is there any parameter to postpone only rte_eth_dev_start()?

 

Sincerely,

Junghan Yoon.