Receive and Transmit Description
Software Developer’s Manual 65
Three specific types of checksum are supported by the hardware in the context of the TCP
Segmentation offload feature:
• IPv4 checksum (IPv6 does not have a checksum)
• TCP checksum
• UDP checksum
Each packet that is sent via the TCP segmentation offload feature optionally includes the IPv4
checksum and either the TCP or UDP checksum.
All checksum calculations use a 16-bit wide one’s complement checksum. The checksum word is
calculated on the outgoing data. The checksum field is written with the 16 bit one’s complement of
the one’s complement sum of all 16-bit words in the range of CSS to CSE, including the checksum
field itself.
3.5.9 IP/TCP/UDP Header Updating
IP/TCP/UDP header is updated for each outgoing frame based on the IP/TCP header prototype
which hardware transfers from the first descriptor(s) and stores on chip. The IP/TCP/UDP headers
are fetched from host memory into an on-chip 240 byte header buffer once for each TCP
segmentation context (for performance reasons, this header is not fetched again for each additional
packet that is derived from the TCP segmentation process). The checksum fields and other header
information are later updated on a frame by frame basis. The updating process is performed
concurrently with the packet data fetch.
The following sections define which fields are modified by hardware during the TCP Segmentation
process by the Ethernet controller. Figure 3-19 illustrates the overall data flow.