Thanks for your reply. I had worried something like this might be the case. In the last couple of days my plan has been to hack the "fifo_with_byteenables" block in the dispatcher to restart the chain.
My understanding is that the descriptors are held in a ram ("the_dp_ram"), so I'm trying to reset the read address to 0 at the end of my descriptor chain. So when "pop" is asserted and read address is at the end of my chain, reset the read address for the descriptor ram to 0 and set the "internal_used" back to its value at the beginning of the chain (I have 8 descriptors for 8 different memory locations). So far it seems to be working well, but I havent finished testing it yet.