Is there any way to use multiple RX queues in RTE_FLOW_ACTION_TYPE_QUEUE DPDK Flow director?
uint16_t queue_indices[] = {10, 11, 12, 13, 14, 15};
struct rte_flow_action_queue queue = {.index = queue_indices};
struct rte_flow_action action2[]={
[0]={.type = RTE_FLOW_ACTION_TYPE_QUEUE,.conf = &queue,},
[1]={.type = RTE_FLOW_ACTION_TYPE_END}
};
If not, please suggest a way to direct packets that matches a particular pattern to multiple RX queues without the use of RSS.
user26407852 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
From the OP it might follow that the desired behaviour is to duplicate/replay a matching packet and send each of the duplicates to a separate queue. If that’s indeed the case, something like this would do:
struct rte_flow_action_queue q10 = { .index = 10 };
struct rte_flow_action_queue q11 = { .index = 11 };
/* ... */
struct rte_flow_action actions[] = {
{ .type = RTE_FLOW_ACTION_TYPE_QUEUE, .conf = &q10 },
{ .type = RTE_FLOW_ACTION_TYPE_QUEUE, .conf = &q11 },
/* ... */
{ .type = RTE_FLOW_ACTION_TYPE_END }
};
That said, not all NIC vendors support packet replay on vNIC level. The OP does not indicate which NIC they use (vendor ID, device ID) and does not mention DPDK version. With these two bits of information added to the OP, it should be possible to clarify whether the feature in question is supported or not.
1
If the task is to distribute matching packets evenly across the given subset of Rx queues, then the feature the OP is looking for is the one called round robin distribution. Sadly, it does not appear to be supported on generic flow API level. Hence no working HW-based approach for now.
This topic has come to light a couple of times already (in this email thread, for instance). The answer is the same: no support for that. Perhaps it pays for the OP to subscribe to the users list and start yet another email thread in it with the feature request. Maybe some other vendors support this in the HW and can agree to implement generic flow API logic for that, too.