Allocating adapter channels

I have defined a DEVICE_OBJECT for send operations and a DEVICE_OBJECT for
receive operations. Each DO has an Adapter assigned via HalGetAdapter with
MaximumLength set to the same length.

When doing a send and calling IoAllocateAdapterChannel, the callback
function is called and data is transferred to the adapter. However, when
doing a receive the callback function is NEVER called and the IRP eventually
times out. Does anyone have any insight on this?