[PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi-segments

Singh, Aman Deep aman.deep.singh at intel.com
Fri Mar 11 09:02:16 CET 2022


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 at intel.com>
>> Sent: 2022年3月3日 14:30
>> To: Zhang, Qi Z <qi.z.zhang at intel.com>; Liu, KevinX <kevinx.liu at intel.com>;
>> dev <dev at dpdk.org>
>> Cc: Yang, Qiming <qiming.yang at intel.com>; Yang, SteveX
>> <stevex.yang at intel.com>; Yigit, Ferruh <ferruh.yigit at intel.com>; Xing, Beilei
>> <beilei.xing at intel.com>; Li, Xiaoyun <xiaoyun.li at intel.com>; dpdk stable
>> <stable at 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 at intel.com>
>>>> Sent: Wednesday, December 29, 2021 5:37 PM
>>>> To: dev at dpdk.org
>>>> Cc: Yang, Qiming <qiming.yang at intel.com>; Zhang, Qi Z
>>>> <qi.z.zhang at intel.com>; Yang, SteveX <stevex.yang at intel.com>; Yigit,
>>>> Ferruh <ferruh.yigit at intel.com>; Liu, KevinX <kevinx.liu at intel.com>;
>>>> stable at 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 at dpdk.org
>>>>
>>>> Signed-off-by: Kevin Liu <kevinx.liu at intel.com>
>> Acked-by: Yuying Zhang <yuying.zhang at 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


More information about the stable mailing list