On 3/11/2022 1:42 PM, Liu, KevinX wrote: > >> -----Original Message----- >> From: Singh, Aman Deep >> Sent: 2022年3月11日 16:02 >> To: Liu, KevinX; Zhang, Qi Z; >> dev; Yigit, Ferruh >> Cc: Yang, Qiming; Yang, SteveX >> ; Xing, Beilei; Li, Xiaoyun >> ; dpdk stable; Zhang, Yuying >> >> 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 >>>> Sent: 2022年3月3日 14:30 >>>> To: Zhang, Qi Z; Liu, KevinX >>>> ; dev >>>> Cc: Yang, Qiming; Yang, SteveX >>>> ; Yigit, Ferruh; >>>> Xing, Beilei; Li, Xiaoyun >>>> ; dpdk stable >>>> Subject: RE: [PATCH v2 2/2] app/testpmd: fix SW L4 checksum in multi- >>>> segments >>>> >>>> LGTM. >>>> >>>>>> -----Original Message----- >>>>>> From: Liu, KevinX >>>>>> Sent: Wednesday, December 29, 2021 5:37 PM >>>>>> To:dev@dpdk.org >>>>>> Cc: Yang, Qiming; Zhang, Qi Z >>>>>> ; Yang, SteveX; >>>>>> Yigit, Ferruh; Liu, KevinX >>>>>> ;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 >>>> Acked-by: Yuying Zhang Acked-by: Aman Singh >>>> >>>>>> --- >>>>>> 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