[dpdk-dev] [PATCH v4] net/iavf: support outer IP hash for GTPU

Guo, Jia jia.guo at intel.com
Thu Sep 10 07:24:54 CEST 2020


> -----Original Message-----
> From: Zhang, AlvinX <alvinx.zhang at intel.com>
> Sent: Thursday, September 10, 2020 11:26 AM
> To: Guo, Jia <jia.guo at intel.com>; Zhang, Qi Z <qi.z.zhang at intel.com>
> Cc: dev at dpdk.org; Zhang, AlvinX <alvinx.zhang at intel.com>
> Subject: [PATCH v4] net/iavf: support outer IP hash for GTPU
> 
> From: Alvin Zhang <alvinx.zhang at intel.com>
> 
> Add headers for GTPU, now outer IP hash can be configured as input sets for
> GTPU packet.
> 

I think this patch will not cover outer IP hash for any GTPU case, only none-inner GTPU case, right? 

> Signed-off-by: Alvin Zhang <alvinx.zhang at intel.com>
> ---
> 
> V2: Modify codes according to comments.
> V3: Refact all codes.
> V4: Fix compatibility issues.
> 
>  drivers/net/iavf/iavf_hash.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c index
> aab8b14..3ec32d9 100644
> --- a/drivers/net/iavf/iavf_hash.c
> +++ b/drivers/net/iavf/iavf_hash.c
> @@ -132,6 +132,9 @@ struct iavf_hash_flow_cfg {
>  	VIRTCHNL_PROTO_HDR_PFCP, \
>  	FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID),
> {BUFF_NOUSED} }
> 
> +#define proto_hdr_gtpu { \
> +	VIRTCHNL_PROTO_HDR_GTPU_IP, 0, {BUFF_NOUSED} }
> +

I still not funs of set field to zero here since it should be general use for other case, it could specific refine to 0 when parsing pattern if need. 

>  #define TUNNEL_LEVEL_OUTER		0
>  #define TUNNEL_LEVEL_INNER		1
> 
> @@ -256,6 +259,14 @@ struct virtchnl_proto_hdrs ipv6_pfcp_tmplt = {
>  	TUNNEL_LEVEL_OUTER, 2, {proto_hdr_ipv6, proto_hdr_pfcp}  };
> 
> +struct virtchnl_proto_hdrs outer_ipv4_udp_gtpu_tmplt = {
> +	TUNNEL_LEVEL_OUTER, 3, {proto_hdr_ipv4, proto_hdr_udp,
> proto_hdr_gtpu}
> +};
> +
> +struct virtchnl_proto_hdrs outer_ipv6_udp_gtpu_tmplt = {
> +	TUNNEL_LEVEL_OUTER, 3, {proto_hdr_ipv6, proto_hdr_udp,
> proto_hdr_gtpu}
> +};
> +
>  /* rss type super set */
> 
>  /* IPv4 outer */
> @@ -348,6 +359,7 @@ struct virtchnl_proto_hdrs ipv6_pfcp_tmplt = {
>  	{iavf_pattern_eth_vlan_ipv4_udp,
> 	IAVF_RSS_TYPE_VLAN_IPV4_UDP,	&outer_ipv4_udp_tmplt},
>  	{iavf_pattern_eth_vlan_ipv4_tcp,
> 	IAVF_RSS_TYPE_VLAN_IPV4_TCP,	&outer_ipv4_tcp_tmplt},
>  	{iavf_pattern_eth_vlan_ipv4_sctp,
> 	IAVF_RSS_TYPE_VLAN_IPV4_SCTP,	&outer_ipv4_sctp_tmplt},
> +	{iavf_pattern_eth_ipv4_gtpu,			ETH_RSS_IPV4,
> 		&outer_ipv4_udp_gtpu_tmplt},

There is also a question the same as the other mail loop of GTPC, should it be supper set here?

>  	{iavf_pattern_eth_ipv4_gtpu_ipv4,
> 	IAVF_RSS_TYPE_GTPU_IPV4,	&inner_ipv4_tmplt},
>  	{iavf_pattern_eth_ipv4_gtpu_ipv4_udp,
> 	IAVF_RSS_TYPE_GTPU_IPV4_UDP,	&inner_ipv4_udp_tmplt},
>  	{iavf_pattern_eth_ipv4_gtpu_ipv4_tcp,
> 	IAVF_RSS_TYPE_GTPU_IPV4_TCP,	&inner_ipv4_tcp_tmplt},
> @@ -374,6 +386,7 @@ struct virtchnl_proto_hdrs ipv6_pfcp_tmplt = {
>  	{iavf_pattern_eth_vlan_ipv6_udp,
> 	IAVF_RSS_TYPE_VLAN_IPV6_UDP,	&outer_ipv6_udp_tmplt},
>  	{iavf_pattern_eth_vlan_ipv6_tcp,
> 	IAVF_RSS_TYPE_VLAN_IPV6_TCP,	&outer_ipv6_tcp_tmplt},
>  	{iavf_pattern_eth_vlan_ipv6_sctp,
> 	IAVF_RSS_TYPE_VLAN_IPV6_SCTP,	&outer_ipv6_sctp_tmplt},
> +	{iavf_pattern_eth_ipv6_gtpu,			ETH_RSS_IPV6,
> 		&outer_ipv6_udp_gtpu_tmplt},
>  	{iavf_pattern_eth_ipv4_gtpu_ipv6,
> 	IAVF_RSS_TYPE_GTPU_IPV6,	&inner_ipv6_tmplt},
>  	{iavf_pattern_eth_ipv4_gtpu_ipv6_udp,
> 	IAVF_RSS_TYPE_GTPU_IPV6_UDP,	&inner_ipv6_udp_tmplt},
>  	{iavf_pattern_eth_ipv4_gtpu_ipv6_tcp,
> 	IAVF_RSS_TYPE_GTPU_IPV6_TCP,	&inner_ipv6_tcp_tmplt},
> --
> 1.8.3.1



More information about the dev mailing list