[v2,2/2] app/testpmd: fix SW L4 checksum in multi-segments
Checks
Commit Message
Testpmd forwards packets in checksum mode that it needs to calculate
the checksum of each layer's protocol.
In process_inner_cksums, when parsing tunnel packets, inner L4 offset should be
outer_l2_len + outer_l3_len + l2_len + l3_len.
In process_outer_cksums, when parsing tunnel packets, outer L4 offset should be
outer_l2_len + outer_l3_len.
Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-segments")
Cc: stable@dpdk.org
Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
---
app/test-pmd/csumonly.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Comments
LGTM.
> > -----Original Message-----
> > From: Liu, KevinX <kevinx.liu@intel.com>
> > Sent: Wednesday, December 29, 2021 5:37 PM
> > To: dev@dpdk.org
> > Cc: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> > <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>; Yigit,
> > Ferruh <ferruh.yigit@intel.com>; Liu, KevinX <kevinx.liu@intel.com>;
> > stable@dpdk.org
> > Subject: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in
> > multi-segments
> >
> > Testpmd forwards packets in checksum mode that it needs to calculate
> > the checksum of each layer's protocol.
> >
> > In process_inner_cksums, when parsing tunnel packets, inner L4 offset
> > should be outer_l2_len + outer_l3_len + l2_len + l3_len.
> >
> > In process_outer_cksums, when parsing tunnel packets, outer L4 offset
> > should be outer_l2_len + outer_l3_len.
> >
> > Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
> > segments")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
Acked-by: Yuying Zhang <yuying.zhang@intel.com>
> > ---
> > app/test-pmd/csumonly.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index
> > 02bc3929c7..c235456e58 100644
> > --- a/app/test-pmd/csumonly.c
> > +++ b/app/test-pmd/csumonly.c
>
>
> > @@ -513,7 +513,7 @@ process_inner_cksums(void *l3_hdr, const struct
> > testpmd_offload_info *info, ol_flags |= RTE_MBUF_F_TX_UDP_CKSUM; }
> > else { if (info->is_tunnel) -l4_off = info->l2_len +
> > +l4_off = info->outer_l2_len +
> > info->outer_l3_len +
> > info->l2_len + info->l3_len;
> > else
> > @@ -536,7 +536,7 @@ process_inner_cksums(void *l3_hdr, const struct
> > testpmd_offload_info *info, ol_flags |= RTE_MBUF_F_TX_TCP_CKSUM; }
> > else { if (info->is_tunnel) -l4_off = info->l2_len +
> > info->outer_l3_len +
> > +l4_off = info->outer_l2_len + info-
> > >outer_l3_len +
> > info->l2_len + info->l3_len;
> > else
> > l4_off = info->l2_len + info->l3_len; @@ -
> > 625,7 +625,7 @@ process_outer_cksums(void *outer_l3_hdr, struct
> > testpmd_offload_info *info, if (udp_hdr->dgram_cksum != 0) {
> > udp_hdr->dgram_cksum = 0; udp_hdr->dgram_cksum =
> > get_udptcp_checksum(m, outer_l3_hdr,
> > -info->l2_len + info->outer_l3_len,
> > +info->outer_l2_len + info-
> > >outer_l3_len,
> > info->outer_ethertype);
> > }
> >
> > --
> > 2.33.1
>
Hi, Ferruh
Yuying has already reviewed it days ago.
If you can, I hope you can change the status as soon as possible and try to merge the code in RC4.
Thank you.
> -----Original Message-----
> From: Zhang, Yuying <yuying.zhang@intel.com>
> Sent: 2022年3月3日 14:30
> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Liu, KevinX <kevinx.liu@intel.com>;
> dev <dev@dpdk.org>
> Cc: Yang, Qiming <qiming.yang@intel.com>; Yang, SteveX
> <stevex.yang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; Li, Xiaoyun <xiaoyun.li@intel.com>; dpdk stable
> <stable@dpdk.org>
> Subject: RE: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
> segments
>
> LGTM.
>
> > > -----Original Message-----
> > > From: Liu, KevinX <kevinx.liu@intel.com>
> > > Sent: Wednesday, December 29, 2021 5:37 PM
> > > To: dev@dpdk.org
> > > Cc: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> > > <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>; Yigit,
> > > Ferruh <ferruh.yigit@intel.com>; Liu, KevinX <kevinx.liu@intel.com>;
> > > stable@dpdk.org
> > > Subject: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in
> > > multi-segments
> > >
> > > Testpmd forwards packets in checksum mode that it needs to calculate
> > > the checksum of each layer's protocol.
> > >
> > > In process_inner_cksums, when parsing tunnel packets, inner L4
> > > offset should be outer_l2_len + outer_l3_len + l2_len + l3_len.
> > >
> > > In process_outer_cksums, when parsing tunnel packets, outer L4
> > > offset should be outer_l2_len + outer_l3_len.
> > >
> > > Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
> > > segments")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
>
> Acked-by: Yuying Zhang <yuying.zhang@intel.com>
>
> > > ---
> > > app/test-pmd/csumonly.c | 6 +++---
> > > 1 file changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index
> > > 02bc3929c7..c235456e58 100644
> > > --- a/app/test-pmd/csumonly.c
> > > +++ b/app/test-pmd/csumonly.c
> >
> >
> > > @@ -513,7 +513,7 @@ process_inner_cksums(void *l3_hdr, const struct
> > > testpmd_offload_info *info, ol_flags |=
> RTE_MBUF_F_TX_UDP_CKSUM; }
> > > else { if (info->is_tunnel) -l4_off = info->l2_len +
> > > +l4_off = info->outer_l2_len +
> > > info->outer_l3_len +
> > > info->l2_len + info->l3_len;
> > > else
> > > @@ -536,7 +536,7 @@ process_inner_cksums(void *l3_hdr, const struct
> > > testpmd_offload_info *info, ol_flags |=
> RTE_MBUF_F_TX_TCP_CKSUM; }
> > > else { if (info->is_tunnel) -l4_off = info->l2_len +
> > > info->outer_l3_len +
> > > +l4_off = info->outer_l2_len + info-
> > > >outer_l3_len +
> > > info->l2_len + info->l3_len;
> > > else
> > > l4_off = info->l2_len + info->l3_len; @@ -
> > > 625,7 +625,7 @@ process_outer_cksums(void *outer_l3_hdr, struct
> > > testpmd_offload_info *info, if (udp_hdr->dgram_cksum != 0) {
> > > udp_hdr->dgram_cksum = 0; udp_hdr->dgram_cksum =
> > > get_udptcp_checksum(m, outer_l3_hdr,
> > > -info->l2_len + info->outer_l3_len,
> > > +info->outer_l2_len + info-
> > > >outer_l3_len,
> > > info->outer_ethertype);
> > > }
> > >
> > > --
> > > 2.33.1
> >
Hi Kevin,
On 3/11/2022 12:34 PM, Liu, KevinX wrote:
> Hi, Ferruh
>
> Yuying has already reviewed it days ago.
> If you can, I hope you can change the status as soon as possible and try to merge the code in RC4.
> Thank you.
>
>> -----Original Message-----
>> From: Zhang, Yuying <yuying.zhang@intel.com>
>> Sent: 2022年3月3日 14:30
>> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Liu, KevinX <kevinx.liu@intel.com>;
>> dev <dev@dpdk.org>
>> Cc: Yang, Qiming <qiming.yang@intel.com>; Yang, SteveX
>> <stevex.yang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Xing, Beilei
>> <beilei.xing@intel.com>; Li, Xiaoyun <xiaoyun.li@intel.com>; dpdk stable
>> <stable@dpdk.org>
>> Subject: RE: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
>> segments
>>
>> LGTM.
>>
>>>> -----Original Message-----
>>>> From: Liu, KevinX <kevinx.liu@intel.com>
>>>> Sent: Wednesday, December 29, 2021 5:37 PM
>>>> To: dev@dpdk.org
>>>> Cc: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
>>>> <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>; Yigit,
>>>> Ferruh <ferruh.yigit@intel.com>; Liu, KevinX <kevinx.liu@intel.com>;
>>>> stable@dpdk.org
>>>> Subject: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in
>>>> multi-segments
>>>>
>>>> Testpmd forwards packets in checksum mode that it needs to calculate
>>>> the checksum of each layer's protocol.
>>>>
>>>> In process_inner_cksums, when parsing tunnel packets, inner L4
>>>> offset should be outer_l2_len + outer_l3_len + l2_len + l3_len.
>>>>
>>>> In process_outer_cksums, when parsing tunnel packets, outer L4
>>>> offset should be outer_l2_len + outer_l3_len.
>>>>
>>>> Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
>>>> segments")
>>>> Cc: stable@dpdk.org
>>>>
>>>> Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
>> Acked-by: Yuying Zhang <yuying.zhang@intel.com>
>>
>>>> ---
>>>> app/test-pmd/csumonly.c | 6 +++---
>>>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index
>>>> 02bc3929c7..c235456e58 100644
>>>> --- a/app/test-pmd/csumonly.c
>>>> +++ b/app/test-pmd/csumonly.c
>>>
>>>> @@ -513,7 +513,7 @@ process_inner_cksums(void *l3_hdr, const struct
>>>> testpmd_offload_info *info, ol_flags |=
>> RTE_MBUF_F_TX_UDP_CKSUM; }
>>>> else { if (info->is_tunnel) -l4_off = info->l2_len +
>>>> +l4_off = info->outer_l2_len +
>>>> info->outer_l3_len +
>>>> info->l2_len + info->l3_len;
This seems OK. A similar miss is present for TCP case also.
Can you please do the same for that. Line 537
>>>> else
>>>> @@ -536,7 +536,7 @@ process_inner_cksums(void *l3_hdr, const struct
>>>> testpmd_offload_info *info, ol_flags |=
>> RTE_MBUF_F_TX_TCP_CKSUM; }
>>>> else { if (info->is_tunnel) -l4_off = info->l2_len +
>>>> info->outer_l3_len +
>>>> +l4_off = info->outer_l2_len + info-
>>>>> outer_l3_len +
>>>> info->l2_len + info->l3_len;
>>>> else
>>>> l4_off = info->l2_len + info->l3_len; @@ -
This change might not be required. As for normal packet (non-tunnel case)
l4_off = info->l2_len + info->l3_len; should be valid.
Please re-check.
>>>> 625,7 +625,7 @@ process_outer_cksums(void *outer_l3_hdr, struct
>>>> testpmd_offload_info *info, if (udp_hdr->dgram_cksum != 0) {
>>>> udp_hdr->dgram_cksum = 0; udp_hdr->dgram_cksum =
>>>> get_udptcp_checksum(m, outer_l3_hdr,
>>>> -info->l2_len + info->outer_l3_len,
>>>> +info->outer_l2_len + info-
>>>>> outer_l3_len,
>>>> info->outer_ethertype);
>>>> }
>>>>
>>>> --
>>>> 2.33.1
> -----Original Message-----
> From: Singh, Aman Deep <aman.deep.singh@intel.com>
> Sent: 2022年3月11日 16:02
> To: Liu, KevinX <kevinx.liu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>;
> dev <dev@dpdk.org>; Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: Yang, Qiming <qiming.yang@intel.com>; Yang, SteveX
> <stevex.yang@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Li, Xiaoyun
> <xiaoyun.li@intel.com>; dpdk stable <stable@dpdk.org>; Zhang, Yuying
> <yuying.zhang@intel.com>
> Subject: Re: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
> segments
>
> Hi Kevin,
>
> On 3/11/2022 12:34 PM, Liu, KevinX wrote:
> > Hi, Ferruh
> >
> > Yuying has already reviewed it days ago.
> > If you can, I hope you can change the status as soon as possible and try to
> merge the code in RC4.
> > Thank you.
> >
> >> -----Original Message-----
> >> From: Zhang, Yuying <yuying.zhang@intel.com>
> >> Sent: 2022年3月3日 14:30
> >> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Liu, KevinX
> >> <kevinx.liu@intel.com>; dev <dev@dpdk.org>
> >> Cc: Yang, Qiming <qiming.yang@intel.com>; Yang, SteveX
> >> <stevex.yang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
> >> Xing, Beilei <beilei.xing@intel.com>; Li, Xiaoyun
> >> <xiaoyun.li@intel.com>; dpdk stable <stable@dpdk.org>
> >> Subject: RE: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
> >> segments
> >>
> >> LGTM.
> >>
> >>>> -----Original Message-----
> >>>> From: Liu, KevinX <kevinx.liu@intel.com>
> >>>> Sent: Wednesday, December 29, 2021 5:37 PM
> >>>> To: dev@dpdk.org
> >>>> Cc: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> >>>> <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>;
> >>>> Yigit, Ferruh <ferruh.yigit@intel.com>; Liu, KevinX
> >>>> <kevinx.liu@intel.com>; stable@dpdk.org
> >>>> Subject: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in
> >>>> multi-segments
> >>>>
> >>>> Testpmd forwards packets in checksum mode that it needs to
> >>>> calculate the checksum of each layer's protocol.
> >>>>
> >>>> In process_inner_cksums, when parsing tunnel packets, inner L4
> >>>> offset should be outer_l2_len + outer_l3_len + l2_len + l3_len.
> >>>>
> >>>> In process_outer_cksums, when parsing tunnel packets, outer L4
> >>>> offset should be outer_l2_len + outer_l3_len.
> >>>>
> >>>> Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
> >>>> segments")
> >>>> Cc: stable@dpdk.org
> >>>>
> >>>> Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
> >> Acked-by: Yuying Zhang <yuying.zhang@intel.com>
> >>
> >>>> ---
> >>>> app/test-pmd/csumonly.c | 6 +++---
> >>>> 1 file changed, 3 insertions(+), 3 deletions(-)
> >>>>
> >>>> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
> >>>> index
> >>>> 02bc3929c7..c235456e58 100644
> >>>> --- a/app/test-pmd/csumonly.c
> >>>> +++ b/app/test-pmd/csumonly.c
> >>>
> >>>> @@ -513,7 +513,7 @@ process_inner_cksums(void *l3_hdr, const
> struct
> >>>> testpmd_offload_info *info, ol_flags |=
> >> RTE_MBUF_F_TX_UDP_CKSUM; }
> >>>> else { if (info->is_tunnel) -l4_off = info->l2_len +
> >>>> +l4_off = info->outer_l2_len +
> >>>> info->outer_l3_len +
> >>>> info->l2_len + info->l3_len;
> This seems OK. A similar miss is present for TCP case also.
> Can you please do the same for that. Line 537
> >>>> else
> >>>> @@ -536,7 +536,7 @@ process_inner_cksums(void *l3_hdr, const
> struct
> >>>> testpmd_offload_info *info, ol_flags |=
> >> RTE_MBUF_F_TX_TCP_CKSUM; }
> >>>> else { if (info->is_tunnel) -l4_off = info->l2_len +
> >>>> info->outer_l3_len +
> >>>> +l4_off = info->outer_l2_len + info-
> >>>>> outer_l3_len +
> >>>> info->l2_len + info->l3_len;
> >>>> else
> >>>> l4_off = info->l2_len + info->l3_len; @@ -
> This change might not be required. As for normal packet (non-tunnel case)
> l4_off = info->l2_len + info->l3_len; should be valid.
> Please re-check.
I don't understand what you mean. I fix the code under the tunnel case, and I didn't modify the code for the non-tunnel case.
>
>
> >>>> 625,7 +625,7 @@ process_outer_cksums(void *outer_l3_hdr, struct
> >>>> testpmd_offload_info *info, if (udp_hdr->dgram_cksum != 0) {
> >>>> udp_hdr->dgram_cksum = 0; udp_hdr->dgram_cksum =
> >>>> get_udptcp_checksum(m, outer_l3_hdr,
> >>>> -info->l2_len + info->outer_l3_len,
> >>>> +info->outer_l2_len + info-
> >>>>> outer_l3_len,
> >>>> info->outer_ethertype);
> >>>> }
> >>>>
> >>>> --
> >>>> 2.33.1
On 3/11/2022 1:42 PM, Liu, KevinX wrote:
>
>> -----Original Message-----
>> From: Singh, Aman Deep<aman.deep.singh@intel.com>
>> Sent: 2022年3月11日 16:02
>> To: Liu, KevinX<kevinx.liu@intel.com>; Zhang, Qi Z<qi.z.zhang@intel.com>;
>> dev<dev@dpdk.org>; Yigit, Ferruh<ferruh.yigit@intel.com>
>> Cc: Yang, Qiming<qiming.yang@intel.com>; Yang, SteveX
>> <stevex.yang@intel.com>; Xing, Beilei<beilei.xing@intel.com>; Li, Xiaoyun
>> <xiaoyun.li@intel.com>; dpdk stable<stable@dpdk.org>; Zhang, Yuying
>> <yuying.zhang@intel.com>
>> Subject: Re: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
>> segments
>>
>> Hi Kevin,
>>
>> On 3/11/2022 12:34 PM, Liu, KevinX wrote:
>>> Hi, Ferruh
>>>
>>> Yuying has already reviewed it days ago.
>>> If you can, I hope you can change the status as soon as possible and try to
>> merge the code in RC4.
>>> Thank you.
>>>
>>>> -----Original Message-----
>>>> From: Zhang, Yuying<yuying.zhang@intel.com>
>>>> Sent: 2022年3月3日 14:30
>>>> To: Zhang, Qi Z<qi.z.zhang@intel.com>; Liu, KevinX
>>>> <kevinx.liu@intel.com>; dev<dev@dpdk.org>
>>>> Cc: Yang, Qiming<qiming.yang@intel.com>; Yang, SteveX
>>>> <stevex.yang@intel.com>; Yigit, Ferruh<ferruh.yigit@intel.com>;
>>>> Xing, Beilei<beilei.xing@intel.com>; Li, Xiaoyun
>>>> <xiaoyun.li@intel.com>; dpdk stable<stable@dpdk.org>
>>>> Subject: RE: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
>>>> segments
>>>>
>>>> LGTM.
>>>>
>>>>>> -----Original Message-----
>>>>>> From: Liu, KevinX<kevinx.liu@intel.com>
>>>>>> Sent: Wednesday, December 29, 2021 5:37 PM
>>>>>> To:dev@dpdk.org
>>>>>> Cc: Yang, Qiming<qiming.yang@intel.com>; Zhang, Qi Z
>>>>>> <qi.z.zhang@intel.com>; Yang, SteveX<stevex.yang@intel.com>;
>>>>>> Yigit, Ferruh<ferruh.yigit@intel.com>; Liu, KevinX
>>>>>> <kevinx.liu@intel.com>;stable@dpdk.org
>>>>>> Subject: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in
>>>>>> multi-segments
>>>>>>
>>>>>> Testpmd forwards packets in checksum mode that it needs to
>>>>>> calculate the checksum of each layer's protocol.
>>>>>>
>>>>>> In process_inner_cksums, when parsing tunnel packets, inner L4
>>>>>> offset should be outer_l2_len + outer_l3_len + l2_len + l3_len.
>>>>>>
>>>>>> In process_outer_cksums, when parsing tunnel packets, outer L4
>>>>>> offset should be outer_l2_len + outer_l3_len.
>>>>>>
>>>>>> Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
>>>>>> segments")
>>>>>> Cc:stable@dpdk.org
>>>>>>
>>>>>> Signed-off-by: Kevin Liu<kevinx.liu@intel.com>
>>>> Acked-by: Yuying Zhang<yuying.zhang@intel.com>
Acked-by: Aman Singh <aman.deep.singh@intel.com>
>>>>
>>>>>> ---
>>>>>> app/test-pmd/csumonly.c | 6 +++---
>>>>>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>>>>>
>>>>>> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
>>>>>> index
>>>>>> 02bc3929c7..c235456e58 100644
>>>>>> --- a/app/test-pmd/csumonly.c
>>>>>> +++ b/app/test-pmd/csumonly.c
>>>>>> @@ -513,7 +513,7 @@ process_inner_cksums(void *l3_hdr, const
>> struct
>>>>>> testpmd_offload_info *info, ol_flags |=
>>>> RTE_MBUF_F_TX_UDP_CKSUM; }
>>>>>> else { if (info->is_tunnel) -l4_off = info->l2_len +
>>>>>> +l4_off = info->outer_l2_len +
>>>>>> info->outer_l3_len +
>>>>>> info->l2_len + info->l3_len;
>> This seems OK. A similar miss is present for TCP case also.
>> Can you please do the same for that. Line 537
>>>>>> else
>>>>>> @@ -536,7 +536,7 @@ process_inner_cksums(void *l3_hdr, const
>> struct
>>>>>> testpmd_offload_info *info, ol_flags |=
>>>> RTE_MBUF_F_TX_TCP_CKSUM; }
>>>>>> else { if (info->is_tunnel) -l4_off = info->l2_len +
>>>>>> info->outer_l3_len +
>>>>>> +l4_off = info->outer_l2_len + info-
>>>>>>> outer_l3_len +
>>>>>> info->l2_len + info->l3_len;
>>>>>> else
>>>>>> l4_off = info->l2_len + info->l3_len; @@ -
>> This change might not be required. As for normal packet (non-tunnel case)
>> l4_off = info->l2_len + info->l3_len; should be valid.
>> Please re-check.
> I don't understand what you mean. I fix the code under the tunnel case, and I didn't modify the code for the non-tunnel case.
Sorry, my bad.
>>
>>>>>> 625,7 +625,7 @@ process_outer_cksums(void *outer_l3_hdr, struct
>>>>>> testpmd_offload_info *info, if (udp_hdr->dgram_cksum != 0) {
>>>>>> udp_hdr->dgram_cksum = 0; udp_hdr->dgram_cksum =
>>>>>> get_udptcp_checksum(m, outer_l3_hdr,
>>>>>> -info->l2_len + info->outer_l3_len,
>>>>>> +info->outer_l2_len + info-
>>>>>>> outer_l3_len,
>>>>>> info->outer_ethertype);
>>>>>> }
>>>>>>
>>>>>> --
>>>>>> 2.33.1
On 3/11/2022 7:04 AM, Liu, KevinX wrote:
message moved down, please do not top post
>> -----Original Message-----
>> From: Zhang, Yuying <yuying.zhang@intel.com>
>> Sent: 2022年3月3日 14:30
>> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Liu, KevinX <kevinx.liu@intel.com>;
>> dev <dev@dpdk.org>
>> Cc: Yang, Qiming <qiming.yang@intel.com>; Yang, SteveX
>> <stevex.yang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>; Xing, Beilei
>> <beilei.xing@intel.com>; Li, Xiaoyun <xiaoyun.li@intel.com>; dpdk stable
>> <stable@dpdk.org>
>> Subject: RE: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
>> segments
>>
>> LGTM.
>>
>>>> -----Original Message-----
>>>> From: Liu, KevinX <kevinx.liu@intel.com>
>>>> Sent: Wednesday, December 29, 2021 5:37 PM
>>>> To: dev@dpdk.org
>>>> Cc: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
>>>> <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>; Yigit,
>>>> Ferruh <ferruh.yigit@intel.com>; Liu, KevinX <kevinx.liu@intel.com>;
>>>> stable@dpdk.org
>>>> Subject: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in
>>>> multi-segments
>>>>
>>>> Testpmd forwards packets in checksum mode that it needs to calculate
>>>> the checksum of each layer's protocol.
>>>>
>>>> In process_inner_cksums, when parsing tunnel packets, inner L4
>>>> offset should be outer_l2_len + outer_l3_len + l2_len + l3_len.
>>>>
>>>> In process_outer_cksums, when parsing tunnel packets, outer L4
>>>> offset should be outer_l2_len + outer_l3_len.
>>>>
>>>> Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
>>>> segments")
>>>> Cc: stable@dpdk.org
>>>>
>>>> Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
>>
>> Acked-by: Yuying Zhang <yuying.zhang@intel.com>
>>
> Hi, Ferruh
>
> Yuying has already reviewed it days ago.
> If you can, I hope you can change the status as soon as possible and try to merge the code in RC4.
> Thank you.
>
+Thomas, he is getting patches for -rc4.
And just for double check Qi, are you comfortable with patch?
(I am asking because initially this is set with ice and testpmd patch)
> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> Sent: Friday, March 11, 2022 6:47 PM
> To: Liu, KevinX <kevinx.liu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; dev
> <dev@dpdk.org>; Thomas Monjalon <thomas@monjalon.net>
> Cc: Yang, Qiming <qiming.yang@intel.com>; Yang, SteveX
> <stevex.yang@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Li, Xiaoyun
> <xiaoyun.li@intel.com>; dpdk stable <stable@dpdk.org>; Zhang, Yuying
> <yuying.zhang@intel.com>
> Subject: Re: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-segments
>
> On 3/11/2022 7:04 AM, Liu, KevinX wrote:
>
> message moved down, please do not top post
>
> >> -----Original Message-----
> >> From: Zhang, Yuying <yuying.zhang@intel.com>
> >> Sent: 2022年3月3日 14:30
> >> To: Zhang, Qi Z <qi.z.zhang@intel.com>; Liu, KevinX
> >> <kevinx.liu@intel.com>; dev <dev@dpdk.org>
> >> Cc: Yang, Qiming <qiming.yang@intel.com>; Yang, SteveX
> >> <stevex.yang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
> >> Xing, Beilei <beilei.xing@intel.com>; Li, Xiaoyun
> >> <xiaoyun.li@intel.com>; dpdk stable <stable@dpdk.org>
> >> Subject: RE: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-
> >> segments
> >>
> >> LGTM.
> >>
> >>>> -----Original Message-----
> >>>> From: Liu, KevinX <kevinx.liu@intel.com>
> >>>> Sent: Wednesday, December 29, 2021 5:37 PM
> >>>> To: dev@dpdk.org
> >>>> Cc: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> >>>> <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>;
> >>>> Yigit, Ferruh <ferruh.yigit@intel.com>; Liu, KevinX
> >>>> <kevinx.liu@intel.com>; stable@dpdk.org
> >>>> Subject: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in
> >>>> multi-segments
> >>>>
> >>>> Testpmd forwards packets in checksum mode that it needs to
> >>>> calculate the checksum of each layer's protocol.
> >>>>
> >>>> In process_inner_cksums, when parsing tunnel packets, inner L4
> >>>> offset should be outer_l2_len + outer_l3_len + l2_len + l3_len.
> >>>>
> >>>> In process_outer_cksums, when parsing tunnel packets, outer L4
> >>>> offset should be outer_l2_len + outer_l3_len.
> >>>>
> >>>> Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
> >>>> segments")
> >>>> Cc: stable@dpdk.org
> >>>>
> >>>> Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
> >>
> >> Acked-by: Yuying Zhang <yuying.zhang@intel.com>
> >>
> > Hi, Ferruh
> >
> > Yuying has already reviewed it days ago.
> > If you can, I hope you can change the status as soon as possible and try to
> merge the code in RC4.
> > Thank you.
> >
>
> +Thomas, he is getting patches for -rc4.
>
> And just for double check Qi, are you comfortable with patch?
> (I am asking because initially this is set with ice and testpmd patch)
Yes, I'm OK with this patch. It has been verified on most of Intel PMDs.
14/03/2022 03:33, Zhang, Qi Z:
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> > On 3/11/2022 7:04 AM, Liu, KevinX wrote:
> > > From: Zhang, Yuying <yuying.zhang@intel.com>
> > >>> From: Liu, KevinX <kevinx.liu@intel.com>
> > >>>> Testpmd forwards packets in checksum mode that it needs to
> > >>>> calculate the checksum of each layer's protocol.
> > >>>>
> > >>>> In process_inner_cksums, when parsing tunnel packets, inner L4
> > >>>> offset should be outer_l2_len + outer_l3_len + l2_len + l3_len.
> > >>>>
> > >>>> In process_outer_cksums, when parsing tunnel packets, outer L4
> > >>>> offset should be outer_l2_len + outer_l3_len.
> > >>>>
> > >>>> Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-
> > >>>> segments")
> > >>>> Cc: stable@dpdk.org
> > >>>>
> > >>>> Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
> > >>
> > >> Acked-by: Yuying Zhang <yuying.zhang@intel.com>
> > >>
> > > Hi, Ferruh
> > >
> > > Yuying has already reviewed it days ago.
> > > If you can, I hope you can change the status as soon as possible and try to
> > merge the code in RC4.
> > > Thank you.
> > >
> >
> > +Thomas, he is getting patches for -rc4.
> >
> > And just for double check Qi, are you comfortable with patch?
> > (I am asking because initially this is set with ice and testpmd patch)
>
> Yes, I'm OK with this patch. It has been verified on most of Intel PMDs.
Applied, thanks.
@@ -513,7 +513,7 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
ol_flags |= RTE_MBUF_F_TX_UDP_CKSUM;
} else {
if (info->is_tunnel)
- l4_off = info->l2_len +
+ l4_off = info->outer_l2_len +
info->outer_l3_len +
info->l2_len + info->l3_len;
else
@@ -536,7 +536,7 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
ol_flags |= RTE_MBUF_F_TX_TCP_CKSUM;
} else {
if (info->is_tunnel)
- l4_off = info->l2_len + info->outer_l3_len +
+ l4_off = info->outer_l2_len + info->outer_l3_len +
info->l2_len + info->l3_len;
else
l4_off = info->l2_len + info->l3_len;
@@ -625,7 +625,7 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info,
if (udp_hdr->dgram_cksum != 0) {
udp_hdr->dgram_cksum = 0;
udp_hdr->dgram_cksum = get_udptcp_checksum(m, outer_l3_hdr,
- info->l2_len + info->outer_l3_len,
+ info->outer_l2_len + info->outer_l3_len,
info->outer_ethertype);
}