Receive and Transmit Description

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-6for the 82544GC/EI supported receive checksum capabilities.

Table 3-5. Supported Receive Checksum Capabilities

Packet Type

HW IP Checksum

HW TCP/UDP Checksum

Calculation

Calculation

 

 

 

 

IPv4 packets

Yes

Yes

 

 

 

IPv6 packets

No (n/a)

Yes

 

 

 

IPv6 packet with next header options:

 

 

Hop-by-Hop options

No (n/a)

Yes

Destinations options

No (n/a)

Yes

Routing

No (n/a)

Yes

Fragment

No (n/a)

No

 

 

 

IPv4 tunnels:

 

 

IPv4 packet in an IPv4 tunnel

No

No

IPv6 packet in an IPv4 tunnel

Yes (IPv4)

Yesa

IPv6 tunnels:

 

 

IPv4 packet in an IPv6 tunnel

No

No

IPv6 packet in an IPv6 tunnel

No

No

 

 

 

Packet is an IPv4 fragment

Yes

No

 

 

 

Packet is greater than 1552 bytes;

Yes

Yes

(LPE=1b)b

Packet has 802.3ac tag

Yes

Yes

 

 

 

32

Software Developer’s Manual

Page 46
Image 46
Intel PCI-X manual Supported Receive Checksum Capabilities, Packet Type HW IP Checksum HW TCP/UDP Checksum Calculation