English
Language : 

82583V Datasheet, PDF (127/374 Pages) Intel Corporation – Intel® 82583V GbE Controller
Inline Functions—82583V GbE Controller
Note:
7.1.6
Note:
7.1.7
If the device is not configured to provide any offload that requires packet parsing, the
packet type field is set to 0b regardless of the actual packet type. When packet split is
enabled, the packet type field is always valid.
Receive Descriptor Fetching
The fetching algorithm attempts to make the best use of PCIe bandwidth by fetching a
cache-line (or more) descriptor with each burst. The following paragraphs briefly
describe the descriptor fetch algorithm and the software control provided.
When the on-chip buffer is empty, a fetch happens as soon as any descriptors are made
available (host writes to the tail pointer). When the on-chip buffer is nearly empty
(RXDCTL.PTHRESH), a prefetch is performed each time enough valid descriptors
(RXDCTL.HTHRESH) are available in host memory and no other PCIe 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 chip might elect to perform a fetch that is not a multiple of
cache line size. The 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 most efficient in the cases where it has fallen behind
software.
The 82583V NEVER fetches descriptors beyond the descriptor tail pointer.
Receive Descriptor Write Back
Processors have cache line sizes that are larger than the receive descriptor size (16
bytes). Consequently, writing back descriptor information for each received packet can
cause expensive partial cache line updates. Two mechanisms minimize the occurrence
of partial line write backs:
• Receive descriptor packing
• Null descriptor padding
The following sections explain these mechanisms.
7.1.7.1
Receive Descriptor Packing
To maximize memory efficiency, receive descriptors are packed together and written as
a cache line whenever possible. Descriptors accumulate and are opportunistically
written out in cache line-oriented chunks. Used descriptors are also explicitly written
out under the following scenarios:
• RXDCTL.WTHRESH descriptors have been used (the specified maximum threshold
of unwritten used descriptors has been reached)
• The last descriptors of the allocated descriptor ring have been used (to enable
hardware to re-align to the descriptor ring start)
• A receive timer expires (RADV or RDTR)
• Explicit software flush (RDTR.FPD)
127