[dpdk-dev] [PATCH v2 3/3] net/ice: support FDIR for IP fragment packet

Xu, Ting ting.xu at intel.com
Thu Apr 1 04:08:20 CEST 2021


Hi, Jeff

See inline

Best Regards,
Xu Ting

> -----Original Message-----
> From: Guo, Jia <jia.guo at intel.com>
> Sent: Wednesday, March 24, 2021 9:54 PM
> To: Yang, Qiming <qiming.yang at intel.com>; Zhang, Qi Z
> <qi.z.zhang at intel.com>
> Cc: Xu, Ting <ting.xu at intel.com>; dev at dpdk.org; Guo, Jia <jia.guo at intel.com>
> Subject: [PATCH v2 3/3] net/ice: support FDIR for IP fragment packet
> 
> New FDIR parsing are added to handle the fragmented IPv4/IPv6 packet.
> 
> Signed-off-by: Jeff Guo <jia.guo at intel.com>
> ---
>  drivers/net/ice/ice_fdir_filter.c | 96 +++++++++++++++++++++++++++----
>  1 file changed, 85 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
> index 3af5812660..3504d3c6c2 100644
> --- a/drivers/net/ice/ice_fdir_filter.c
> +++ b/drivers/net/ice/ice_fdir_filter.c
> @@ -24,7 +24,7 @@
>  #define ICE_FDIR_INSET_ETH_IPV4 (\
>  	ICE_FDIR_INSET_ETH | \
>  	ICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST | ICE_INSET_IPV4_TOS | \
> -	ICE_INSET_IPV4_TTL | ICE_INSET_IPV4_PROTO)
> +	ICE_INSET_IPV4_TTL | ICE_INSET_IPV4_PROTO | ICE_INSET_IPV4_PKID)
> 

Skip...

> @@ -1700,8 +1719,6 @@ ice_fdir_parse_pattern(__rte_unused struct
> ice_adapter *ad,
>  			/* Check IPv4 mask and update input set */
>  			if (ipv4_mask->hdr.version_ihl ||
>  			    ipv4_mask->hdr.total_length ||
> -			    ipv4_mask->hdr.packet_id ||
> -			    ipv4_mask->hdr.fragment_offset ||
>  			    ipv4_mask->hdr.hdr_checksum) {
>  				rte_flow_error_set(error, EINVAL,
> 
> RTE_FLOW_ERROR_TYPE_ITEM,
> @@ -1710,6 +1727,20 @@ ice_fdir_parse_pattern(__rte_unused struct
> ice_adapter *ad,
>  				return -rte_errno;
>  			}
> 

May need to check if ipv4_last exists before using it.

> +			if (ipv4_last->hdr.version_ihl ||
> +			    ipv4_last->hdr.type_of_service ||
> +			    ipv4_last->hdr.time_to_live ||
> +			    ipv4_last->hdr.total_length |
> +			    ipv4_last->hdr.next_proto_id ||
> +			    ipv4_last->hdr.hdr_checksum ||
> +			    ipv4_last->hdr.src_addr ||
> +			    ipv4_last->hdr.dst_addr) {
> +				rte_flow_error_set(error, EINVAL,
> +
> RTE_FLOW_ERROR_TYPE_ITEM,
> +						   item, "Invalid IPv4 last.");
> +				return -rte_errno;
> +			}
> +
>  			if (ipv4_mask->hdr.dst_addr == UINT32_MAX)
>  				*input_set |= ICE_INSET_IPV4_DST;
>  			if (ipv4_mask->hdr.src_addr == UINT32_MAX) @@ -

Skip...

> 2.20.1



More information about the dev mailing list