On 4/16/2020 4:15 PM, Jeff Guo wrote: > hi, bernard > > > On 4/16/2020 7:16 PM, Iremonger, Bernard wrote: >> Hi Jeff, >> >>> -----Original Message----- >>> From: Guo, Jia <jia....@intel.com> >>> Sent: Thursday, April 16, 2020 8:20 PM >>> To: Iremonger, Bernard <bernard.iremon...@intel.com>; >>> or...@mellanox.com; Ye, Xiaolong <xiaolong...@intel.com>; Zhang, Qi Z >>> <qi.z.zh...@intel.com> >>> Cc: dev@dpdk.org; Wu, Jingjing <jingjing...@intel.com>; Cao, Yahui >>> <yahui....@intel.com>; Su, Simei <simei...@intel.com>; Guo, Jia >>> <jia....@intel.com> >>> Subject: [dpdk-dev v6 3/3] app/testpmd: add new types to RSS hash >>> commands >>> >>> Add some new types, such as eth/l2-src-only/l2-dst-only/svlan/cvlan/ >>> l2tpv3/esp/ah/pfcp types into RSS hash commands, it could be used to >>> configure these rss input set by cmdline. >>> >>> Example testpmd commands was: >>> testpmd>flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end \ >>> actions rss types l2tpv3 end key_len 0 queues end / end >>> >>> Signed-off-by: Jeff Guo <jia....@intel.com> >>> --- >>> v6->v5: >>> add some missing part and refine commit log >>> --- >>> app/test-pmd/cmdline.c | 34 +++++++++++++++++++++++++++++----- >>> app/test-pmd/config.c | 15 ++++++++++++--- >>> 2 files changed, 41 insertions(+), 8 deletions(-) >>> >> The dpdk/doc/guides/testpmd_app_ug/testpmd_funcs.rst file needs to be >> updated for the new RSS values. >> Section 4.6.16. port config -RSS > > > ok, i think the doc is definitely need, and also the rss rule flow > setting. please expect it in the next version. Thanks.
Hi Jeff, I have merged Bernard's "configure RSS hash" patch already to next-net, when sending next version, can you please rebase on top of latest next-net? Thanks, ferruh > > >>> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index >>> 863b567c1..4164767b8 100644 >>> --- a/app/test-pmd/cmdline.c >>> +++ b/app/test-pmd/cmdline.c >>> @@ -2270,9 +2270,13 @@ cmd_config_rss_parsed(void *parsed_result, >>> int ret; >>> >>> if (!strcmp(res->value, "all")) >>> -rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_TCP | >>> -ETH_RSS_UDP | ETH_RSS_SCTP | >>> -ETH_RSS_L2_PAYLOAD; >>> +rss_conf.rss_hf = ETH_RSS_ETH | ETH_RSS_S_VLAN | >>> +ETH_RSS_C_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; >>> +else if (!strcmp(res->value, "eth")) >>> +rss_conf.rss_hf = ETH_RSS_ETH; >>> else if (!strcmp(res->value, "ip")) >>> rss_conf.rss_hf = ETH_RSS_IP; >>> else if (!strcmp(res->value, "udp")) >>> @@ -2299,6 +2303,22 @@ cmd_config_rss_parsed(void *parsed_result, >>> rss_conf.rss_hf = ETH_RSS_L4_SRC_ONLY; >>> else if (!strcmp(res->value, "l4-dst-only")) >>> rss_conf.rss_hf = ETH_RSS_L4_DST_ONLY; >>> +else if (!strcmp(res->value, "l2-src-only")) >>> +rss_conf.rss_hf = ETH_RSS_L2_SRC_ONLY; >>> +else if (!strcmp(res->value, "l2-dst-only")) >>> +rss_conf.rss_hf = ETH_RSS_L2_DST_ONLY; >>> +else if (!strcmp(res->value, "s-vlan")) >>> +rss_conf.rss_hf = ETH_RSS_S_VLAN; >>> +else if (!strcmp(res->value, "c-vlan")) >>> +rss_conf.rss_hf = ETH_RSS_C_VLAN; >>> +else if (!strcmp(res->value, "l2tpv3")) >>> +rss_conf.rss_hf = ETH_RSS_L2TPV3; >>> +else if (!strcmp(res->value, "esp")) >>> +rss_conf.rss_hf = ETH_RSS_ESP; >>> +else if (!strcmp(res->value, "ah")) >>> +rss_conf.rss_hf = ETH_RSS_AH; >>> +else if (!strcmp(res->value, "pfcp")) >>> +rss_conf.rss_hf = ETH_RSS_PFCP; >>> else if (!strcmp(res->value, "none")) >>> rss_conf.rss_hf = 0; >>> else if (!strcmp(res->value, "default")) @@ -2467,7 +2487,9 @@ >>> cmdline_parse_token_string_t cmd_config_rss_hash_key_rss_type = >>> "ipv4-other#ipv6#ipv6-frag#ipv6-tcp#ipv6- >>> udp#" >>> "ipv6-sctp#ipv6-other#l2-payload#ipv6-ex#" >>> "ipv6-tcp-ex#ipv6-udp-ex#" >>> - "l3-src-only#l3-dst-only#l4-src-only#l4-dst- >>> only"); >>> + "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"); >>> cmdline_parse_token_string_t cmd_config_rss_hash_key_value = >>> TOKEN_STRING_INITIALIZER(struct cmd_config_rss_hash_key, key, >>> NULL); >>> >>> @@ -2478,7 +2500,9 @@ cmdline_parse_inst_t cmd_config_rss_hash_key = >>> { >>> "ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|" >>> "ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|" >>> "l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex|" >>> -"l3-src-only|l3-dst-only|l4-src-only|l4-dst-only " >>> +"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 " >>> "<string of hex digits (variable length, NIC dependent)>", >>> .tokens = { >>> (void *)&cmd_config_rss_hash_key_port, diff --git >>> a/app/test-pmd/config.c b/app/test-pmd/config.c index >>> 71aeb5413..c8196e47a 100644 >>> --- a/app/test-pmd/config.c >>> +++ b/app/test-pmd/config.c >>> @@ -75,10 +75,15 @@ static const struct { }; >>> >>> const struct rss_type_info rss_type_table[] = { >>> -{ "all", ETH_RSS_IP | ETH_RSS_TCP | >>> -ETH_RSS_UDP | ETH_RSS_SCTP | >>> -ETH_RSS_L2_PAYLOAD }, >>> +{ "all", ETH_RSS_ETH | 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}, >>> { "none", 0 }, >>> +{ "eth", ETH_RSS_ETH }, >>> +{ "l2-src-only", ETH_RSS_L2_SRC_ONLY }, >>> +{ "l2-dst-only", ETH_RSS_L2_DST_ONLY }, >>> +{ "s-vlan", ETH_RSS_S_VLAN }, >>> +{ "c-vlan", ETH_RSS_C_VLAN }, >>> { "ipv4", ETH_RSS_IPV4 }, >>> { "ipv4-frag", ETH_RSS_FRAG_IPV4 }, >>> { "ipv4-tcp", ETH_RSS_NONFRAG_IPV4_TCP }, @@ -108,6 +113,10 >>> @@ const struct rss_type_info rss_type_table[] = { >>> { "l3-dst-only", ETH_RSS_L3_DST_ONLY }, >>> { "l4-src-only", ETH_RSS_L4_SRC_ONLY }, >>> { "l4-dst-only", ETH_RSS_L4_DST_ONLY }, >>> +{ "l2tpv3", ETH_RSS_L2TPV3 }, >>> +{ "esp", ETH_RSS_ESP }, >>> +{ "ah", ETH_RSS_AH }, >>> +{ "pfcp", ETH_RSS_PFCP }, >>> { NULL, 0 }, >>> }; >>> >>> -- >>> 2.20.1 >> Regards, >> >> Bernard.