Intel
®
82575EB Gigabit Ethernet Controller — IP/TCP/UDP Header Updating
Intel
®
82575EB Gigabit Ethernet Controller 324632-003
Software Developer’s Manual and EEPROM Guide Revision: 2.1
156 January 2011
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.
Table 47. Supported Transmit Checksum Capabilities
Table 48 lists the conditions of when checksum offloading can/should be calculated.
Table 48. Calculating Checksum Offloading
5.8.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 transfers from the first descriptor(s) and stores on chip. The IP/TCP/UDP headers are fetched
from host memory into an on-chip 512 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 82575.
Note: Software must make the PAYLEN and HDRLEN values of context descriptors correct.
Otherwise, the failure of large send due to either under-run or over-run might cause
hardware to send bad packets or even cause transmit hardware to hang. The indication of
large send failure can be checked in the TSCTFC statistic register.
Packet Type HW IP Checksum Calculation
HW TCP/UDP Checksum
Calculation
IPv4 packets Yes Yes
IPv6 packets
(no ip checksum in Ipv6)
NA Yes
Packet is greater than 1552 bytes; (LPE = 1b) Yes Yes
Packet has 802.3ac tag Yes Yes
Packet has IP options
(IP header is longer than 20 bytes)
Yes Yes
Packet has TCP or UDP options Yes Yes
IP header’s protocol field contains a protocol # other than
TCP or UDP
Yes No
Packet Type IPv4 TCP/UDP Reason
Non TSO Yes No IP raw packet (non TCP/UDP protocol)
Yes Yes TCP segment or UDP datagram with checksum offload
No No Non-IP packet or checksum not offloaded
TSO Yes Yes For TSO, checksum offload must be done