Data Sheet
Inline Functions—Ethernet Controller I210
281
7.1.7 Receive Packet Checksum and SCTP CRC Offloading
The I210 supports the off loading of four receive checksum calculations: packet checksum, fragment
payload checksum, the IPv4 header checksum, and the TCP/UDP checksum. In addition, SCTP CRC32
calculation is supported as described in Section 7.1.7.3
The packet checksum and the fragment payload checksum shares the same location as the RSS field
and is reported in the receive descriptor when the RXCSUM.PCSD bit is cleared. If the RXCSUM.IPPCSE
is set, the Packet checksum is aimed to accelerate checksum calculation of fragmented UDP packets.
Please refer to Section 7.1.7.2 for a detailed explanation. If RXCSUM.IPPCSE is cleared (the default
value), the checksum calculation that is reported in the Rx Packet checksum field is the unadjusted 16-
bit one’s complement of the packet.
The packet checksum is the 16-bit one's complement of the received packet, starting from the byte
indicated by RXCSUM.PCSS (zero corresponds to the first byte of the packet), after stripping. For
packets with a VLAN header, the packet checksum includes the header if VLAN striping is not enabled
by the CTRL.VME. If a VLAN header strip is enabled, the packet checksum and the starting offset of the
packet checksum exclude the VLAN header due to masking of VLAN header. For example, for an
Ethernet II frame encapsulated as an 802.3ac VLAN packet and CTRL.VME is set and with
RXCSUM.PCSS set to 14, 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 remove 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.
Note: The RXCSUM.PCSS value should point to a field that is before or equal to the IP header start.
Otherwise the IP header checksum or TCP/UDP checksum is not calculated correctly.
For supported packet/frame types, the entire checksum calculation can be off loaded to the I210. If
RXCSUM.IPOFLD is set to 1b, the I210 calculates the IPv4 checksum and indicates a pass/fail indication
to software via the IPv4 Checksum Error bit (RDESC.IPE) in the Error field of the receive descriptor.
Similarly, if RXCSUM.TUOFLD is set to 1b, the I210 calculates the TCP or UDP checksum and indicates a
pass/fail condition to software via the TCP/UDP Checksum Error bit (RDESC.L4E). These error bits are
valid when the respective status bits indicate the checksum was calculated for the packet (RDESC.IPCS
and RDESC.L4CS, respectively).
If neither RXCSUM.IPOFLD nor RXCSUM.TUOFLD are set, the Checksum Error bits (IPE and L4E) are 0b
for all packets.
Supported frame types:
• Ethernet II
• Ethernet SNAP
Table 7-18. Supported Receive Checksum Capabilities
Packet Type
Hardware IP
Checksum Calculation
Hardware TCP/
UDP Checksum
Calculation
Hardware SCTP
CRC Calculation
IPv4 packets. Yes Yes Yes
IPv6 packets. No (n/a) Yes Yes