Reimplements Host Rx
It reuses part of the old implementation, but is cleaner due to the introduction of packet_mdata.
There is a possible race conditions handling that may be buggy. but
normally it is ok since there is a double check that happens in this
case that would prevent that.