Intel 82546GB/EB Network Card User Manual


 
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 Table 3-6 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