Intel PCI User Manual

Page of 406
Receive and Transmit Description
32
Software Developer’s Manual
The Packet checksum is the one’s complement over the receive packet, starting from the byte 
indicated by RXCSUM.PCSS (0b corresponds to the first byte of the packet), after stripping. For 
example, for an Ethernet II frame encapsulated as an 802.3ac VLAN packet and with 
RXCSUM.PCSS set to 14 decimal, the Packet Checksum would include the entire encapsulated 
frame, excluding the 14-byte Ethernet header (DA,SA,Type/Length) and the 4-byte q-tag. The 
Packet checksum does not include the Ethernet CRC if the RCTL.SECRC bit is set. 
Software must make the required offsetting computation (to back out the bytes that should not have 
been included and to include the pseudo-header) prior to comparing the Packet Checksum against 
the TCP checksum stored in the packet. 
For supported packet/frame types, the entire checksum calculation may be offloaded to the 
Ethernet controller. If RXCSUM.IPOFLD is set to 1b, the controller calculates the IP checksum 
and indicates a pass/fail condition to software by means of the IP Checksum Error bit 
(RDESC.IPE) in the ERROR field of the receive descriptor. Similarly, if the RXCSUM.TUOFLD 
is set to 1b, the Ethernet controller calculates the TCP or UDP checksum and indicates a pass/fail 
condition to software by means of the TCP/UDP Checksum Error bit (RDESC.TCPE). These error 
bits are valid when the respective status bits indicate the checksum was calculated for the packet 
(RDESC.IPCS and RDESC.TCPCS).
If neither RXCSUM.IPOFLD nor RXCSUM.TUOFLD is set, the Checksum Error bits (IPE and 
TCPE) is 0b for all packets.
Supported Frame Types include:
Ethernet II
Ethernet SNAP
Note: See 
 for the 82544GC/EI supported receive checksum capabilities.
Table 3-5. Supported Receive Checksum Capabilities
Packet Type
HW IP Checksum 
Calculation
HW TCP/UDP Checksum 
Calculation
IPv4 packets
Yes
Yes
IPv6 packets
No (n/a)
Yes
IPv6 packet with next header options:
Hop-by-Hop options
Destinations options
Routing
Fragment
No (n/a)
No (n/a)
No (n/a)
No (n/a)
Yes
Yes
Yes
No
IPv4 tunnels:
    IPv4 packet in an IPv4 tunnel
    IPv6 packet in an IPv4 tunnel
No
Yes (IPv4)
No
Yes
a
IPv6 tunnels:
    IPv4 packet in an IPv6 tunnel
    IPv6 packet in an IPv6 tunnel
No
No
No
No
Packet is an IPv4 fragment
Yes
No 
Packet is greater than 1552 bytes; 
(LPE=1b)
b
Yes
Yes
Packet has 802.3ac tag
Yes
Yes