[dpdk-dev] [PATCH 2/2] net/mlx5: fix missing RSS expansion of IPv6 frag

Raslan Darawsheh rasland at nvidia.com
Wed Jul 14 09:47:37 CEST 2021


> -----Original Message-----
> From: Jack Min <jackmin at nvidia.com>
> Sent: Wednesday, July 14, 2021 10:31 AM
> To: Raslan Darawsheh <rasland at nvidia.com>
> Cc: Matan Azrad <matan at nvidia.com>; Shahaf Shuler
> <shahafs at nvidia.com>; Slava Ovsiienko <viacheslavo at nvidia.com>; Dekel
> Peled <dekelp at nvidia.com>; Ori Kam <orika at nvidia.com>; dev at dpdk.org;
> stable at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH 2/2] net/mlx5: fix missing RSS expansion of
> IPv6 frag
> 
> On Mon, 21-07-12, 08:05, Raslan Darawsheh wrote:
> 
> Hey,
> > Hi,
> >
> > > -----Original Message-----
> > > From: dev <dev-bounces at dpdk.org> On Behalf Of Xiaoyu Min
> > > Sent: Wednesday, July 7, 2021 5:33 AM
> > > To: Matan Azrad <matan at nvidia.com>; Shahaf Shuler
> > > <shahafs at nvidia.com>; Slava Ovsiienko <viacheslavo at nvidia.com>;
> > > Dekel Peled <dekelp at nvidia.com>; Ori Kam <orika at nvidia.com>
> > > Cc: dev at dpdk.org; stable at dpdk.org
> > > Subject: [dpdk-dev] [PATCH 2/2] net/mlx5: fix missing RSS expansion
> > > of IPv6 frag
> > >
> > > IPV6_FRAG_EXT item is missed for RSS expansion which causes flows
> > > like [1] are wrongly expanded.
> > >
> > > Different from other items, IPV6_FRAG_EXT hasn't next field because
> > > HW only support to do hash of UDP/TCP for non-fragment.
> > >
> > > This MLX5_EXPANSION_IPV6_FRAG_EXT node in RSS expansion graph
> only
> > > helps RSS expansion function to locate right node in graph from
> > > which start to expand.
> > >
> > > Fixes: 0e5a0d8f7556 ("net/mlx5: support match on IPv6 fragment
> > > extension")
> > > Cc: stable at dpdk.org
> > >
> > > [1]:
> > > flow create 0 ingress pattern eth / ipv6 / udp dst is 250 /
> > > vxlan-gpe /
> > > ipv6 / ipv6_frag_ext / end actions rss level 2 types ip end / end
> > >
> > > Signed-off-by: Xiaoyu Min <jackmin at nvidia.com>
> > > ---
> > >  drivers/net/mlx5/mlx5_flow.c | 8 +++++++-
> > >  1 file changed, 7 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/net/mlx5/mlx5_flow.c
> > > b/drivers/net/mlx5/mlx5_flow.c index 1b682ac8ed..90b8cf6692 100644
> > > --- a/drivers/net/mlx5/mlx5_flow.c
> > > +++ b/drivers/net/mlx5/mlx5_flow.c
> > > @@ -134,6 +134,7 @@ mlx5_flow_is_rss_expandable_item(const struct
> > > rte_flow_item *item)
> > >  	case RTE_FLOW_ITEM_TYPE_MPLS:
> > >  	case RTE_FLOW_ITEM_TYPE_VXLAN_GPE:
> > >  	case RTE_FLOW_ITEM_TYPE_GRE_KEY:
> > > +	case RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT:
> >
> > Adding IPV6_FRAG_EXT to the list of expandable is not accurate,
> > Assuming HW support matching on L4 info after frag - which I think it
> doesn't.
> > It will lead that the first frag will get different hash than other
> > frags since it the only one which contain info of L4 header This will lead to
> different RSS spreading and that's not correct.
> 
> No, it will not expand to any items because the .next field is empty of entry
> MLX5_EXPANSION_IPV6_FRAG_EXT in mlx5_support_expansion[].
> 
Great thanks for explanation, 
> -Jack
> >
> > Kindest regards,
> > Raslan Darawsheh
Kindest regards
Raslan Darawsheh


More information about the dev mailing list