From d810252857c9c72bf6c03a917fcfff1ede6af765 Mon Sep 17 00:00:00 2001 From: Hemant Agrawal Date: Wed, 20 Jan 2021 11:52:37 +0530 Subject: [PATCH] ethdev: add MPLS RSS offload type This patch defines new RSS offload types for MPLS. The distribution will on the basis of MPLS tag. Signed-off-by: Hemant Agrawal Reviewed-by: Ferruh Yigit --- app/test-pmd/cmdline.c | 6 ++++-- doc/guides/testpmd_app_ug/testpmd_funcs.rst | 2 +- lib/librte_ethdev/rte_ethdev.h | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 89034c8b72..c6ace2dd25 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -788,7 +788,7 @@ static void cmd_help_long_parsed(void *parsed_result, "receive buffers available.\n\n" "port config all rss (all|default|ip|tcp|udp|sctp|" - "ether|port|vxlan|geneve|nvgre|vxlan-gpe|ecpri|none|level-default|" + "ether|port|vxlan|geneve|nvgre|vxlan-gpe|ecpri|mpls|none|level-default|" "level-outer|level-inner|)\n" " Set the RSS mode.\n\n" @@ -2220,6 +2220,8 @@ cmd_config_rss_parsed(void *parsed_result, rss_conf.rss_hf = ETH_RSS_GTPU; else if (!strcmp(res->value, "ecpri")) rss_conf.rss_hf = ETH_RSS_ECPRI; + else if (!strcmp(res->value, "mpls")) + rss_conf.rss_hf = ETH_RSS_MPLS; else if (!strcmp(res->value, "none")) rss_conf.rss_hf = 0; else if (!strcmp(res->value, "level-default")) { @@ -2290,7 +2292,7 @@ cmdline_parse_inst_t cmd_config_rss = { .data = NULL, .help_str = "port config all rss " "all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|" - "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|none|level-default|" + "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|mpls|none|level-default|" "level-outer|level-inner|", .tokens = { (void *)&cmd_config_rss_port, diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 458f25bb63..3ccc9fc300 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -2270,7 +2270,7 @@ port config - RSS Set the RSS (Receive Side Scaling) mode on or off:: - testpmd> port config all rss (all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|none) + testpmd> port config all rss (all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|mpls|none) RSS is on by default. diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index d36d3a424c..667373f06f 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -530,6 +530,7 @@ struct rte_eth_rss_conf { #define ETH_RSS_PFCP (1ULL << 30) #define ETH_RSS_PPPOE (1ULL << 31) #define ETH_RSS_ECPRI (1ULL << 32) +#define ETH_RSS_MPLS (1ULL << 33) /* * We use the following macros to combine with above ETH_RSS_* for @@ -761,7 +762,8 @@ rte_eth_rss_hf_refine(uint64_t rss_hf) ETH_RSS_PORT | \ ETH_RSS_VXLAN | \ ETH_RSS_GENEVE | \ - ETH_RSS_NVGRE) + ETH_RSS_NVGRE | \ + ETH_RSS_MPLS) /* * Definitions used for redirection table entry size. -- 2.20.1