A network interface device couples a host computer to a network. The
network interface device includes a processor and a DMA controller. The
processor causes the DMA controller to perform multiple DMA commands
before the processor takes a particular software branch. The processor
issues the DMA commands by placing the DMA commands in a memory and then
pushing values indicative of the DMA commands onto a DMA command queue.
The values are popped off the DMA command queue and are executed by the
DMA controller one at a time. The DMA commands are executed in the same
order that they were issued by the processor. The processor need not
monitor multiple DMA commands to make sure they have all been completed
before the software branch is taken, but rather the processor pops a DMA
command complete queue to make sure that the last of the DMA commands has
been completed.