In reply to farshad112:
To create a pipelined driver you can use a semaphore to synchronize the control and data phases of data transfers.
Check this cookbook link on pipelined driver to understand the implementation.
Note that the above implementation doesn’t take care of out-of-ordering. It need to be taken care of.