Intel 324632-003 Switch User Manual


 
Intel
®
82575EB Gigabit Ethernet Controller — Transmit Data Storage
Intel
®
82575EB Gigabit Ethernet Controller 324632-003
Software Developer’s Manual and EEPROM Guide Revision: 2.1
134 January 2011
Output packets are made up of pointer–length pairs constituting a descriptor chain (so called descriptor
based transmission). Software forms transmit packets by assembling the list of pointer–length pairs,
storing this information in the transmit descriptor, and then updating the on–chip transmit tail pointer
to the descriptor. The transmit descriptor and buffers are stored in host memory. Hardware typically
transmits the packet only after it has completely fetched all packet data from host memory and
deposited it into the on-chip transmit FIFO. This permits TCP or UDP checksum computation, and avoids
problems with PCIe* underruns.
Another transmit feature is TCP Segmentation. The hardware has the capability to perform packet
segmentation on large data buffers off-loaded from the Network Operating System (NOS). This feature
is described in detail in Section 5.8.
5.6.1 Transmit Data Storage
Data are stored in buffers pointed to by the descriptors. Alignment of data is on an arbitrary byte
boundary with the maximum size per descriptor limited only to the maximum allowed packet size (9018
bytes). A packet typically consists of two (or more) descriptors, one (or more) for the header and one
for the actual data. Some software implementations copy the header(s) and packet data into one buffer
and use only one descriptor per transmitted packet.
5.6.2 Transmit Contexts
The 82575 provides hardware checksum offload and TCP 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 are handled though contexts.
A context refers to a set of device registers loaded or accessed as a group to provide a particular
function. The 82575 supports 16 context register sets on-chip. The transmit queues can contain
Transmit Data Descriptors, much like the receive queue, and also Transmit Context Descriptors.
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 contexts that support the transmit checksum
offloading and the segmentation features of the 82575.
The 82575 supports one type of transmit context: the extended context is written with a Transmit
Context Descriptor DTYP = 2 and this context is always used for Transmit Data Descriptor DTYP = 3.
The IDX field contains an index to one of 16 on-chip contexts. Software must track what context is
stored in each IDX location. Also, each advanced descriptor must refer to a context unless no offload is
needed.
Contexts can be initialized with a Transmit Context Descriptor and then used for a series of related
Transmit Data Descriptors. The context, for example, defines the checksum and offload capabilities for
a given type of TCP/IP flows. All packets of this type can be sent using this context.
Contexts should only be over written by a Transmit Context Descriptor when there are no Transmit Data
Descriptors in any queue that point to it. This is the only way for software to ensure that the correct
context is used for the data. If context are statically allocated to queues and there are no cross
referencing between data descriptor from one queue and context descriptor of another queue, then
there are no limitation on the context descriptor setting.