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