Data Sheet
Ethernet Controller I210 —Inline Functions
300
Note: The starvation level of a queue corresponds to the number of descriptors above the prefetch
threshold (TXDCTL[n].PTHRESH) that are already in the internal queue. The queue is more
starved if there are less descriptors in the internal transmit descriptor cache. Comparing
starvation level might be done roughly, not at the single descriptor level of resolution.
A queue is considered empty for the transmit descriptor fetch algorithm as long as:
• There is still no complete packet (single or large send) in its corresponding internal queue.
• There is no descriptor already in its way from system memory to the internal cache.
• The internal corresponding internal descriptor cache is not full.
Each time a descriptor fetch request is sent for an empty queue, the maximum available number of
descriptor is requested, regardless of cache alignment issues.
When the on-chip buffer is nearly empty (below TXDCTL[n].PTHRESH), a prefetch is performed each
time enough valid descriptors (TXDCTL[n].HTHRESH) are available in host memory and no other DMA
activity of greater priority is pending (descriptor fetches and write-backs or packet data transfers).
When the number of descriptors in host memory is greater than the available on-chip descriptor
storage, the I210 might elect to perform a fetch that is not a multiple of cache-line size. Hardware
performs this non-aligned fetch if doing so results in the next descriptor fetch being aligned on a cache-
line boundary. This enables the descriptor fetch mechanism to be more efficient in the cases where it
has fallen behind software.
Note: The I210 NEVER fetches descriptors beyond the descriptor tail pointer.
7.2.2.6 Transmit Descriptor Write-Back
The descriptor write-back policy for transmit descriptors is similar to that of the receive descriptors
when the TXDCTL[n].WTHRESH value is not 0x0. In this case, all descriptors are written back
regardless of the value of their RS bit.
When the TXDCTL[n].WTHRESH value is 0x0, since transmit descriptor write-backs do not happen for
every descriptor, only transmit descriptors that have the RS bit set are written back.
Any descriptor write-back includes the full 16 bytes of the descriptor.
Since the benefit of delaying and then bursting transmit descriptor write-backs is small at best, it is
likely that the threshold is left at the default value (0x0) to force immediate write-back of transmit
descriptors with their RS bit set and to preserve backward compatibility.
Descriptors are written back in one of three cases:
• TXDCTL[n].WTHRESH = 0x0 and a descriptor which has RS set is ready to be written back.
• The corresponding EITR counter has reached zero.
Note: When a packet spreads over multiple descriptors, all the descriptor fields are only valid in the
first descriptor of the packet, except for RS, which is always checked, DTALEN that reflects
the size of the buffer in the current descriptor and EOP, which is always set at last descriptor
of the series.
7.2.2.7 Transmit Descriptor Ring Structure
• TXDCTL[n].WTHRESH > 0x0 and TXDCTL[n].WTHRESH descriptors have accumulated.