Data Sheet
Ethernet Controller I210 —Inline Functions
286
In addition, the I210 supports SCTP offloading for transmit requests. See section Section 7.2.5.3 for
details about SCTP.
Table 1-11 provides a high level description of all data/control transformation steps needed for sending
Ethernet packets to the line.
7.2.1.1 Transmit Data Storage
Data is stored in buffers pointed to by the descriptors. The data can be aligned to arbitrary byte
boundary with the maximum size per descriptor limited only to the maximum allowed packet size (9728
bytes). A packet typically consists of two (or more) buffers, one (or more) for the header and one for
the actual data. Each buffer is referenced by a different descriptor. Some software implementations
might copy the header(s) and packet data into one buffer and use only one descriptor per transmitted
packet.
7.2.1.2 On-Chip Transmit Buffers
The I210 allocates by default a 24 KB on-chip packet buffer. The buffers are used to store packets until
they are transmitted on the line. Actual on-chip transmit buffer allocated is controlled by the TXPBSIZE
register.
7.2.1.3 On-Chip descriptor Buffers
The I210 contains a 24 descriptor cache for each transmit queue used to reduce the latency of packet
processing and to optimize the usage of the PCIe bandwidth by fetching and writing back descriptors in
bursts. The fetch and write-back algorithm are described in Section 7.2.2.5 and Section 7.2.2.6.
7.2.1.4 Transmit Contexts
The I210 provides hardware checksum offload and TCP/UDP segmentation facilities. These features
enable TCP and UDP packet types to be handled more efficiently by performing additional work in
hardware, thus reducing the software overhead associated with preparing these packets for
transmission. Part of the parameters used by these features is handled though context descriptors.
A context descriptor refers to a set of device registers loaded or accessed as a group to provide a
particular function. The I210 supports 2x4 context descriptor sets (two per queue) on-chip. The
transmit queues can contain transmit data descriptors (similar to the receive queue) as well as transmit
context descriptors.
The contexts are queue specific and one context cannot be reused from one queue to another. This
differs from the method used in previous devices that supported a pool of contexts to be shared
between queues.
A transmit context descriptor differs from a data descriptor as it does not point to packet data. Instead,
this descriptor provides the ability to write to the on-chip context register sets that support the transmit
checksum offloading and the segmentation features of the I210.
The I210 supports one type of transmit context. This on-chip context is written with a transmit context
descriptor DTYP=2 and is always used as context for transmit data descriptor DTYP=3.
The IDX field contains an index to one of the two queue contexts. Software must track what context is
stored in each IDX location.