Data Sheet

Inline Functions—Ethernet Controller I210
309
7.2.4.7.2 TCP/UDP/IP Headers for the Subsequent Frames
The hardware makes the following changes to the headers for subsequent packets that are derived as
part of a TCP segmentation context:
Number of bytes left for transmission = PAYLEN - (N * MSS). Where N is the number of frames that
have been transmitted.
MAC Header (for SNAP Packets)
Type/Len field = MSS + MACLEN + IPLEN + L4LEN - 14 - 4 (if VLAN added by Software)
IPv4 Header
IP Identification: incremented from last value (wrap around based on 16 bit-width)
IP Total Length = MSS + L4LEN + IPLEN
•IP Checksum
IPv6 Header
•Payload Length = MSS + L4LEN + IPV6_HDR_extension
1
TCP Header
Sequence Number update: Add previous TCP payload size to the previous sequence number value.
This is equivalent to adding the MSS to the previous sequence number.
The flag values of the subsequent frames are set by ANDing the flag word in the pseudo header
with the DTXTCPFLGL.TCP_Flg_mid_seg register field. The default value of the
DTXTCPFLGL.TCP_Flg_mid_seg are set so that if the FIN flag and the PSH flag are cleared in these
frames.
TCP Checksum
UDP Header
UDP Length = MSS + L4LEN
•UDP Checksum
7.2.4.7.3 TCP/UDP/IP Headers for the Last Frame
The hardware makes the following changes to the headers for the last frame of a TCP segmentation
context:
Last frame payload bytes = PAYLEN - (N * MSS)
MAC Header (for SNAP Packets)
Type/Len field = Last frame payload bytes + MACLEN + IPLEN + L4LEN - 14 - 4 (if VLAN added by
Software)
IPv4 Header
IP Total Length = last frame payload bytes + L4LEN + IPLEN
IP Identification: incremented from last value (wrap around based on 16 bit-width)
•IP Checksum
1. IPV6_HDR_extension is calculated as IPLEN - 40 bytes.