Data Sheet
Inline Functions—Ethernet Controller I210
285
Note: When the software device driver computes the 16-bit ones complement, the sum on the
incoming packets of the UDP fragments, it should expect a value of 0xFFFF. Refer to
Section 7.1.7 for supported packet formats.
7.1.7.3 SCTP Offload
If a receive packet is identified as SCTP, the I210 checks the CRC32 checksum of this packet if the
RXCSUM.CRCOFL bit is set to 1b and identifies this packet as SCTP. Software is notified on the
execution of the CRC check via the L4I bit in the Extended Status field of the Rx descriptor and is
notified on detection of a CRC error via the L4E bit in the Extended Error field of the RX descriptor. The
detection of a SCTP packet is indicated via the SCTP bit in the packet Type field of the Rx descriptor.
The following SCTP packet format is expected to enable support of the SCTP CRC check:
Table 7-22. SCTP Header
7.2 Transmit Functionality
7.2.1 Packet Transmission
Output packets to be transmitted are created using pointer-length pairs constituting a descriptor chain
(descriptor based transmission). Software forms transmit packets by assembling the list of pointer-
length pairs, storing this information in one of the transmit descriptor rings, and then updating the
adequate on-chip transmit tail pointer. The transmit descriptors and buffers are stored in host memory.
Hardware typically transmits the packet only after it has completely fetched all the packet data from
host memory and stored it into the on-chip transmit FIFO (store and forward architecture). This permits
TCP or UDP checksum computation and avoids problems with PCIe under-runs. Another transmit
feature of the I210 is TCP/UDP segmentation. The hardware has the capability to perform packet
segmentation on large data buffers offloaded from the Network Stack. This feature is discussed in detail
in Section 7.2.4.
Table 7-21. Descriptor Fields
Incoming Packet Type
Fragment Checksum (if
RXCSUM.PCSD is cleared)
UDPV UDPCS / L4CS /L4I
Non IP Packet Packet checksum 0b 0b / 0b /0b
IPv6 Packet Packet checksum 0b
Depends on transport
header.
Non fragmented IPv4 packet Packet checksum 0b
Depends on transport
header.
Fragmented IPv4, when not first
fragment
The unadjusted one’s complement
checksum of the IP payload.
0b 1b / 0b / 0b
Fragmented IPv4, for the first
fragment
Same as above
1 if the UDP header
checksum is valid (not
zero)
1b / 0b / 0b
0 1 2 3 4 5 6 7
1
8 9 0 1 2 3 4 5
2
6 7 8 9 0 1 2 3
3
4 5 6 7 8 9 0 1
Source Port Destination Port
Verification Tag
Checksum
Chunks 1...n