If a TX DMA completion interrups a forground write. The TX DMA completion can start a dma_send and it will then followed by the forground write's dma_send stoping the,then in progress DMA. By atomicaly marking the tx dma busy, the forground write will not perform the dma_send, and will only enqueue the data. At the next TX dma completion any data pending in the tx queue will be sent