Technical information

3-1
3
▼▼▼▼
Transmit Architecture
Features
The main features of Transmit Architecture are
Two Buffer Descriptor Queues in the Host Memory. One for high-priority packets
and one for low-priority packets.
Driver notifies the transmit block to start transmitting packets by writing the
“Producer Index” of descriptor queues to its internal register. Producer and
consumer indices are 11-bit pointers to an 8-byte descriptor in the queue. The
transmit block does not poll host memory for new packets.
Five descriptor types are supported. Descriptors can be categorized as “frame
descriptors”, which contain multiple buffer pointers in one descriptor format, and as
“buffer descriptors”, which contain one buffer pointer in one descriptor format. The
driver must program the descriptor type at initialization time.
Buffer descriptors (type 1 and 2) are multiples of either 8- or 16-bytes depending on
whether the address is 32-bit or 64-bit. Frame descriptors (types 0, 3, and 4) can be
either fixed size or variable size. In fixed-size mode, the frame size is defined in the
“MinFrameDescSpacing” register, regardless of the number of buffer segments in
the frame. In variable size mode, frame descriptors’ size is the sum of total buffer
segments. There is a “Skip field” defined in front of each descriptor to reserve space
for the driver to store information. The “Skip field” size varies from 0 bytes to 128
bytes and is programmed by the driver at initialization time. The AIC-6915 does not
read or write to the “Skip field”.
The descriptor queue size has a maximum size of 16KBytes. The actual length is
variable with the end of queue defined by the “End” bit. The definition of the “End”
bit is described in the Descriptor Queue section. Both high-priority and low-priority
queues have base addresses aligned on a 256-byte boundary.
The transmit DMA module returns buffers to the host by DMA-transferring the
“Completion Descriptors” to the completion queue in the host memory. As soon as
the DMA transfer completes, the packet is considered “done” and returned to the
host.