NdisMWanIndicateReceiveComplete

VOID
NdisMWanIndicateReceiveComplete(
IN NDIS_HANDLE MiniportAdapterHandle
);

NdisMWanIndicateReceiveComplete notifies NDISWAN that one or more receives have been completed so that NDISWAN can notify the appropriate bound protocol(s).

Parameters

MiniportAdapterHandle

Specifies the handle originally input to MiniportInitialize.

Comments

After any WAN receive indication, a miniport must eventually call NdisMWanIndicateReceiveComplete.

NdisMWanIndicateReceiveComplete both indicates the completion of a transfer operation for a receive and notifies any bound protocol that has already consumed the initial indication that it can begin postprocessing the received data.

When a miniport calls NdisMWanIndicateReceiveComplete, NDISWAN calls the ProtocolReceiveComplete function(s) of bound protocol driver(s). ProtocolReceiveComplete functions need not operate under the severe time constraints of the corresponding ProtocolReceive functions.

A WAN miniport need not call NdisMWanIndicateReceiveComplete in one-to-one correspondence with its calls to NdisMWanIndicateReceive. That is, a NIC driver can issue a single receive-complete indication for some number of receive indications, particularly when a sequence of receives is coming in to its NIC. Such a driver can call NdisMWanIndicateReceiveComplete after several calls to NdisMWanIndicateReceive have occurred, thereby giving bound protocols the opportunity to notify clients of received packets without incurring the overhead of processing one-to-one completion notifications. As a general rule, a miniport should call NdisMWanIndicateReceiveComplete once for every ten receive indications when network traffic is high.

On the other hand, a miniport might call NdisMWanIndicateReceiveComplete once for each indication when network traffic is low so that the driver can regain ownership of the memory it allocated for receives promptly.

A ProtocolReceive function is re-entrant, and ProtocolReceiveComplete can run concurrently with ProtocolReceive, particularly in SMP machines.

Callers of NdisMWanIndicateReceiveComplete run at IRQL DISPATCH_LEVEL.

See Also

MiniportInitialize, NdisMWanIndicateReceive, ProtocolReceive, ProtocolReceiveComplete