
DS3134
122 of 203
DMA Linking of Packets (Horizontal Link Listing)
The transmit DMA also has the ability to link packets together. Internally, the transmit DMA can store up
to two packets chains but if the Host places more packet chains into the Pending Queue, then the transmit
DMA must begin linking these chains together externally. The transmit DMA does this by writing to
Packet Descriptors. As an example, see Figure 8.2.1C. If columns 1 and 2 were the only two packet
chains queued for transmission, then the transmit DMA would not need to begin linking packet chains
together but as soon as column 3 was queued for transmission, the transmit DMA had to store the third
chain externally because it had no more room internally. The transmit DMA links the packet chain in the
third column to the one in the second column by writing the 1st descriptor of the third chain in the Next
Pending Descriptor Pointer field of the 1st descriptor of the second column (it also sets the PV bit to one).
As shown in Figure 8.2.1C, this chaining was carried one step farther to link the forth column to the third.
Priority Packets
The Host has the option to change the order in which packets are transmitted by the DMA. If the Host
sets the Priority Packet (PRI) bit in the Pending Queue Descriptor to a one, then the transmit DMA knows
that this packet is a priority packet and should be transmitted ahead of all standard packets. The rules for
packet transmission are:
1. Priority packets will be transmitted as soon as the current standard packet (not packet chain) finishes
transmission.
2. All priority packets will be transmitted before any more standard packets are transmitted.
3. Priority packets are ordered on a first come, first served basis.
Figure 8.2.1D provides an example of a set of priority packets interrupting a set of standard packets. In
the example, the first priority packet chain (shown in column 2) was read by the transmit DMA from the
Pending Queue while it was transmitting standard packet #1. It waited until standard packet #1 was
complete and then begins sending the priority packets. While column 2 was being sent, the priority
packet chains of columns 3 and 4 arrived in the Pending Queue so the transmit DMA linked column four
to column three and then waited until all of the priority packets were transmitted before returning to the
standard packet chain in column 1. Note that the packet chain in column 1 was interrupted to transmit the
priority packets.
In other words, the transmit DMA did not wait for the complete packet to finish
transmitting, only the current packet.