English
Language : 

82598EB Datasheet, PDF (267/596 Pages) Intel Corporation – Intel® 82598EB 10 Gigabit Ethernet Controller Datasheet
Intel® 82598EB 10 GbE Controller - Transmit Functionality
3.5.3.4.7 IP/TCP/UDP Header Updating
IP/TCP/UDP header is updated for each outgoing frame based on the IP/TCP header prototype which
hardware DMA's 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 what fields are modified by hardware during the TCP segmentation
process by the 82598.
Note:
Software must make PAYLEN and HDRLEN value of context descriptors correct. Otherwise,
the failure of TSOs due to either under-run or over-run can cause hardware to send bad
packets or even cause TX hardware to hang. The indication of a TSO failure can be checked in
the TSTFC statistic register.
3.5.3.4.7.1 TCP/IP/UDP Header for the first Frames
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 + IPLEN – 0x28 (IP base header length)
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
3.5.3.4.7.2 TCP/IP/UDP Header for the Subsequent Frames
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). N is the number of frames that have been
transmitted.
MAC Header (for SNAP packets)
• Type/Len field = MSS + MACLEN + IPLEN + L4LEN – 14
267