How to use rte_flow to distribute ARP packets between the Rx queues of 82599ES NIC
Pavel Vazharov
freakpv at gmail.com
Thu Sep 30 14:27:56 CEST 2021
Hi there,
The DPDK setup for our application includes two 82599ES 10-Gigabit cards
setup in bonding mode BONDING_MODE_8023AD.
I'm trying to setup rte_flows logic which distributes the IPv4 and ARP
packets between the Rx queues based on their destination.
I'm able to setup the flows for the IPv4 packets using
RTE_FLOW_ITEM_TYPE_IPV4 and RTE_FLOW_ACTION_TYPE_QUEUE. The
rte_flow_validate result is 0 and the rte_flow_create returns non null
pointer.
However, when I try to do the same for the ARP packets using the following
actions
const rte_flow_action_queue queue = {.index = rx_q};
const rte_flow_action action[] = {
{
.type = RTE_FLOW_ACTION_TYPE_QUEUE,
.conf = &queue,
},
{
.type = RTE_FLOW_ACTION_TYPE_END,
.conf = nullptr,
},
};
I get an error from rte_flow_validate. The error code is EINVAL. The error
message is "Not supported action." and the rte_flow_error.cause pointer
points to the first element of my action array above. Just for the test I
tried to change the action to RTE_FLOW_ACTION_TYPE_DROP and setting the
conf to NULL but I got exactly the same error. The error is returned for
rx_q = 0 and the bond port has been setup with 8 Rx and 8 Tx queues.
Am I doing something wrong or the device doesn't support rte_flow actions
for ARP packets?
Thanks,
Pavel.
More information about the users
mailing list