Freigeben über


Indicating Raw 802.11 Packets

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.

 

Usually, when the miniport driver indicates 802.11 packets, the packets are complete media access control (MAC) service data unit (MSDU) or MAC management protocol data unit (MMPDU) packets. In this situation, the 802.11 station has reassembled and decrypted each MAC protocol data unit (MPDU) fragment for the MSDU or MMPDU packet. If a MPDU fails during decryption or verification, the 802.11 station must discard all MPDU fragments and the miniport driver must not make the packet indication through a call to NdisMIndicateReceiveNetBufferLists.

However, if enabled for raw packet indication, the miniport driver must make the packet indication for every received MPDU fragment of an MSDU or MMPDU packet regardless of whether the MPDU fragment succeeded or failed to decrypt.

The miniport driver must indicate raw 802.11 packets when the current packet filter is set to one of the following:

NDIS_PACKET_TYPE_802_11_RAW_DATA
When this packet filter is enabled, the miniport driver must indicate each raw MPDU fragment for an MSDU packet.

NDIS_PACKET_TYPE_802_11_RAW_MGMT
When this packet filter is enabled, the miniport driver must indicate each raw MPDU fragment for an MMPDU packet.

For more information about how the current packet filter is set or queried, see OID_GEN_CURRENT_PACKET_FILTER.

Note  It is only valid for the miniport driver to enable the NDIS_PACKET_TYPE_802_11_RAW_DATA or NDIS_PACKET_TYPE_802_11_RAW_MGMT packet filters if the driver is operating in Network Monitor (NetMon) or Extensible Access Point (AP) modes. For more information about these modes, see Network Monitor Operation Mode and Extensible Access Point Operation Mode.

 

The miniport driver must follow these guidelines when indicating raw MPDU fragments.

  • When indicating raw MPDU frames, the miniport driver must set DOT11_RECV_FLAG_RAW_PACKET in the uReceiveFlags member of the DOT11_EXTSTA_RECV_CONTEXT structure. Also, the miniport driver must prepare the DOT11_EXTSTA_RECV_CONTEXT structure for the raw packet indication as described in Media-Specific OOB Data for Received 802.11 Packets.

  • The packet data for the MPDU frame must be unmodified. In this situation, the data must be exactly as received by the 802.11 station. The 802.11 station must neither decrypt the MPDU data nor reassemble the fragment with other received MPDU fragments.

  • All of the MPDU fragments that belong to the same MSDU or MMPDU packet must be indicated in one NET_BUFFER_LIST structure, with one NET_BUFFER structure for each raw MPDU fragment.

  • The miniport driver must indicate each received MPDU fragment regardless of any of the following conditions:

    • The MPDU data eventually fails to decrypt or verify.
    • The MSDU or MMPDU packet fails to reassemble correctly due to missing MPDU fragments.
    • The MPDU was received with frame check sequence (FCS) failures. If the 802.11 station is able to receive MPDU packets with FCS errors, the miniport driver must set the DOT11_RECV_FLAG_RAW_PACKET_FCS_FAILURE in the uReceiveFlags member.
  • The miniport driver can optionally indicate the decrypted and reassembled MSDU packet or reassembled MMPDU frame following the indication of the raw MPDU fragments. For more information about this process, see Guidelines for Indicating Received 802.11 Packets.

  • If the miniport driver is operating in the ExtAP mode, the following requirements apply.

    Configuration Raw mode Raw packets indication Non-raw packet indication

    ExtAP INIT state

    Off

    Not applicable

    Mandatory

    ExtAP INIT state

    On

    Mandatory

    Optional

    ExtAP OP state:

    Off

    Not applicable

    Mandatory

    ExtAP OP state:

    On

    Optional

    Mandatory

     

    If the driver indicates both raw and non-raw packets, it might need to duplicate the received packets when raw mode is enabled.