Rx MQ distribute packets to Rx Queues
Lombardo, Ed
Ed.Lombardo at netscout.com
Tue Apr 7 23:11:58 CEST 2026
Hi,
I am using DPDK 24.11.4 and there are 4 Rx Queues per DPDK port.
My objective is to setup on each DPDK Rx port 4 queues and have the NIC distribute the incoming packets to the NIC Rx queues and save the RSS Hash to the mbuf for later processing. The NICs I am using are the Intel X710 (10G) and E810 (100G).
I have had no success in configuring packet distribution based upon IPv4 Source IP for odd ports and IPv4 Destination IP for even ports to up to 4 Rx Queues.
When I try RSS hash method, the validation check fails on both X710 and E810.
I use these in my setup function:
rss_conf.rss_hf = RTE_ETH_RSS_L3_SRC_ONLY (for odd DPDK ports.)
rss_conf.rss_hf = RTE_ETH_RSS_L3_DST_ONLY (for even DPDK ports)
X710:
(gdb) p /x rss_conf.rss_hf
$5 = 0x4000000000000000
(gdb) p /x dev_info.flow_type_rss_offloads
$6 = 0x7efc
E810:
(gdb) p /x rss_conf.rss_hf
$2 = 0x4000000000000000
(gdb) p /x dev_info.flow_type_rss_offloads
$1 = 0x7ffc
When I change the rss_hf
from:
rss_conf.rss_hf = RTE_ETH_RSS_L3_DST_ONLY;
to:
rss_conf.rss_hf = RTE_ETH_RSS_IPV4;
The validation check passes.
I checked the driver/net/ice/ice_ethdev.h and there is no support for RTE_ETH_RSS_L3_DST_ONLY.
#define ICE_RSS_OFFLOAD_ALL ( \
RTE_ETH_RSS_IPV4 | \
RTE_ETH_RSS_FRAG_IPV4 | \
RTE_ETH_RSS_NONFRAG_IPV4_TCP | \
RTE_ETH_RSS_NONFRAG_IPV4_UDP | \
RTE_ETH_RSS_NONFRAG_IPV4_SCTP | \
RTE_ETH_RSS_NONFRAG_IPV4_OTHER | \
RTE_ETH_RSS_IPV6 | \
RTE_ETH_RSS_FRAG_IPV6 | \
RTE_ETH_RSS_NONFRAG_IPV6_TCP | \
RTE_ETH_RSS_NONFRAG_IPV6_UDP | \
RTE_ETH_RSS_NONFRAG_IPV6_SCTP | \
RTE_ETH_RSS_NONFRAG_IPV6_OTHER | \
RTE_ETH_RSS_L2_PAYLOAD)
Also checked the i40e_ethdev.h and there is no support for RTE_ETH_RSS_L3_DST_ONLY.
#define I40E_RSS_OFFLOAD_ALL ( \
RTE_ETH_RSS_FRAG_IPV4 | \
RTE_ETH_RSS_NONFRAG_IPV4_TCP | \
RTE_ETH_RSS_NONFRAG_IPV4_UDP | \
RTE_ETH_RSS_NONFRAG_IPV4_SCTP | \
RTE_ETH_RSS_NONFRAG_IPV4_OTHER | \
RTE_ETH_RSS_FRAG_IPV6 | \
RTE_ETH_RSS_NONFRAG_IPV6_TCP | \
RTE_ETH_RSS_NONFRAG_IPV6_UDP | \
RTE_ETH_RSS_NONFRAG_IPV6_SCTP | \
RTE_ETH_RSS_NONFRAG_IPV6_OTHER | \
RTE_ETH_RSS_L2_PAYLOAD)
Then I try the rte_flow method which also fails validation, I get these returns:
X710:
err.type = RTE_FLOW_ERROR_TYPE_ACTION_CONF
err.message = RSS Queues not supported when pattern specified
E810:
err.type = RTE_FLOW_ERROR_TYPE_ITEM_SPEC
err.message = Invalid input set
Is there a solution to distributing packets based upon either the IPv4 SRC or IPv4 DST?
I also need a solution where Rx and Tx use AVX2 code paths.
Thanks,
Ed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20260407/6fb8f82e/attachment.htm>
More information about the users
mailing list