On Thu, 2 Nov 2023 19:20:07 +0000 Ferruh Yigit <ferruh.yi...@amd.com> wrote:
> On 8/4/2023 9:28 AM, Kaiwen Deng wrote: > > IEEE 802 packets may have a minimum size limit. The data fields > > should be padded when necessary. In some cases, the padding data > > is not zero. Testpmd does not trim these IP packets to the true > > length of the frame, so errors will occur when calculating TCP > > or UDP checksum. > > > > Hi Kaiwen, > > I am trying to understand the problem, what is the testcase that has > checksum error? > > Are the received mbuf data_len & pkt_len wrong? Instead of trying to fix > the mbuf during forwarding, can we fix where packet generated? The root cause is that get_udptcp_cksum_mbuf is using m->pkt_len which maybe larger than the actual data. The real issue is there and in rte_ip.h checksum code. The correct fix would be to use l3_len instead. It also looks like test-pmd is not validating the IP header. Both parse_ipv4() and parse_ipv6() should check if packet was truncated. Same for both UDP and TCP lengths.