New Scatter/Gather DMA Support

Unlike previous versions of NDIS, NDIS 6.0 passes a send packet to a miniport driver before the packet is mapped for a DMA transfer. After it has obtained the packet, the miniport driver can request NDIS to supply a scatter/gather list for the packet.

This provides the following benefits:

  • Because a miniport driver has access to the packet before it is mapped, any changes that the miniport driver makes to the packet are reflected in the associated scatter/gather list data.

  • A miniport driver can optimize the transmission of small or highly fragmented packets by copying them to a preallocated buffer, thereby eliminating the need for mapping. This eliminates unnecessary processing.

  • NDIS can safely pass multiple NET_BUFFER structures to the miniport driver in one function call. This results in fewer calls to the miniport driver and thus improves system performance.

  • Because a miniport driver can preallocate memory for a scatter/gather list, NDIS does not have to allocate memory for the scatter/gather list at run time.

For more information about NDIS 6.0 scatter/gather DMA, see NDIS 6.0 Scatter/Gather DMA.