Registering NDIS QoS Capabilities

Miniport drivers register the following Quality of Service (QoS) capabilities with NDIS during network adapter initialization:

  • The NDIS QoS hardware capabilities that the network adapter supports.

    Note Starting with NDIS 6.30, the miniport driver must register the NDIS QoS hardware capabilities that the adapter supports only if the*QOS INF keyword setting is present in the registry. In this case, the driver must register its NDIS QoS hardware capabilities regardless of whether those capabilities are enabled or disabled on the adapter.

  • The NDIS QoS hardware capabilities that are currently enabled on the network adapter.

    Note A miniport driver's NDIS QoS hardware capabilities can be enabled or disabled through the *QOS INF keyword setting in the registry. This setting is displayed on the Advanced property page for the network adapter.

For more information about the NDIS QoS INF keyword settings, see Standardized INF Keywords for NDIS QoS.

The miniport driver reports the hardware NDIS QoS capabilities of the underlying network adapter through an NDIS_QOS_CAPABILITIES structure that is initialized in the following way:

  1. The miniport driver initializes the Header member. The driver sets the Type member of Header to NDIS_OBJECT_TYPE_QOS_CAPABILITIES.

    Starting with NDIS 6.30, the miniport driver sets the Revision member of Header to NDIS_QOS_CAPABILITIES_REVISION_1 and the Size member to NDIS_SIZEOF_QOS_CAPABILITIES_REVISION_1.

  2. If the network adapter supports the strict priority transmission selection algorithm (TSA), the miniport driver sets the NDIS_QOS_CAPABILITIES_STRICT_TSA_SUPPORTED flag in the Flags member. For more information on this algorithm, see Strict Priority Algorithm.

    Note  Starting with NDIS 6.30, the miniport driver and network adapter that support NDIS QoS for IEEE Data Center Bridging (DCB) must support the strict priority TSA.

  3. If the network adapter supports the ability to bypass media access control security (MACsec) processing, the miniport driver sets the NDIS_QOS_CAPABILITIES_MACSEC_BYPASS_SUPPORTED flag in the Flags member. For more information about MACsec, refer to the IEEE 802.1AE-2006 standard.

    Note  Starting with NDIS 6.30, the network adapter does not need to support the bypass of MACsec processing.

  4. The miniport driver sets the MaxNumTrafficClasses member to the maximum number of NDIS QoS traffic classes that the network adapter supports. A traffic class defines the transmit, or egress policies for QoS, such as IEEE 802.1p priority level and bandwidth allocation. For more information about traffic classes, see NDIS QoS Traffic Classes.

    Note  Starting with NDIS 6.30, the network adapter must support a minimum of three traffic classes.

  5. The miniport driver sets the MaxNumEtsCapableTrafficClasses member to the maximum number of NDIS QoS traffic classes that the network adapter can use with the Enhanced Transmission Selection (ETS) algorithm. This value must be less than or equal to the value of the MaxNumTrafficClasses member.

    For more information on ETS, see Enhanced Transmission Selection (ETS) Algorithm.

    Note  For the network adapter to support NDIS QoS, it must support a minimum of two ETS-capable traffic classes.

  6. The miniport driver sets the MaxNumPfcEnabledTrafficClasses member to the maximum number of NDIS QoS traffic classes that the network adapter can use with the Priority-based Flow Control (PFC) algorithm. This value must be less than or equal to the value of the MaxNumTrafficClasses member.

    For more information on PFC, see Priority-based Flow Control (PFC).

    Note  For the network adapter to support NDIS QoS, it must support at least one PFC-capable traffic class.

When NDIS calls the miniport driver's MiniportInitializeEx function, the driver registers the NDIS QoS attributes of the network adapter by following these steps:

  1. The miniport driver initializes an NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES structure.

    The miniport driver sets the HardwareQOSCapabilities member to a pointer to the previouslyinitialized NDIS_QOS_CAPABILITIES structure.

    If the registry setting for the *QOS INF keyword has a value of one, the NDIS QoS capabilities are enabled on the network adapter. The miniport driver sets the CurrentQOSCapabilities members to a pointer to the same NDIS_QOS_CAPABILITIES structure.

    If the registry setting for the *QOS INF keyword has a value of zero, the NDIS QoS capabilities are disabled on the network adapter. The miniport driver must set the CurrentQOSCapabilities member to NULL.

  2. The driver calls NdisMSetMiniportAttributes and sets the MiniportAttributes parameter to a pointer to the NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES structure.

For more information about the adapter initialization process, see Initializing a Miniport Adapter.