[dpdk-dev] [dpdk-dev v7 3/3] app/testpmd: add new types to RSS hash commands

Jeff Guo jia.guo at intel.com
Tue Apr 21 14:37:48 CEST 2020


hi, bernard


On 4/21/2020 5:44 PM, Iremonger, Bernard wrote:
> Hi Jeff,
>
>> -----Original Message-----
>> From: Guo, Jia <jia.guo at intel.com>
>> Sent: Friday, April 17, 2020 7:32 PM
>> To: Iremonger, Bernard <bernard.iremonger at intel.com>;
>> orika at mellanox.com; Ye, Xiaolong <xiaolong.ye at intel.com>; Zhang, Qi Z
>> <qi.z.zhang at intel.com>
>> Cc: dev at dpdk.org; Wu, Jingjing <jingjing.wu at intel.com>; Cao, Yahui
>> <yahui.cao at intel.com>; Su, Simei <simei.su at intel.com>; Guo, Jia
>> <jia.guo at intel.com>
>> Subject: [dpdk-dev v7 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 flow commands was:
>> testpmd>flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end \
>> actions rss types l2tpv3 end key_len 0 queues end / end
>>
>> port config commands was:
>> testpmd>port config all rss l2tpv3
>>
>> Signed-off-by: Jeff Guo <jia.guo at intel.com>
>> ---
>> v7->v6:
>> add missing type
>> add change in doc for port rss configure
>> ---
>>   app/test-pmd/cmdline.c                      | 34 +++++++++++++++++----
>>   app/test-pmd/config.c                       | 14 +++++++--
>>   doc/guides/testpmd_app_ug/testpmd_funcs.rst |  2 +-
>>   3 files changed, 40 insertions(+), 10 deletions(-)
>>
>> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
>> 982322c35..97cf6ee35 100644
>> --- a/app/test-pmd/cmdline.c
>> +++ b/app/test-pmd/cmdline.c
>> @@ -2270,9 +2270,14 @@ 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_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, "vlan"))
>> +rss_conf.rss_hf = ETH_RSS_VLAN;
>>   else if (!strcmp(res->value, "ip"))
>>   rss_conf.rss_hf = ETH_RSS_IP;
>>   else if (!strcmp(res->value, "udp"))
>> @@ -2299,6 +2304,18 @@ 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, "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")) @@ -2359,7 +2376,8 @@
>> cmdline_parse_inst_t cmd_config_rss = {
>>   .f = cmd_config_rss_parsed,
>>   .data = NULL,
>>   .help_str = "port config all rss "
>> -
>> "all|default|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|vxla
>> n-gpe|none|<flowtype_id>",
>> +
>> "all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|"
>> +"nvgre|vxlan-
>> gpe|l2tpv3|esp|ah|pfcp|none|<flowtype_id>",
>>   .tokens = {
>>   (void *)&cmd_config_rss_port,
>>   (void *)&cmd_config_rss_keyword,
>> @@ -2469,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);
>>
>> @@ -2480,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
>> 69c5633e8..72f25d152 100644
>> --- a/app/test-pmd/config.c
>> +++ b/app/test-pmd/config.c
>> @@ -75,10 +75,16 @@ 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_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},
>>   { "none", 0 },
>> +{ "eth", ETH_RSS_ETH },
>> +{ "l2-src-only", ETH_RSS_L2_SRC_ONLY },
>> +{ "l2-dst-only", ETH_RSS_L2_DST_ONLY },
>> +{ "vlan", ETH_RSS_VLAN },
>> +{ "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 }, @@ -110,6 +116,8 @@
>> const struct rss_type_info rss_type_table[] = {
>>   { "l4-dst-only", ETH_RSS_L4_DST_ONLY },
>>   { "esp", ETH_RSS_ESP },
>>   { "ah", ETH_RSS_AH },
>> +{ "l2tpv3", ETH_RSS_L2TPV3 },
>> +{ "pfcp", ETH_RSS_PFCP },
>>   { NULL, 0 },
>>   };
>>
>> diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
>> b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
>> index dcee5de45..2928499b6 100644
>> --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
>> +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
>> @@ -2199,7 +2199,7 @@ port config - RSS
>>
>>   Set the RSS (Receive Side Scaling) mode on or off::
>>
>> -   testpmd> port config all rss
>> (all|default|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|vxlan-
>> gpe|none)
>> +   testpmd> port config all rss
>> +
>> (all|default|eth|vlan|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|vx
>> + lan-gpe|l2tpv3|esp|ah|pfcp|none)
>>
>>   RSS is on by default.
> The "all" option needs to be updated with the latest "all" values.
> It would also be good to reformat the text so that the "all", "none" and "default" options are on separate lines.


you are right here, bernard, will refine in next version.


>> --
>> 2.20.1
> Regards,
>
> Bernard.
>
>


More information about the dev mailing list