Receive and Transmit Description

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.9IP/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-19illustrates the overall data flow.

Software Developer’s Manual

65

Page 79
Image 79
Intel PCI-X, Intel Gigabit Ethernet Controllers manual 9 IP/TCP/UDP Header Updating