Data Sheet

Ethernet Controller I210 —Inline Functions
306
The TCP Segmentation prototype header is taken from the packet data itself. Software must identity
the type of packet that is being sent (IPv4/IPv6, TCP/UDP, other), calculate appropriate checksum off
loading values for the desired checksum, and calculate the length of the header which is pre-appended.
The header might be up to 240 bytes in length.
Once the TCP Segmentation context has been set, the next descriptor provides the initial data to
transfer. This first descriptor(s) must point to a packet of the type indicated. Furthermore, the data it
points to might need to be modified by software as it serves as the prototype header for all packets
within the TCP Segmentation context. The following sections describe the supported packet types and
the various updates which are performed by hardware. This should be used as a guide to determine
what must be modified in the original packet header to make it a suitable prototype header.
The following summarizes the fields considered by the driver for modification in constructing the
prototype header.
IP Header
For IPv4 headers:
Identification Field should be set as appropriate for first packet to be sent
Header Checksum should be zeroed out unless some adjustment is needed by the driver
TCP Header
Sequence Number should be set as appropriate for first packet of send (if not already)
PSH, and FIN flags should be set as appropriate for LAST packet of send
TCP Checksum should be set to the partial pseudo-header sum as follows (there is a more detailed
discussion of this is Section 7.2.4.6):
UDP Header
Checksum should be set as in TCP header, above
The following sections describe the updating process performed by the hardware for each frame sent
using the TCP Segmentation capability.
Table 7-41. TCP Partial Pseudo-Header Sum for IPv4
IP Source Address
IP Destination Address
Zero Layer 4 Protocol ID Zero
Table 7-42. TCP Partial Pseudo-Header Sum for IPv6
IPv6 Source Address
IPv6 Final Destination Address
Zero
Zero Next Header