In reply to Nagarjuna Chary:
You have some issues in the parallel driver where you are trying to fork processes when you receive packets. The ideal implementation is to have the address/data processes running all the time and waiting for transactions to appear in the queue.
You can see the changes I made here.