Regarding NET_BUFFER_LIST and NET_BUFFER handling in Native wifi Miniport Driver RRS feed

  • Question

  • Hi!

    In case of native wifi send operations, does operating system always put only one NET_BUFFER in the NET_BUFFER_LIST structure?

    If not, what are the cases where there will be more than one NET_BUFFER in NBL?

    while observing the native wifi reference drivers(usb based and pci based), I could see that "If there are more than one NB in NBL, they are processing(sending out) from second NB and proceeding to last NB, after the last NB is processed, they are processing first NB, what is the reason for it?" Since order of mpdus(NBs) is altered, do this case fails (i.e., When more than one NB in NBL)?

    Ref: In function HwTransmitPacketCoalesce() (File: src\network\ndis\usbnwifi\hw\Hw_Send.c (WDK 7))

    Ref: In function HwTransmitMSDUCoalesce() (File: src\network\ndis\athwifi\hw\hw_send.c (WDK 7))

    Thanks in advance...

    Tuesday, July 16, 2013 11:03 AM


  • For current versions of Native Wifi, there is only one NET_BUFFER per NET_BUFFER_LIST on the TX path.  Ethernet may have 2+ NBs in an NBL on the TX path, and future NDIS versions greater than 6.40 may permit more than one NB in an NBL for wifi.

    The rules were originally a little fuzzy, which is why the sample code has some confusion around handling multiple NBs.  But you can safely remove that loop and replace it with ASSERT(NetBuffer->Next == NULL).

    Tuesday, July 16, 2013 7:28 PM