This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: TCP Checksum calculation method(Checksum Offload)

Part Number: TDA4VM

HI

experts.

        First of all, in the process of TCP communication between TDA4 and external devices, we capture packets at both ends, and find that only when the receiving end captures tcpdump packets, the checksum value of the packets from the opposite end is correct. If tcpdump captures packets at the sending end , the checksum of the outgoing packet is a random value. Therefore, it can be determined that the hardware checksum calculation method (Checksum Offload) is adopted in the TDA4-linux system.


        There is a problem: there is tcp checksum=0xffff in the packet sent by TDA4 (the actual formula calculation should be 0x0). If it is in the calculation rule of UDP: when the calculated checksum is 0, it should be sent as 0xffff, which is reasonable. But I don't see TCP checksum describing this situation in the chip manual.
Different Ethernet RFC rules have different definitions for TCP checksum: RFC1071 describes that 0x0 of TCP checksum is equivalent to 0xffff, and RFC1624 describes that 0x0 of TCP checksum is not equal to 0xffff. The rules do not explicitly describe what should be issued with 0xffff when the originating TCP checksum is 0.

Need to consult:
1) Which RFC standard is followed for TCP/IP protocol processing in TDA4?
2) What calculation method does TCP checksum use in TDA4? (Because the TDA4-linux system adopts the hardware calculation checksum method, is it understandable that the TCP checksum and UDP checksum use the same calculation method? Because the standard TCP checksum formula does not produce 0xffff results)