Add support of FDIR L3 fields for both IPv4 and IPv6 fragment packets. Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com> --- drivers/net/iavf/iavf_fdir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index da3eec8b59..32b06044f2 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -57,7 +57,7 @@ IAVF_INSET_IPV6_HOP_LIMIT) #define IAVF_FDIR_INSET_ETH_IPV6_FRAG_EXT (\ - IAVF_INSET_IPV6_ID) + IAVF_FDIR_INSET_ETH_IPV6 | IAVF_INSET_IPV6_ID) #define IAVF_FDIR_INSET_ETH_IPV6_UDP (\ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ @@ -664,6 +664,7 @@ iavf_fdir_add_fragment_hdr(struct virtchnl_proto_hdrs *hdrs, int layer) /* adding dummy fragment header */ hdr1 = &hdrs->proto_hdr[layer]; VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, IPV4_FRAG); + hdr1->field_selector = 0; hdrs->count = ++layer; } -- 2.25.1
> -----Original Message-----
> From: Wu, Wenjun1 <wenjun1.wu@intel.com>
> Sent: Monday, August 2, 2021 3:58 PM
> To: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>
> Cc: Wu, Wenjun1 <wenjun1.wu@intel.com>
> Subject: [PATCH] net/iavf: support FDIR L3 fields for IP fragment packets
>
> Add support of FDIR L3 fields for both IPv4 and IPv6 fragment packets.
>
> Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
On 8/2/2021 8:57 AM, Wenjun Wu wrote: > Add support of FDIR L3 fields for both IPv4 and IPv6 fragment packets. > Description mentions from both IPv4 & IPv6 but only IPv6 macro is updated, is this expected? Is following correct: Before this patch flow director rules were not applied to fragmented IPv4 & IPv6 packets (so packets were not able to sent to specific queues), but after this patch it does. Is it the case that HW configuration was missing and hash is not calculated for these kind of packets etc.. If you have more details can you please provide? Also what was happening to these packets previously, sent to queue 0 by default? Overall can please provide more description and check below question related to 'field_selector'? Thanks, ferruh > Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com> > --- > drivers/net/iavf/iavf_fdir.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c > index da3eec8b59..32b06044f2 100644 > --- a/drivers/net/iavf/iavf_fdir.c > +++ b/drivers/net/iavf/iavf_fdir.c > @@ -57,7 +57,7 @@ > IAVF_INSET_IPV6_HOP_LIMIT) > > #define IAVF_FDIR_INSET_ETH_IPV6_FRAG_EXT (\ > - IAVF_INSET_IPV6_ID) > + IAVF_FDIR_INSET_ETH_IPV6 | IAVF_INSET_IPV6_ID) > > #define IAVF_FDIR_INSET_ETH_IPV6_UDP (\ > IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ > @@ -664,6 +664,7 @@ iavf_fdir_add_fragment_hdr(struct virtchnl_proto_hdrs *hdrs, int layer) > /* adding dummy fragment header */ > hdr1 = &hdrs->proto_hdr[layer]; > VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, IPV4_FRAG); > + hdr1->field_selector = 0; Is this change related to new support, or fixing something that was missing previously? > hdrs->count = ++layer; > } > >
Hi Ferruh,
I am sorry my description caused confusion. I will split this patch into two, rework the commit log and send it later.
> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> Sent: Friday, August 13, 2021 10:00 PM
> To: Wu, Wenjun1 <wenjun1.wu@intel.com>; dev@dpdk.org; Wu, Jingjing
> <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Subject: Re: [dpdk-dev] [PATCH] net/iavf: support FDIR L3 fields for IP
> fragment packets
>
> On 8/2/2021 8:57 AM, Wenjun Wu wrote:
> > Add support of FDIR L3 fields for both IPv4 and IPv6 fragment packets.
> >
>
> Description mentions from both IPv4 & IPv6 but only IPv6 macro is updated,
> is this expected?
>
> Is following correct:
> Before this patch flow director rules were not applied to fragmented IPv4 &
> IPv6 packets (so packets were not able to sent to specific queues), but after
> this patch it does.
> Is it the case that HW configuration was missing and hash is not calculated for
> these kind of packets etc.. If you have more details can you please provide?
> Also what was happening to these packets previously, sent to queue 0 by
> default?
>
> Overall can please provide more description and check below question
> related to 'field_selector'?
>
> Thanks,
> ferruh
>
> > Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
> > ---
> > drivers/net/iavf/iavf_fdir.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/iavf/iavf_fdir.c
> > b/drivers/net/iavf/iavf_fdir.c index da3eec8b59..32b06044f2 100644
> > --- a/drivers/net/iavf/iavf_fdir.c
> > +++ b/drivers/net/iavf/iavf_fdir.c
> > @@ -57,7 +57,7 @@
> > IAVF_INSET_IPV6_HOP_LIMIT)
> >
> > #define IAVF_FDIR_INSET_ETH_IPV6_FRAG_EXT (\
> > - IAVF_INSET_IPV6_ID)
> > + IAVF_FDIR_INSET_ETH_IPV6 | IAVF_INSET_IPV6_ID)
> >
> > #define IAVF_FDIR_INSET_ETH_IPV6_UDP (\
> > IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ @@ -664,6 +664,7
> @@
> > iavf_fdir_add_fragment_hdr(struct virtchnl_proto_hdrs *hdrs, int layer)
> > /* adding dummy fragment header */
> > hdr1 = &hdrs->proto_hdr[layer];
> > VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, IPV4_FRAG);
> > + hdr1->field_selector = 0;
>
> Is this change related to new support, or fixing something that was missing
> previously?
>
> > hdrs->count = ++layer;
> > }
> >
> >
Originally, the value of field_selector for IPV4_FRAG header hdr1 is the same as the previous header hdr2. For IPv4 packets, field_selector for hdr2 can be any value between 0 and 4, depending on the selected field. Actually, this value for IPV4_FRAG should be constant 0, which denotes the field packet ID. This patch adds an assignment to hdr1->field_selector to make sure that it is always 0. Fixes: 3334513ef484 ("net/iavf: support flow director for IP fragment") Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com> --- v2: reword commit log --- drivers/net/iavf/iavf_fdir.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index 2869a8b424..32b06044f2 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -664,6 +664,7 @@ iavf_fdir_add_fragment_hdr(struct virtchnl_proto_hdrs *hdrs, int layer) /* adding dummy fragment header */ hdr1 = &hdrs->proto_hdr[layer]; VIRTCHNL_SET_PROTO_HDR_TYPE(hdr1, IPV4_FRAG); + hdr1->field_selector = 0; hdrs->count = ++layer; } -- 2.25.1
This patch adds L3 fields FDIR support for IPv6 fragment packets. Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com> --- v2: reword commit log --- drivers/net/iavf/iavf_fdir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index da3eec8b59..2869a8b424 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -57,7 +57,7 @@ IAVF_INSET_IPV6_HOP_LIMIT) #define IAVF_FDIR_INSET_ETH_IPV6_FRAG_EXT (\ - IAVF_INSET_IPV6_ID) + IAVF_FDIR_INSET_ETH_IPV6 | IAVF_INSET_IPV6_ID) #define IAVF_FDIR_INSET_ETH_IPV6_UDP (\ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ -- 2.25.1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Wenjun Wu
> Sent: Tuesday, August 17, 2021 2:50 PM
> To: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>
> Cc: Wu, Wenjun1 <wenjun1.wu@intel.com>
> Subject: [dpdk-dev] [PATCH v2] net/iavf: fix wrong FDIR L3 field set for IPv4
> fragment packets
>
> Originally, the value of field_selector for IPV4_FRAG header hdr1 is the same as
> the previous header hdr2. For IPv4 packets, field_selector for hdr2 can be any
> value between 0 and 4, depending on the selected field. Actually, this value for
> IPV4_FRAG should be constant 0, which denotes the field packet ID.
>
> This patch adds an assignment to hdr1->field_selector to make sure that it is
> always 0.
>
> Fixes: 3334513ef484 ("net/iavf: support flow director for IP fragment")
>
> Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Wenjun Wu
> Sent: Tuesday, August 17, 2021 2:50 PM
> To: dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>
> Cc: Wu, Wenjun1 <wenjun1.wu@intel.com>
> Subject: [dpdk-dev] [PATCH v2] net/iavf: support FDIR L3 fields for IPv6
> fragment packets
>
> This patch adds L3 fields FDIR support for IPv6 fragment packets.
>
> Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi