From: Kiran Kumar K <kirankum...@marvell.com> On supporting hardware, RoCEv2 header can be used to perform RSS in the ingress path.
Signed-off-by: Kiran Kumar K <kirankum...@marvell.com> --- app/test-pmd/config.c | 120 +++++++++++++------------ doc/guides/rel_notes/release_25_07.rst | 32 +------ lib/ethdev/rte_ethdev.h | 1 + 3 files changed, 65 insertions(+), 88 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index e89af21cec..444e4b0388 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -89,67 +89,69 @@ static const struct { const struct rss_type_info rss_type_table[] = { /* Group types */ - { "all", RTE_ETH_RSS_ETH | RTE_ETH_RSS_VLAN | RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP | - RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP | RTE_ETH_RSS_L2_PAYLOAD | - RTE_ETH_RSS_L2TPV3 | RTE_ETH_RSS_ESP | RTE_ETH_RSS_AH | RTE_ETH_RSS_PFCP | - RTE_ETH_RSS_GTPU | RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_MPLS | RTE_ETH_RSS_L2TPV2}, - { "none", 0 }, - { "ip", RTE_ETH_RSS_IP }, - { "udp", RTE_ETH_RSS_UDP }, - { "tcp", RTE_ETH_RSS_TCP }, - { "sctp", RTE_ETH_RSS_SCTP }, - { "tunnel", RTE_ETH_RSS_TUNNEL }, - { "vlan", RTE_ETH_RSS_VLAN }, + {"all", RTE_ETH_RSS_ETH | RTE_ETH_RSS_VLAN | RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP | + RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP | RTE_ETH_RSS_L2_PAYLOAD | + RTE_ETH_RSS_L2TPV3 | RTE_ETH_RSS_ESP | RTE_ETH_RSS_AH | RTE_ETH_RSS_PFCP | + RTE_ETH_RSS_GTPU | RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_MPLS | + RTE_ETH_RSS_L2TPV2 | RTE_ETH_RSS_IB_BTH}, + {"none", 0}, + {"ip", RTE_ETH_RSS_IP}, + {"udp", RTE_ETH_RSS_UDP}, + {"tcp", RTE_ETH_RSS_TCP}, + {"sctp", RTE_ETH_RSS_SCTP}, + {"tunnel", RTE_ETH_RSS_TUNNEL}, + {"vlan", RTE_ETH_RSS_VLAN}, /* Individual type */ - { "ipv4", RTE_ETH_RSS_IPV4 }, - { "ipv4-frag", RTE_ETH_RSS_FRAG_IPV4 }, - { "ipv4-tcp", RTE_ETH_RSS_NONFRAG_IPV4_TCP }, - { "ipv4-udp", RTE_ETH_RSS_NONFRAG_IPV4_UDP }, - { "ipv4-sctp", RTE_ETH_RSS_NONFRAG_IPV4_SCTP }, - { "ipv4-other", RTE_ETH_RSS_NONFRAG_IPV4_OTHER }, - { "ipv6", RTE_ETH_RSS_IPV6 }, - { "ipv6-frag", RTE_ETH_RSS_FRAG_IPV6 }, - { "ipv6-tcp", RTE_ETH_RSS_NONFRAG_IPV6_TCP }, - { "ipv6-udp", RTE_ETH_RSS_NONFRAG_IPV6_UDP }, - { "ipv6-sctp", RTE_ETH_RSS_NONFRAG_IPV6_SCTP }, - { "ipv6-other", RTE_ETH_RSS_NONFRAG_IPV6_OTHER }, - { "l2-payload", RTE_ETH_RSS_L2_PAYLOAD }, - { "ipv6-ex", RTE_ETH_RSS_IPV6_EX }, - { "ipv6-tcp-ex", RTE_ETH_RSS_IPV6_TCP_EX }, - { "ipv6-udp-ex", RTE_ETH_RSS_IPV6_UDP_EX }, - { "port", RTE_ETH_RSS_PORT }, - { "vxlan", RTE_ETH_RSS_VXLAN }, - { "geneve", RTE_ETH_RSS_GENEVE }, - { "nvgre", RTE_ETH_RSS_NVGRE }, - { "gtpu", RTE_ETH_RSS_GTPU }, - { "eth", RTE_ETH_RSS_ETH }, - { "s-vlan", RTE_ETH_RSS_S_VLAN }, - { "c-vlan", RTE_ETH_RSS_C_VLAN }, - { "esp", RTE_ETH_RSS_ESP }, - { "ah", RTE_ETH_RSS_AH }, - { "l2tpv3", RTE_ETH_RSS_L2TPV3 }, - { "pfcp", RTE_ETH_RSS_PFCP }, - { "pppoe", RTE_ETH_RSS_PPPOE }, - { "ecpri", RTE_ETH_RSS_ECPRI }, - { "mpls", RTE_ETH_RSS_MPLS }, - { "ipv4-chksum", RTE_ETH_RSS_IPV4_CHKSUM }, - { "l4-chksum", RTE_ETH_RSS_L4_CHKSUM }, - { "l2tpv2", RTE_ETH_RSS_L2TPV2 }, - { "l3-pre96", RTE_ETH_RSS_L3_PRE96 }, - { "l3-pre64", RTE_ETH_RSS_L3_PRE64 }, - { "l3-pre56", RTE_ETH_RSS_L3_PRE56 }, - { "l3-pre48", RTE_ETH_RSS_L3_PRE48 }, - { "l3-pre40", RTE_ETH_RSS_L3_PRE40 }, - { "l3-pre32", RTE_ETH_RSS_L3_PRE32 }, - { "l2-dst-only", RTE_ETH_RSS_L2_DST_ONLY }, - { "l2-src-only", RTE_ETH_RSS_L2_SRC_ONLY }, - { "l4-dst-only", RTE_ETH_RSS_L4_DST_ONLY }, - { "l4-src-only", RTE_ETH_RSS_L4_SRC_ONLY }, - { "l3-dst-only", RTE_ETH_RSS_L3_DST_ONLY }, - { "l3-src-only", RTE_ETH_RSS_L3_SRC_ONLY }, - { "ipv6-flow-label", RTE_ETH_RSS_IPV6_FLOW_LABEL }, - { NULL, 0}, + {"ipv4", RTE_ETH_RSS_IPV4}, + {"ipv4-frag", RTE_ETH_RSS_FRAG_IPV4}, + {"ipv4-tcp", RTE_ETH_RSS_NONFRAG_IPV4_TCP}, + {"ipv4-udp", RTE_ETH_RSS_NONFRAG_IPV4_UDP}, + {"ipv4-sctp", RTE_ETH_RSS_NONFRAG_IPV4_SCTP}, + {"ipv4-other", RTE_ETH_RSS_NONFRAG_IPV4_OTHER}, + {"ipv6", RTE_ETH_RSS_IPV6}, + {"ipv6-frag", RTE_ETH_RSS_FRAG_IPV6}, + {"ipv6-tcp", RTE_ETH_RSS_NONFRAG_IPV6_TCP}, + {"ipv6-udp", RTE_ETH_RSS_NONFRAG_IPV6_UDP}, + {"ipv6-sctp", RTE_ETH_RSS_NONFRAG_IPV6_SCTP}, + {"ipv6-other", RTE_ETH_RSS_NONFRAG_IPV6_OTHER}, + {"l2-payload", RTE_ETH_RSS_L2_PAYLOAD}, + {"ipv6-ex", RTE_ETH_RSS_IPV6_EX}, + {"ipv6-tcp-ex", RTE_ETH_RSS_IPV6_TCP_EX}, + {"ipv6-udp-ex", RTE_ETH_RSS_IPV6_UDP_EX}, + {"port", RTE_ETH_RSS_PORT}, + {"vxlan", RTE_ETH_RSS_VXLAN}, + {"geneve", RTE_ETH_RSS_GENEVE}, + {"nvgre", RTE_ETH_RSS_NVGRE}, + {"gtpu", RTE_ETH_RSS_GTPU}, + {"eth", RTE_ETH_RSS_ETH}, + {"s-vlan", RTE_ETH_RSS_S_VLAN}, + {"c-vlan", RTE_ETH_RSS_C_VLAN}, + {"esp", RTE_ETH_RSS_ESP}, + {"ah", RTE_ETH_RSS_AH}, + {"l2tpv3", RTE_ETH_RSS_L2TPV3}, + {"pfcp", RTE_ETH_RSS_PFCP}, + {"pppoe", RTE_ETH_RSS_PPPOE}, + {"ecpri", RTE_ETH_RSS_ECPRI}, + {"mpls", RTE_ETH_RSS_MPLS}, + {"ipv4-chksum", RTE_ETH_RSS_IPV4_CHKSUM}, + {"l4-chksum", RTE_ETH_RSS_L4_CHKSUM}, + {"l2tpv2", RTE_ETH_RSS_L2TPV2}, + {"l3-pre96", RTE_ETH_RSS_L3_PRE96}, + {"l3-pre64", RTE_ETH_RSS_L3_PRE64}, + {"l3-pre56", RTE_ETH_RSS_L3_PRE56}, + {"l3-pre48", RTE_ETH_RSS_L3_PRE48}, + {"l3-pre40", RTE_ETH_RSS_L3_PRE40}, + {"l3-pre32", RTE_ETH_RSS_L3_PRE32}, + {"l2-dst-only", RTE_ETH_RSS_L2_DST_ONLY}, + {"l2-src-only", RTE_ETH_RSS_L2_SRC_ONLY}, + {"l4-dst-only", RTE_ETH_RSS_L4_DST_ONLY}, + {"l4-src-only", RTE_ETH_RSS_L4_SRC_ONLY}, + {"l3-dst-only", RTE_ETH_RSS_L3_DST_ONLY}, + {"l3-src-only", RTE_ETH_RSS_L3_SRC_ONLY}, + {"ipv6-flow-label", RTE_ETH_RSS_IPV6_FLOW_LABEL}, + {"ib_bth", RTE_ETH_RSS_IB_BTH}, + {NULL, 0}, }; static const struct { diff --git a/doc/guides/rel_notes/release_25_07.rst b/doc/guides/rel_notes/release_25_07.rst index 093b85d206..1b8ba5ab90 100644 --- a/doc/guides/rel_notes/release_25_07.rst +++ b/doc/guides/rel_notes/release_25_07.rst @@ -24,36 +24,10 @@ DPDK Release 25.07 New Features ------------ -.. This section should contain new features added in this release. - Sample format: +* **Added new RSS offload types for IB_BTH in RSS flow.** - * **Add a title in the past tense with a full stop.** - - Add a short 1-2 sentence description in the past tense. - The description should be enough to allow someone scanning - the release notes to understand the new feature. - - If the feature adds a lot of sub-features you can use a bullet list - like this: - - * Added feature foo to do something. - * Enhanced feature bar to do something else. - - Refer to the previous release notes for examples. - - Suggested order in release notes items: - * Core libs (EAL, mempool, ring, mbuf, buses) - * Device abstraction libs and PMDs (ordered alphabetically by vendor name) - - ethdev (lib, PMDs) - - cryptodev (lib, PMDs) - - eventdev (lib, PMDs) - - etc - * Other libs - * Apps, Examples, Tools (if significant) - - This section is a comment. Do not overwrite or remove it. - Also, make sure to start the actual text at the margin. - ======================================================= + Added ``RTE_ETH_RSS_IB_BTH`` macro so that the IB BTH header can be used as + input set for RSS. Removed Items diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h index ea7f8c4a1a..3f5317c489 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -602,6 +602,7 @@ struct rte_eth_rss_conf { #define RTE_ETH_RSS_L2TPV2 RTE_BIT64(36) #define RTE_ETH_RSS_IPV6_FLOW_LABEL RTE_BIT64(37) +#define RTE_ETH_RSS_IB_BTH RTE_BIT64(38) /* * We use the following macros to combine with above RTE_ETH_RSS_* for -- 2.48.1