[v6,3/3] app/testpmd: add new types to RSS hash commands

Message ID 20200416191944.23284-4-jia.guo@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series add RSS configuration for iavf |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Guo, Jia April 16, 2020, 7:19 p.m. UTC
  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.guo@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(-)
  

Comments

Ori Kam April 16, 2020, 10:40 a.m. UTC | #1
Hi Jeff,

> -----Original Message-----
> From: Jeff Guo <jia.guo@intel.com>
> Sent: Thursday, April 16, 2020 10:20 PM
> To: bernard.iremonger@intel.com; Ori Kam <orika@mellanox.com>;
> xiaolong.ye@intel.com; qi.z.zhang@intel.com
> Cc: dev@dpdk.org; jingjing.wu@intel.com; yahui.cao@intel.com;
> simei.su@intel.com; jia.guo@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.guo@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(-)
> 
> 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 "

I think you are missing the eth only.

Best,
Ori

>  		"<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
  
Iremonger, Bernard April 16, 2020, 11:16 a.m. UTC | #2
Hi Jeff,

> -----Original Message-----
> From: Guo, Jia <jia.guo@intel.com>
> Sent: Thursday, April 16, 2020 8:20 PM
> To: Iremonger, Bernard <bernard.iremonger@intel.com>;
> orika@mellanox.com; Ye, Xiaolong <xiaolong.ye@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Cc: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Cao, Yahui
> <yahui.cao@intel.com>; Su, Simei <simei.su@intel.com>; Guo, Jia
> <jia.guo@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.guo@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

> 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.
  
Guo, Jia April 16, 2020, 3:15 p.m. UTC | #3
hi, bernard


On 4/16/2020 7:16 PM, Iremonger, Bernard wrote:
> Hi Jeff,
>
>> -----Original Message-----
>> From: Guo, Jia <jia.guo@intel.com>
>> Sent: Thursday, April 16, 2020 8:20 PM
>> To: Iremonger, Bernard <bernard.iremonger@intel.com>;
>> orika@mellanox.com; Ye, Xiaolong <xiaolong.ye@intel.com>; Zhang, Qi Z
>> <qi.z.zhang@intel.com>
>> Cc: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Cao, Yahui
>> <yahui.cao@intel.com>; Su, Simei <simei.su@intel.com>; Guo, Jia
>> <jia.guo@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.guo@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.


>> 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.
  
Guo, Jia April 16, 2020, 3:16 p.m. UTC | #4
hi, Ori


On 4/16/2020 6:40 PM, Ori Kam wrote:
> Hi Jeff,
>
>> -----Original Message-----
>> From: Jeff Guo <jia.guo@intel.com>
>> Sent: Thursday, April 16, 2020 10:20 PM
>> To: bernard.iremonger@intel.com; Ori Kam <orika@mellanox.com>;
>> xiaolong.ye@intel.com; qi.z.zhang@intel.com
>> Cc: dev@dpdk.org; jingjing.wu@intel.com; yahui.cao@intel.com;
>> simei.su@intel.com; jia.guo@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.guo@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(-)
>>
>> 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 "
> I think you are missing the eth only.


oh, a missing one here, thanks Ori.


>
> Best,
> Ori
>
>>   		"<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
  
Ferruh Yigit April 16, 2020, 3:52 p.m. UTC | #5
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.guo@intel.com>
>>> Sent: Thursday, April 16, 2020 8:20 PM
>>> To: Iremonger, Bernard <bernard.iremonger@intel.com>;
>>> orika@mellanox.com; Ye, Xiaolong <xiaolong.ye@intel.com>; Zhang, Qi Z
>>> <qi.z.zhang@intel.com>
>>> Cc: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Cao, Yahui
>>> <yahui.cao@intel.com>; Su, Simei <simei.su@intel.com>; Guo, Jia
>>> <jia.guo@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.guo@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.
  
Guo, Jia April 17, 2020, 1:50 a.m. UTC | #6
hi, ferruh


On 4/16/2020 11:52 PM, Ferruh Yigit wrote:
> 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.guo@intel.com>
>>>> Sent: Thursday, April 16, 2020 8:20 PM
>>>> To: Iremonger, Bernard <bernard.iremonger@intel.com>;
>>>> orika@mellanox.com; Ye, Xiaolong <xiaolong.ye@intel.com>; Zhang, Qi Z
>>>> <qi.z.zhang@intel.com>
>>>> Cc: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Cao, Yahui
>>>> <yahui.cao@intel.com>; Su, Simei <simei.su@intel.com>; Guo, Jia
>>>> <jia.guo@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.guo@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


Sure. Thanks.


>>
>>>> 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.
  

Patch

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 },
 };