From: Simei Su Date: Wed, 18 Nov 2020 01:34:48 +0000 (+0800) Subject: ethdev: add eCPRI RSS offload type X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=46914aa1c793d40e599cf11ebccfda225775e491;hp=e6818853c022e3ae62d05421860063f7a6c731af;p=dpdk.git ethdev: add eCPRI RSS offload type This patch defines new RSS offload types for eCPRI. For eCPRI with Message Type 0, the hash field is physical channel ID. Signed-off-by: Simei Su Reviewed-by: Ferruh Yigit --- diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 5e2881edf7..bde0de5165 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|none|level-default|" + "ether|port|vxlan|geneve|nvgre|vxlan-gpe|ecpri|none|level-default|" "level-outer|level-inner|)\n" " Set the RSS mode.\n\n" @@ -2164,7 +2164,8 @@ cmd_config_rss_parsed(void *parsed_result, rss_conf.rss_hf = ETH_RSS_ETH | ETH_RSS_VLAN | ETH_RSS_IP | ETH_RSS_TCP | ETH_RSS_UDP | ETH_RSS_SCTP | ETH_RSS_L2_PAYLOAD | ETH_RSS_L2TPV3 | ETH_RSS_ESP | - ETH_RSS_AH | ETH_RSS_PFCP | ETH_RSS_GTPU; + ETH_RSS_AH | ETH_RSS_PFCP | ETH_RSS_GTPU | + ETH_RSS_ECPRI; else if (!strcmp(res->value, "eth")) rss_conf.rss_hf = ETH_RSS_ETH; else if (!strcmp(res->value, "vlan")) @@ -2223,6 +2224,8 @@ cmd_config_rss_parsed(void *parsed_result, rss_conf.rss_hf = ETH_RSS_PPPOE; else if (!strcmp(res->value, "gtpu")) 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, "none")) rss_conf.rss_hf = 0; else if (!strcmp(res->value, "level-default")) { @@ -2293,7 +2296,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|none|level-default|" + "nvgre|vxlan-gpe|l2tpv3|esp|ah|pfcp|ecpri|none|level-default|" "level-outer|level-inner|", .tokens = { (void *)&cmd_config_rss_port, @@ -2407,7 +2410,7 @@ cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_type = "ipv6-tcp-ex#ipv6-udp-ex#" "l3-src-only#l3-dst-only#l4-src-only#l4-dst-only#" "l2-src-only#l2-dst-only#s-vlan#c-vlan#" - "l2tpv3#esp#ah#pfcp#pppoe#gtpu"); + "l2tpv3#esp#ah#pfcp#pppoe#gtpu#ecpri"); cmdline_parse_token_string_t cmd_config_rss_hash_key_value = TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, key, NULL); @@ -2420,7 +2423,7 @@ cmdline_parse_inst_t cmd_config_rss_hash_key = { "l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex|" "l3-src-only|l3-dst-only|l4-src-only|l4-dst-only|" "l2-src-only|l2-dst-only|s-vlan|c-vlan|" - "l2tpv3|esp|ah|pfcp|pppoe|gtpu " + "l2tpv3|esp|ah|pfcp|pppoe|gtpu|ecpri " "", .tokens = { (void *)&cmd_config_rss_hash_key_port, diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 91e7542b1a..b51de59e1e 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -87,7 +87,7 @@ const struct rss_type_info rss_type_table[] = { { "all", ETH_RSS_ETH | ETH_RSS_VLAN | ETH_RSS_IP | ETH_RSS_TCP | ETH_RSS_UDP | ETH_RSS_SCTP | ETH_RSS_L2_PAYLOAD | ETH_RSS_L2TPV3 | ETH_RSS_ESP | ETH_RSS_AH | ETH_RSS_PFCP | - ETH_RSS_GTPU}, + ETH_RSS_GTPU | ETH_RSS_ECPRI}, { "none", 0 }, { "eth", ETH_RSS_ETH }, { "l2-src-only", ETH_RSS_L2_SRC_ONLY }, @@ -136,6 +136,7 @@ const struct rss_type_info rss_type_table[] = { { "pfcp", ETH_RSS_PFCP }, { "pppoe", ETH_RSS_PPPOE }, { "gtpu", ETH_RSS_GTPU }, + { "ecpri", ETH_RSS_ECPRI }, { NULL, 0 }, }; diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index ebf7e68f86..9be450066e 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|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|none) RSS is on by default. diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 69fc9733ea..f5f8919186 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -525,6 +525,7 @@ struct rte_eth_rss_conf { #define ETH_RSS_L2TPV3 (1ULL << 29) #define ETH_RSS_PFCP (1ULL << 30) #define ETH_RSS_PPPOE (1ULL << 31) +#define ETH_RSS_ECPRI (1ULL << 32) /* * We use the following macros to combine with above ETH_RSS_* for