When a DMA transaction completes (software reads the current DMA completion status queue element and reads status == complete), software processes the resulting DMA data and recycles the source/destination SGL queue elements associated with the transfer as well as the associated DMA source/destination completion status queue elements.
Note: Status queue elements must be written to 0x0 when recycled because software uses a read of non-0 for a status queue element as indication that a DMA transfer is completed. Recycled queue elements are reused when the queue LIMIT pointer wraps back to the position of the recycled elements.