IP/TCP/UDP Header Updating — Intel
®
82575EB Gigabit Ethernet Controller
324632-003 Intel
®
82575EB Gigabit Ethernet Controller
Revision: 2.1 Software Developer’s Manual and EEPROM Guide
January 2011 157
5.8.7.1 TCP/IP/UDP Header for the First Frame
The hardware makes the following changes to the headers of the first packet that is derived from each
TCP segmentation context.
• MAC Header (for SNAP)
— Type/Len field = MSS + MACLEN + IPLEN + L4LEN - 14
• IPv4 Header
— IP Total Length = MSS + L4LEN – IPLEN
— IP Checksum
• IPv6 Header
— Payload Length = MSS + L4LEN + IPV6_HDR_extension
• TCP Header
— Sequence Number: The value is the sequence number of the first TCP byte in this frame.
— If FIN flag = 1b, it is cleared in the first frame.
— If PSH flag =1b, it is cleared in the first frame.
— TCP Checksum
• UDP Header
— UDP length: MSS + L4LEN
— UDP Checksum
5.8.7.2 TCP/IP/UDP Header 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:
Note: 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
• IPv4 Header
— IP Identification: incremented from last value (wrap around)
— IP Total Length = MSS + L4LEN + IPLEN
— IP Checksum
• IPv6 Header
— Payload Length = MSS + L4LEN + IPV6_HDR_extension
• 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.
— If FIN flag = 1b, it is cleared in these frames.
— If PSH flag =1b, it is cleared in these frames.
— TCP Checksum
• UDP Header
— UDP Length: MSS + L4LEN