DMA fix to significantly reduce CPU load

Implements the Linux completion mechanism to handle dma transfers more efficiently.