WiFi WMM Requirements for Vista Miniport Drivers
A number of partners who author wireless drivers for Vista have asked how they can ensure their WiFi Wireless Multimedia (WMM) implementation is correct, so I thought I'd be explicit about this very important topic. To begin, read the 4-part series WiFi QoS Support in Windows Vista, which describes how Vista internally indicates a WMM Access Category (WMM_AC), how to detect whether an Access Point supports this capability, and how to observe the behavior of prioritized traffic. Next, be sure you explicitly validate your driver does the following:
Confirm the QoS header exists in 802.11 data frames when DSCP and 802.1p are set independently:
DSCP [56, 48, 40, 32, 24, 16, 8, 0]
802.1p [7, 6, 5, 4, 3, 2, 1, 0]
Ensure the miniport indicates NDIS_MAC_OPTION_8021P_PRIORITY in OID_GEN_MAC_OPTIONS
Miniport behavior on receive:
If WMM/11e header is stripped, WMM bit in FrameControlSubtype must be cleared
If WMM/11e header is not stripped, WMM bit in FrameControlSubtype must *not* be cleared
Must *not* strip 802.1Q tag in SNAP header (nwifi.sys will strip if necessary
Miniport behavior on transmit:
Only use NDIS_NET_BUFFER_LIST_8021Q_INFO.WMMInfo field to ascertain correct WMM_AC (*not* UserPriority, or IP DSCP field)
Must not strip 802.1Q tag in SNAP header (may be added by nwifi.sys)
-- Gabe Frost