How to set RSS hash calculation from inner layer not from outer layer (for tunneling trafic)?

Hi, sorry for my english, it is not my native language.

I use dpdk and mellanox card ConnectX-5 and I try to have a hash value from the driver. I need to have the hash value calculated form inner layer for tunneling traffic. For now, the hash value reading from the mbuf struct is calcultated from outter layer (for vxlan or gre).

I try to add the flag ETH_RSS_LEVEL_INNER_MOST to the hash functions in the initalising structure rte_eth_rss_conf used by the rte_eth_dev_configure. This flag is not supported.

How can I have get a hash value based on the inner layers?

I missed something, maybe I can’t have this hashvalue, any help will be really appreciated.

DPDK version : 20.11

MLNX_OFED version : 5.2-



we have a list of supported RSS hashing types in DPDK + their definitions :

IPv4, IPv6, TCPv4, TCPv6, UDPv4 and UDPv6 RSS on any number of queues.

RSS using different combinations of fields: L3 only, L4 only or both, and source only, destination



Hello Samer, thanks for your reply,

Regarding on :

  • Tunnel types: VXLAN, L3 VXLAN, VXLAN-GPE, GRE, MPLSoGRE, MPLSoUDP, IP-in-IP, Geneve, GTP.
  • Tunnel HW offloads: packet type, inner/outer RSS, IP and UDP checksum verification.

I can’t get the hash value based on the inner layers for tunnels.

Is it really supported ? or I don’t understand this features.





Any response on this question? Also what would be the behavior if the ETH_RSS_VXLAN RSS offload was to be selected? On what parameters would the hash be calculated? Would the VNI be used? Would outer header be used or inner?