4.5 Full-Duplex Operation

A miniport that runs in full-duplex mode and can simultaneously send and receive on an SMP machine runs faster than a miniport that is serialized on SMP platforms. A miniport that does not support full-duplex is not designed to handle simultaneous sends and receives. For such a miniport, NDIS serializes execution of all its MiniportXxx functions that run at IRQL <= DISPATCH_LEVEL. That is, all the MiniportXxx functions but MiniportISR and MiniportDisableInterrupts are serialized.

In a miniport that operates in full-duplex mode, all entry points but MiniportSend, or MiniportSendPackets if it supports multipacket sends, are serialized. That is, the miniport’s send function can execute concurrently with any of the other MiniportXxx functions in an SMP machine. The only exception is MiniportReset. If a miniport is resetting, it will not get any send requests. Otherwise, possible concurrent execution of the MinportSend(Packets) and other MiniportXxx functions implies the following: