IEEE 802.11e/WMM Support
Important The Native 802.11 Wireless LAN interface is deprecated in Windows 10 and later. Please use the WLAN Device Driver Interface (WDI) instead. For more information about WDI, see WLAN Universal Windows driver model.
The Windows operating system does not fully support Quality of Service (QoS) as specified through the IEEE 802.11e-2005 standard and IEEE Document 802.11-03-504r7. The operating system will:
Not insert the Wireless Multimedia (WMM) QoS Control field within the 802.11 media access control (MAC) header of packets sent through calls to the miniport driver's MiniportSendNetBufferLists function.
Process the QoS Control field for received packets that are indicated through calls to the NdisMIndicateReceiveNetBufferLists function. In this situation, the Native 802.11 miniport driver must return the appropriate 802.1D priority value through the NDIS_NET_BUFFER_LIST_8021Q_INFO structure that is associated with the NET_BUFFER_LIST structure used for the received packet.
For more information about the QoS Control field, refer to Clause 2.1 of IEEE Document 802.11-03-504r7.
Support for 802.11e QoS services is dependent upon the implementation of the 802.11 station and miniport driver. If the independent hardware vendor (IHV) supports 802.11e QoS, it must do the following:
Set the NDIS_MAC_OPTION_8021P_PRIORITY flags when OID_GEN_MAC_OPTIONS is queried.
Add the QoS Control field to the IEEE MAC header for packets sent through calls to the miniport driver's MiniportSendNetBufferLists function. The driver sets the UP bits of the QoS Control field based on the IEEE 802.1D value. This value is returned through the NDIS_NET_BUFFER_LIST_8021Q_INFO structure that is associated with the NET_BUFFER_LIST structure used for the sent packet.
Either retain or remove the QoS Control field from the IEEE MAC header for received packets prior to calling NdisMIndicateReceiveNetBufferLists. The driver must return the appropriate 802.1D priority value through the NDIS_NET_BUFFER_LIST_8021Q_INFO structure that is associated with the NET_BUFFER_LIST structure used for the received packet.
In order to insert the QoS Control field into the IEEE MAC Header for packets sent through calls to MiniportSendNetBufferLists, the miniport driver must follow these guidelines.
When its MiniportInitializeEx function is called, the miniport driver calls NdisMSetMiniportAttributes and passes an NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES structure with the DataBackFillSize member set to the size of the QoS Control field.
For each NET_BUFFER_LIST structure referenced through the NetBufferLists parameter of the MiniportSendNetBufferLists function, the miniport driver adds the QoS Control field after the 802.11 MAC header, which is contained in the first NET_BUFFER structure of the NET_BUFFER_LIST structure. To accomplish this, the miniport driver completes the following steps:
- Retreats the start of the packet data to make room for the QoS Control field by calling NdisRetreatNetBufferDataStart with the DataOffsetDelta parameter set to the length, in bytes, of the QoS Control field.
- Queries the new data offset for the start of the packet data through the NET_BUFFER_DATA_OFFSET macro. The driver then copies the 802.11 MAC header to the packet data starting at the new data offset within the NET_BUFFER structure.
- Formats the QoS Control field immediately after the 802.11 MAC header, and then instructs the 802.11 station to send the NET_BUFFER_LIST structure.
Before the miniport driver completes the packet send by calling NdisMSendNetBufferListsComplete, the driver must restore the data offset of the first NET_BUFFER structure to its original value by calling NdisAdvanceNetBufferDataStart with the DataOffsetDelta parameter set to the length, in bytes, of the QoS Control field.