reorganized code to reuse existing link_head/link_tail
also got code for starting DMA if needed...