none
NDIS LWF and Ethernet PAUSE frames RRS feed

  • Question

  • Hello forum,

    I'd like to find out if an NDIS 6+ LWF needs to handle Ethernet PAUSE frames (http://en.wikipedia.org/wiki/Ethernet_flow_control) specially ? My understanding is that Ethernet PAUSE frames and flow control features are entirely handled by the Ethernet NIC's Miniport driver. The LWFs and Protocols do not process the PAUSE frames (they probably won't even see the PAUSE frames if the Miniport driver consumes them). Is this understanding correct ?

    Or more specifically, if the NIC receives a PAUSE frame, the Miniport driver or NIC itself is responsible for stopping sending more frames, even if the LWFs or Protocols are actively sending NET_BUFFER_LISTs to the Miniport. Am I right ? Or are there any status indications from the Miniport to throttle the LWFs and Protocols on reception of a PAUSE frame instead ?

    Thanks !

    - hao

    Thursday, December 20, 2012 12:09 AM

Answers

  • Your understanding is correct.  Hardware consumes received PAUSE frames, and the frames are never delivered up to the host OS.  Hardware performs the necessary throttling without involvement from the OS.

    Hardware also implements the logic needed to send PAUSE frames when its queue is backlogged.  This too requires no involvement from the host OS.

    The only way that the host OS is involved is in management: the host can decide whether PAUSE is supported on TX, RX, both, or neither using the *FlowControl keyword.  Also, the host is informed of the currently-negotiated PAUSE state in NDIS_LINK_STATE, although in practice many miniport drivers indicate that field incorrectly.

    In short, 99% of LWFs shouldn't have to worry about PAUSE frames.

    • Marked as answer by Hao Zhuang Thursday, December 20, 2012 3:49 AM
    Thursday, December 20, 2012 2:13 AM