[dpdk-users] DPDK 20.11 - i40e 2 tuple RSS configuration

Zhang, AlvinX alvinx.zhang at intel.com
Fri May 28 05:36:58 CEST 2021


Hi Beilei,

We will try it ASAP.

BRs,
Alvin Zhang

From: Xing, Beilei <beilei.xing at intel.com>
Sent: Friday, May 28, 2021 9:24 AM
To: Vishal Mohan <vishal.mohan at tatacommunications.com>; users at dpdk.org; Zhang, AlvinX <alvinx.zhang at intel.com>
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

+ Alvin.

Could you please help on it? Thanks.

BR,
Beilei

From: Vishal Mohan <vishal.mohan at tatacommunications.com<mailto:vishal.mohan at tatacommunications.com>>
Sent: Thursday, May 27, 2021 5:45 PM
To: Xing, Beilei <beilei.xing at intel.com<mailto:beilei.xing at intel.com>>; users at dpdk.org<mailto:users at dpdk.org>
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

Hi Beilei,

Thanks for the pointer. By using l3-src-only, I was able to run testpmd on 1 tuple mode. But no success when configured manually. Please find the snippet below of my rte_eth_conf and flow conf for your kind perusal:

static struct rte_eth_conf port_conf_default = {
        .rxmode = {
                .mq_mode = ETH_MQ_RX_RSS,
        },
        .rx_adv_conf = {
                .rss_conf = {
                        .rss_key = NULL,
                        .rss_key_len = 40,
                        .rss_hf = ETH_RSS_NONFRAG_IPV4_UDP,
                },
        }
};

struct rte_flow_item pattern[] = {
        [0] = {
                .type = RTE_FLOW_ITEM_TYPE_ETH,
        },
        [1] = {
                .type = RTE_FLOW_ITEM_TYPE_IPV4,
        },
        [2] = {
                .type = RTE_FLOW_ITEM_TYPE_UDP,
        },
[3] = {
                .type = RTE_FLOW_ITEM_TYPE_END,
        }
};

struct rte_flow_action_rss action_rss = {
        .types = ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY,
        .queue_num = 10,
        .queue = queue_ids,
};

struct rte_flow_action action[] = {

        [0] = {
                .type = RTE_FLOW_ACTION_TYPE_RSS,
                .conf = &action_rss
        },

        [1] = {
                .type = RTE_FLOW_ACTION_TYPE_END,
        }
};

struct rte_flow_attr attr = {
        .egress = 0,
        .ingress = 1
};

struct rte_flow_error err;

retval = rte_flow_validate(portid, &attr,
                        pattern, action, &err);
printf("retval %d %d\n",retval,-ENOTSUP);

if(!retval){
        struct rte_flow *flow = rte_flow_create(portid, &attr, pattern, action, &err);
}

The above given flow validates and adds successfully but no effect on RSS hashing. Also I did not set .spec and .mask for patterns assuming ETH_RSS_L3_SRC_ONLY will take care of the fields looked into.
Can you please point out if im missing anything here ?

Thanks & Regards,
Vishal Mohan

-----Original Message-----
From: Xing, Beilei <beilei.xing at intel.com<mailto:beilei.xing at intel.com>>
Sent: 27 May 2021 01:42 PM
To: Vishal Mohan <vishal.mohan at tatacommunications.com<mailto:vishal.mohan at tatacommunications.com>>; users at dpdk.org<mailto:users at dpdk.org>
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

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.

Hi,

I remember there's no legacy API rte_eth_dev_filter_ctrl()  supported in 20.11.
Please refer to RSS Flow part in i40e.rst:

Enable hash and set input set for ipv4-tcp.
    testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end \
      actions rss types ipv4-tcp l3-src-only end queues end / end

BR,
Beilei

> -----Original Message-----
> From: users <mailto:users-bounces at dpdk.org> On Behalf Of Vishal Mohan
> Sent: Thursday, May 27, 2021 3:40 PM
> To: mailto:users at dpdk.org
> Subject: [dpdk-users] DPDK 20.11 - i40e 2 tuple RSS configuration
>
> I'm trying to implement RSS with 2 tuple (src ip, dst ip) hashing with
> X710 - quad port in DPDK 20.11 with no success. I was able to
> implement the same in DPDK 17.11 with a combination of RSS flags
> given below and
> rte_eth_dev_filter_ctrl():
>
> .rss_hf = (ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_OTHER |
> ETH_RSS_FRAG_IPV4 | ETH_RSS_NONFRAG_IPV4_UDP |
> ETH_RSS_NONFRAG_IPV4_TCP)
>
> and selecting input fields as dst and src ip for every rss_hf flag
> using rte_eth_dev_filter_ctrl().
>
> In DPDK 20.11, I believe there is no explicit usage of using
> rte_eth_dev_filter_ctrl() instead we can configure the hashing with
> the generic rte_flow api. I did configure a flow validate and create
> the same, but the hashing is not working as expected. Without flags
> ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_NONFRAG_IPV4_TCP no hashing takes
> place and with those flags included in .rss_hf, 5 tuple hashing takes
> place.
>
> When using rte_flow api, any flags given in rte_flow_action_rss.types
> has no effect on the final RSS hash result. Also the RSS hashing in
> the given testpmd isn't working when it is configured in "ip" (2 tuple) mode.
>
> Any inputs for configuring RSS hashing for 2 tuple is much appreciated.
>
>
> Thanks & Regards,
>  Vishal Mohan



More information about the users mailing list