Data Sheet

Inline Functions—Ethernet Controller I210
287
Each advanced data descriptor that uses any of the advanced offloading features must refer to a
context.
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 flow. All packets of this type can be sent using this context.
Software is responsible for ensuring that a context is only overwritten when it is no longer needed.
Hardware does not include any logic to manage the on-chip contexts; it is completely up to software to
populate and then use the on-chip context table.
Note: Software should not queue more than two context descriptors in sequence without an
intervening data descriptor, to achieve adequate performance.
Each context defines information about the packet sent including the total size of the MAC header
(TDESC.MACLEN), the maximum amount of payload data that should be included in each packet
(TDESC.MSS), UDP or TCP header length (TDESC.L4LEN), IP header length (TDESC.IPLEN), and
information about what type of protocol (TCP, IP, etc.) is used. Other than TCP, IP (TDESC.TUCMD),
most information is specific to the segmentation capability.
Because there are dedicated on-chip resources for contexts, they remain constant until they are
modified by another context descriptor. This means that a context can be used for multiple packets (or
multiple segmentation blocks) unless a new context is loaded prior to each new packet. Depending on
the environment, it might be unnecessary to load a new context for each packet. For example, if most
traffic generated from a given node is standard TCP frames, this context could be setup once and used
for many frames. Only when some other frame type is required would a new context need to be loaded
by software. This new context could use a different index or the same index.
This same logic can also be applied to the TCP/UDP segmentation scenario, though the environment is
a more restrictive one. In this scenario, the host is commonly asked to send messages of the same
type, TCP/IP for instance, and these messages also have the same Maximum Segment Size (MSS). In
this instance, the same context could be used for multiple TCP messages that require hardware
segmentation.
7.2.2 Transmit Descriptors
The I210 supports legacy descriptors and the I210 advanced descriptors.
Legacy descriptors are intended to support legacy drivers to enable fast platform power up and to
facilitate debug.
In addition, the I210 supports two types of advanced transmit descriptors:
1. Advanced Transmit Context Descriptor, DTYP = 0010b.
2. Advanced Transmit Data Descriptor, DTYP = 0011b.
Note: DTYP values 0000b and 0001b are reserved.
The transmit data descriptor (both legacy and advanced) points to a block of packet data to be
transmitted. The advanced transmit context descriptor does not point to packet data. It contains
control/context information that is loaded into on-chip registers that affect the processing of packets for
transmission. The following sections describe the descriptor formats.