SPRUII0F May 2019 – June 2024 TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S
The TCP/UDP/ICMP Checksum Engine processes the IPv4 or IPv6 header (including extension headers) and determines whether the encapsulated payload is TCP, UDP, or ICMP. The checksum is calculated for the TCP, UDP, or ICMP payload and inserted into the corresponding field in the header. The Tx COE can work in the following two modes:
The result of this operation is indicated by the Payload Checksum Error status bit in the Transmit Status vector (Bit 12). This engine sets the Payload Checksum Error status bit when the engine detects that the packet has been forwarded to the MAC Transmitter engine in the store-and-forward mode without the end of packet (EOP) being written to the FIFO, or when the packet ends before the number of bytes indicated by the Payload Length field in the IP Header is received. When the packet is longer than the indicated payload length, the COE ignores them as stuff bytes, and no error is reported. When this engine detects the first type of error, the engine does not modify the TCP, UDP, or ICMP header. For the second error type, the engine still inserts the calculated checksum into the corresponding header field.
Table 43-25 describes the functions supported by Transmit Checksum Offload engine based on the packet type. When the MAC does not insert the checksum, it is indicated as “No” in Table 43-25.
Packet Type | Hardware IP Header Checksum Insertion | Hardware TCP/UDP Checksum Insertion |
---|---|---|
Non-IPv4 or IPv6 packet | No | No |
IPv4 packet is greater than 1,522 bytes (2,000 bytes when IEEE 802.3ad Support for 2K Packets is enabled in MAC) but less than or equal to the frame size constraint specified in “Transmit Checksum Offload Engine” | Yes | Yes |
IPv6 packet is greater than 1,522 bytes (2,000 bytes when IEEE 802.3ad Support for 2K Packets is enabled in MAC) but less than or equal to the frame size constraint specified in “Transmit Checksum Offload Engine” | Not Applicable | Yes |
IPv4 with TCP, UDP, or ICMP | Yes | Yes |
IPv4 packet has IP options (IP header is longer than 20 bytes) | Yes | Yes |
Packet is an IPv4 fragment | Yes | No |
IPv6 packet with the following next header fields in main or extension headers: | ||
Hop-by-hop options (in IPv6 main header) | Not Applicable | Yes |
Hop-by-hop options (in IPv6 extension header) | Not Applicable | No |
Destinations options | Not Applicable | Yes |
Routing (with segment left 0) | Not Applicable | No |
Routing (with segment left > 0) | Not Applicable | No |
TCP, UDP, or ICMP | Not Applicable | Yes |
Authentication | Not Applicable | No |
Any other next header field in main or extension headers | Not Applicable | No |
IPv4 packet has TCP header with Options fields | Yes | Yes |
IPv4 Tunnels: | ||
IPv4 packet in an IPv4 tunnel | Yes (IPv4 tunnel header) | No |
IPv6 packet in an IPv4 tunnel | Yes (IPv4 tunnel header) | No |
IPv6 Tunnels: | ||
IPv4 packet in an IPv6 tunnel | Not applicable | No |
IPv6 packet in an IPv6 tunnel | Not applicable | No |
IPv4 packet has 802.3ac tag (with C-VLAN Tag or S-VLAN Tag when enabled). | Yes | Yes |
IPv6 packet has 802.3ac tag (with C-VLAN Tag or S-VLAN Tag when enabled). | Not applicable | Yes |
IPv4 frames with security features (such as encapsulated security payload) | Yes | No |
IPv6 frames with security features (such as encapsulated security payload) | Not applicable | No |