From: "Lukáš Šišmiš" <sismis@cesnet.cz>
To: Sid ali cherrati <scherrati1@gmail.com>, users@dpdk.org
Subject: Re: RSS/Flow Rule Configuration Issue on Intel X710 (i40e Driver)
Date: Tue, 25 Mar 2025 20:17:06 +0700 [thread overview]
Message-ID: <d660aed5-96a5-4398-a051-69a107a20351@cesnet.cz> (raw)
In-Reply-To: <CALn3+CMzLvE8hF4T0vdrit9S-wqb2nnETMByPY7aZ=4dQrhMGw@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 3360 bytes --]
Hi SidAli,
if that is the only rule you are creating then I don't think it is
enough. Please have a look at this snippet I made few years back.
https://gist.github.com/lukashino/8fe387caabe2750d396bc97f2d66066a
There you first initialize the number of queues and then in the
follow-up rules the patterns you want to apply RSS to.
Cheers,
Lukas
On 3/25/25 17:42, Sid ali cherrati wrote:
> Dear DPDK Team,
>
> I hope this message finds you well. I am reaching out to seek your
> expertise regarding an issue I am encountering while configuring *DPDK
> flow rules with RSS* on an *Intel X710 NIC* (using the |i40e| driver).
> Despite multiple attempts, I have been unable to resolve the error and
> would greatly appreciate your guidance.
>
> *Objective* :
> Redirect UDP traffic (specific destination IP/port) to *multiple RX
> queues* using |rte_flow| with RSS.
>
> *Error : *
> Validation failed: RSS Queues not supported when pattern specified .
>
> *Hardware/Software*:
>
> *
>
> NIC: Intel X710
>
> * Driver: |i40e|
> *
>
> DPDK Version: 23.11
>
> *Code Snippet:*
> intflow_filtering(uint16_tport_id, uint32_tip_addr, uint16_tudp_port) {
> structrte_flow_errorerror;
> structrte_flow_attrattr={ .ingress=1, .priority=0};
> structrte_flow_itempattern[4];
> structrte_flow_actionaction[2];
> structrte_flow*flow;
> // Ethernet
> memset(pattern, 0, sizeof(pattern));
> pattern[0].type=RTE_FLOW_ITEM_TYPE_ETH;
> // IPv4
> structrte_flow_item_ipv4ipv4_spec={ .hdr.dst_addr=RTE_BE32(ip_addr) };
> structrte_flow_item_ipv4ipv4_mask={ .hdr.dst_addr=RTE_BE32(0xFFFFFFFF) };
> pattern[1].type=RTE_FLOW_ITEM_TYPE_IPV4;
> pattern[1].spec=&ipv4_spec;
> pattern[1].mask=&ipv4_mask;
> // UDP
> structrte_flow_item_udpudp_spec={ .hdr.dst_port=RTE_BE16(udp_port) };
> structrte_flow_item_udpudp_mask={ .hdr.dst_port=RTE_BE16(0xFFFF) };
> pattern[2].type=RTE_FLOW_ITEM_TYPE_UDP;
> pattern[2].spec=&udp_spec;
> pattern[2].mask=&udp_mask;
> pattern[3].type=RTE_FLOW_ITEM_TYPE_END;
> // action
> action[0].type=RTE_FLOW_ACTION_TYPE_RSS;
> // struct rte_flow_action_queue queue_action = { .index = RX_ID };
> // action[0].conf = &queue_action;
> // Configuration RSS
> uint16_tqueues[]={1, 2, 3};
> structrte_flow_action_rssrss_conf={
> .func=RTE_ETH_HASH_FUNCTION_DEFAULT,
> .types=
> RTE_ETH_RSS_IPV4|
> RTE_ETH_RSS_UDP,
> .key_len=0,
> .queue_num=3,
> .queue=queues,
> };
> action[0].type=RTE_FLOW_ACTION_TYPE_RSS;
> action[0].conf=&rss_conf;
> action[1].type=RTE_FLOW_ACTION_TYPE_END;
> if(rte_flow_validate(port_id, &attr, pattern, action, &error) !=0) {
> printf("Validation Failure: %s\n", error.message);
> return-1;
> }
> // Flow rule creation
> flow=rte_flow_create(port_id, &attr, pattern, action, &error);
> if(flow==NULL) {
> printf("Error creating flow rule : %s\n", error.message);
> return-1;
> }
> printf("Flow rule created for IP %u.%u.%u.%uand UDP port %u\n",
> (ip_addr>>24) &0xFF, (ip_addr>>16) &0xFF,
> (ip_addr>>8) &0xFF, ip_addr&0xFF, udp_port);
> return0;
> }
>
> I would be grateful for any insights, code examples, or documentation
> references to resolve this issue. Please let me know if additional
> details are required.
>
> Thank you in advance for your time and support.
>
> Best regards,
>
> SidAli
>
>
[-- Attachment #1.2: Type: text/html, Size: 35705 bytes --]
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5986 bytes --]
prev parent reply other threads:[~2025-03-25 13:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-25 10:42 Sid ali cherrati
2025-03-25 13:17 ` Lukáš Šišmiš [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d660aed5-96a5-4398-a051-69a107a20351@cesnet.cz \
--to=sismis@cesnet.cz \
--cc=scherrati1@gmail.com \
--cc=users@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).