Hi Stephen,
Thanks for your response.

As our application has limitations while using RSS, 
I would prefer a similar approach to RTE_ACTION_TYPE_QUEUE.

Since flow director supports only one RXQ index, I could not be able to achieve desired outcome.

Please suggest if any approach like RTE_ACTION_TYPE_QUEUE but not RSS could match my requirement.

Thanks,
Raghavan V



From: Stephen Hemminger <stephen@networkplumber.org>
Sent: Thursday, July 18, 2024 9:06:14 pm
To: Raghavan V <Raghavan.V2@tatacommunications.com>
Cc: dev@dpdk.org <dev@dpdk.org>; users@dpdk.org <users@dpdk.org>
Subject: Re: FDIR packet distribution with specific multiple RX queues.

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

On Thu, 18 Jul 2024 11:36:43 +0000
Raghavan V <Raghavan.V2@tatacommunications.com> wrote:

> Is there any way to distribute packets evenly (Like RSS) to specific multiple RX queues in RTE_FLOW_ACTION_TYPE_QUEUE DPDK Flow director?
>
> Desired action:
>
> uint16_t queue_indices[] = {10, 11, 12, 13, 14, 15};
> struct rte_flow_action_queue queue = {.index = queue_indices};
> struct rte_flow_action action[]={
>     [0]={.type = RTE_FLOW_ACTION_TYPE_QUEUE,.conf = &queue},
>     [1]={.type = RTE_FLOW_ACTION_TYPE_END}
> };

You want RTE_FLOW_ACTION_TYPE_RSS

uint16_t queue_indices[] = {10, 11, 12, 13, 14, 15};
struct rte_flow_action_rss rss = {
        .types =  RTE_ETH_RSS_UDP | RTE_ETH_RSS_TCP,
        .queue_num = RTE_DIM(queue_indicies),
        .queue = queue_indicies,
};

struct rte_flow_action action[]={
     [0]={.type = RTE_FLOW_ACTION_TYPE_RSS,.conf = &rss},
    [1]={.type = RTE_FLOW_ACTION_TYPE_END}
};

> Is this action limited to drivers specific?
Yes, drivers implement only what hardware can support.