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