NDIS_QOS_PARAMETERS structure

The NDIS_QOS_PARAMETERS structure specifies the NDIS Quality of Service (QoS) parameters that are enabled on a network adapter that supports the IEEE 802.1 Data Center Bridging (DCB) interface.

Syntax


typedef struct _NDIS_QOS_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  ULONG              Flags;
  ULONG              NumTrafficClasses;
  UCHAR              PriorityAssignmentTable[NDIS_QOS_MAXIMUM_PRIORITIES];
  UCHAR              TcBandwidthAssignmentTable[NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES];
  UCHAR              TsaAssignmentTable[NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES];
  ULONG              PfcEnable;
  ULONG              NumClassificationElements;
  ULONG              ClassificationElementSize;
  ULONG              FirstClassificationElementOffset;
} NDIS_QOS_PARAMETERS, *PNDIS_QOS_PARAMETERS;

Members

Header

The type, revision, and size of the NDIS_QOS_PARAMETERS structure. This member is formatted as an NDIS_OBJECT_HEADER structure.

The miniport driver must set the Type member of Header to NDIS_OBJECT_TYPE_QOS_PARAMETERS. To specify the version of the NDIS_QOS_PARAMETERS structure, the driver must set the Revision member of Header to the following value:

NDIS_QOS_PARAMETERS_REVISION_1

Original version for NDIS 6.30 and later.

Set the Size member to NDIS_SIZEOF_QOS_PARAMETERS_REVISION_1.

Flags

A ULONG value that contains a bitwise OR of flags that specify the status of the NDIS QoS parameters for the network adapter. For more information about this member, see Overview of the Flags Member.

NumTrafficClasses

A ULONG value that specifies the number of NDIS QoS traffic classes that are enabled on the network adapter. Each traffic class is referenced through an identifier in the range from zero to (NumTrafficClasses–1).

Note  The value of the NumTrafficClasses member must be less than or equal to min(NDIS_QOS_MAXIMUM_TRAFFIC_CLASSES, MaxNumTrafficClasses), where MaxNumTrafficClasses is the value of the MaxNumTrafficClasses member that was specified in the NDIS_QOS_CAPABILITIES structure.
 
PriorityAssignmentTable

An array of UCHAR elements that specifies an IEEE 802.1p priority level for each traffic class. The PriorityAssignmentTable array is indexed by the 802.1p priority level (0–7).

Each element contains the traffic class identifier. This identifier is the index of the NDIS_QOS_CLASSIFICATION_ELEMENT structure for the traffic class within the classification array.

Note  Each element in the PriorityAssignmentTable array must be assigned a valid traffic class identifier. A traffic class identifier can be assigned to more than one element in the PriorityAssignmentTable array.
 
TcBandwidthAssignmentTable

An array of UCHAR elements that specifies the percentage of the bandwidth allocation assigned to each traffic class. The TcBandwidthAssignmentTable array is indexed by the traffic class identifier.

Each element of the TcBandwidthAssignmentTable array specifies the bandwidth allocation for the traffic classes. The total value of all bandwidth allocation assignments in the TcBandwidthAssignmentTable array must equal 100.

Note  Bandwidth allocation is supported only for the Enhanced Transmission Selection (ETS) TSA. If the element for the traffic class in the TsaAssignmentTable array is not set to NDIS_QOS_TSA_ETS, the element for the traffic class in the TcBandwidthAssignmentTable array must be set to zero.
 
TsaAssignmentTable

An array of UCHAR elements that specifies the TSA assigned to each traffic class. The TsaAssignmentTable array is indexed by the traffic class identifier.

Each element of the TsaAssignmentTable array contains one of the following values:

NDIS_QOS_TSA_STRICT

The strict priority algorithm must be used as the TSA for the traffic class. For more information about this TSA, see Strict Priority Algorithm.

NDIS_QOS_TSA_CBS

The IEEE 802.1Qav credit-based shaper (CBS) algorithm must be used as the TSA for the traffic class.

Note  Starting with Windows Server 2012, the DCB component (Msdcb.sys) does not support the CBS TSA and won't enable this parameter through object identifier (OID) method requests of OID_QOS_PARAMETERS. For more information on the DCB component, see NDIS QoS Architecture for Data Center Bridging.
 
NDIS_QOS_TSA_ETS

The IEEE 802.1Qaz Enhanced Transmission Selection (ETS) algorithm must be used as the TSA for the traffic class. For more information about this TSA, see Enhanced Transmission Selection (ETS) Algorithm.

PfcEnable

A bitmap of 32 bits. The most-significant 24 bits are reserved for future use. The least-significant 8 bits are used to specify whether PFC is enabled on the IEEE 802.1p priority level. If the bit is set to one, PFC is enabled for the priority level.

Bit rangeMeaning
31:24Reserved for future use.
7If set to one, PFC is enabled on 802.1p priority level 7 (network control).
6If set to one, PFC is enabled on 802.1p priority level 6 (internetwork control).
5If set to one, PFC is enabled on 802.1p priority level 5 (voice).
4If set to one, PFC is enabled on 802.1p priority level 4 (video).
3If set to one, PFC is enabled on 802.1p priority level 3 (critical applications).
2If set to one, PFC is enabled on 802.1p priority level 2 (excellent effort).
1If set to one, PFC is enabled on 802.1p priority level 1 (background).
0If set to one, PFC is enabled on 802.1p priority level 0 (best effort).

 

Note  The total number of 802.1p priority levels that have PFC enabled must be less than or equal to the value of the MaxNumPfcEnabledTrafficClasses member in the NDIS_QOS_CAPABILITIES structure.
 

For more information about priority levels, see IEEE 802.1p Priority Levels.

NumClassificationElements

A ULONG value that specifies the number of elements in the traffic classification array. The offset to the first element in this array is specified by the FirstClassificationElementOffset member.

Note  Each element in the array is formatted as an NDIS_QOS_CLASSIFICATION_ELEMENT structure.
 
ClassificationElementSize

A ULONG value that specifies the size, in bytes, of each element in the traffic classification array.

Note  Starting with NDIS 6.30, this member must be set to sizeof(NDIS_QOS_CLASSIFICATION_ELEMENT).
 
FirstClassificationElementOffset

A ULONG value that specifies the offset, in bytes, to the first element in an array of traffic classification elements that follow this structure. The offset is measured from the start of the NDIS_QOS_PARAMETERS structure up to the beginning of the first element. Each element in the array is an NDIS_QOS_CLASSIFICATION_ELEMENT structure.

Note  If NumClassificationElements is set to zero, this member is ignored.
 

Remarks

The NDIS_QOS_PARAMETERS structure specifies the parameters that define how the network adapter prioritizes transmit, or egress, packets. This structure is used in the following OID requests:

  • OID query request of OID_QOS_OPERATIONAL_PARAMETERS. This OID request returns the operational QoS parameters that are currently provisioned on the network adapter.

  • OID query request of OID_QOS_REMOTE_PARAMETERS. This OID request returns the remote QoS parameters that are currently provisioned on the network adapter.

  • OID method requests of OID_QOS_PARAMETERS. This OID request provisions the network adapter with the local QoS parameters.

The miniport driver also returns an NDIS_QOS_PARAMETERS structure in the following NDIS status indications:

For more information about the types of NDIS QoS parameters, see Overview of NDIS QoS Parameters.

Overview of the Flags Member

The Flags member contains a bitwise OR of flags that specify the status of the NDIS QoS parameters for the network adapter.

The miniport driver sets the Flags member when it issues the following NDIS status indications:

The DCB component sets the Flags member when it issues an OID method request of OID_QOS_PARAMETERS.

Note  Only the DCB component can issue the OID request. An overlying protocol or filter driver must not issue this OID. For more information on the DCB component, see NDIS QoS Architecture for Data Center Bridging.
 

The following flags are defined for the Flags member.

NDIS_QOS_PARAMETERS_ETS_CONFIGURED

If this flag is set, the miniport driver has configured the network adapter with the ETS parameters contained in the following members:

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

Note  The miniport driver must support ETS in order to support NDIS QoS for DCB. However, the setting of this flag does not specify whether the network adapter supports ETS. Instead, the setting of this flag specifies only whether ETS parameters are configured on the network adapter.
 
NDIS_QOS_PARAMETERS_ETS_CHANGED

If this flag is set, one or more ETS parameters have changed in the following members:

  • NumTrafficClasses

  • PriorityAssignmentTable

  • TcBandwidthAssignmentTable

  • TsaAssignmentTable

NDIS_QOS_PARAMETERS_PFC_CONFIGURED

If this flag is set, the miniport driver has configured the network adapter with the PFC settings contained in the PfcEnable member.

Note  The miniport driver must support PFC in order to support NDIS QoS for DCB. The setting of this flag does not specify whether the network adapter supports PFC. Instead, the setting of this flag specifies only whether PFC parameters are enabled on the network adapter.
 
NDIS_QOS_PARAMETERS_PFC_CHANGED

If this flag is set, one or more PFC settings have changed in the PfcEnable member.

NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED

If this flag is set, the miniport driver has configured the network adapter with the QoS traffic classification parameters specified in the following members:

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

Note  It is possible for the NDIS_QOS_PARAMETERS_CLASSIFICATION_CONFIGURED not to be set even if the NDIS_QOS_PARAMETERS_ETS_CONFIGURED and NDIS_QOS_PARAMETERS_PFC_CONFIGURED flags are set. In this case, the miniport driver must not configure QoS traffic classifications by using its proprietary settings that are defined by the independent hardware vendor (IHV).
 
NDIS_QOS_PARAMETERS_CLASSIFICATION_CHANGED

If this flag is set, one or more QoS traffic classification parameters have changed in the following members:

  • NumClassificationElements

  • ClassificationElementSize

  • FirstClassificationElementOffset

NDIS_QOS_PARAMETERS_WILLING

This flag specifies whether the miniport driver enables or disables the local Data Center Bridging Exchange (DCBX) Willing state. The driver handles this flag in the following way:

  • If this flag is set, the miniport driver must enable the local DCBX Willing state. This allows the driver to be remotely configured with QoS settings. In this case, the driver resolves its operational QoS parameters based on the remote QoS parameters. The miniport driver can also resolve its operational QoS parameters based on any proprietary QoS settings that are defined by the IHV.

  • If this flag is not set, the miniport driver must disable the local DCBX Willing state. This allows the driver to resolve its operational QoS parameters from its local QoS parameters instead of remote QoS parameters. The miniport driver must also disable or override any local QoS parameter for which the related NDIS_QOS_PARAMETERS_Xxx_CONFIGURED flag is not set.

    For example, the miniport driver can override an unconfigured local QoS parameter with its proprietary settings for the QoS parameters that are defined by the IHV. If there are no proprietary settings for local QoS parameters that are not specified with an NDIS_QOS_PARAMETERS_Xxx_CONFIGURED flag, the driver must disable the use of these QoS parameters on the network adapter.

For more information about the local DCBX Willing state, see Managing the Local DCBX Willing State.

Note  This flag is reserved for NDIS. The miniport driver must not set this flag when it issues NDIS_STATUS_QOS_Xxx status indications.
 
Note  NDIS guarantees that both the NDIS_QOS_PARAMETERS_ETS_CONFIGURED and NDIS_QOS_PARAMETERS_PFC_CONFIGURED flags are set or cleared together.
 

The NDIS_QOS_PARAMETERS_Xxx_CHANGED flags provide hints as to whether the corresponding group of parameters has changed from a previous OID_QOS_PARAMETERS method request or NDIS_QOS_PARAMETERS_Xxx_CHANGED status notification. When the miniport driver issues the NDIS_QOS_PARAMETERS_Xxx_CHANGED status notifications, it can optionally set these flags.

Note  If the NDIS_QOS_PARAMETERS_Xxx_CHANGED flags are not set, overlying drivers must not assume that the corresponding group of parameters are supported or enabled on the underlying network adapter.
 

Requirements

Version

Supported in NDIS 6.30 and later.

Header

Ntddndis.h (include Ndis.h)

See also

NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES
NdisMSetMiniportAttributes
NDIS_OBJECT_HEADER
NDIS_QOS_CAPABILITIES
NDIS_QOS_CLASSIFICATION_ELEMENT
NDIS_STATUS_QOS_OPERATIONAL_PARAMETERS_CHANGE
NDIS_STATUS_QOS_REMOTE_PARAMETERS_CHANGE
OID_QOS_CURRENT_CAPABILITIES
OID_QOS_HARDWARE_CAPABILITIES

 

 

Send comments about this topic to Microsoft

Show: