ConnectX-6 E-switch control API

Hi.

I’m trying to use the E-switch for traffic steering.
I used rte_flow() in DPDK with dv_flow_en = 1 option, but it seems to be an indirect way to control e-switch.
Is there any way to control e-switch APIs?

For example, I want to steer some incoming packets to outside without DMA.
I know hairpin can achieve this, but it seems not on e-switch level.
(Table 40.3 Minimal SW/HW versions for rte_flow offloads in https://doc.dpdk.org/guides/nics/mlx5.html#mlx5-offloads-support shows that the hairpin is available in NIC level, but not in e-switch level.)

Also, I think using hairpin is too heavy for simple packet switching.

Is there any other method than hairpin for L2 packet switching?

Thank you.

Not 100% sure your requirement.

But e-switch offload rule can easy use by rte_flow,

struct rte_flow *
rte_flow_create(uint16_t port_id,
const struct rte_flow_attr *attr,
const struct rte_flow_item pattern,
const struct rte_flow_action *actions,
struct rte_flow_error *error);

https://doc.dpdk.org/guides/prog_guide/rte_flow.html#creation

Action: PORT_REPRESENTOR

https://doc.dpdk.org/guides/prog_guide/rte_flow.html#action-port-representor

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.