Improved Send and Receive Paths
The NDIS 6.0 send and receive paths have been improved as follows to enhance performance:
All of the NDIS 6.0 and later driver send and receive functions can transfer a linked list of NET_BUFFER_LIST structures and their associated NET_BUFFER structures with a single function call. This support for true multipacket send and receive operations substantially reduces the number of function calls that drivers must make.
When calling a send or receive function, a driver running at DISPATCH_LEVEL can indicate its IRQL to NDIS. When NDIS subsequently makes calls to other drivers in the stack, it is not necessary for these drivers to test the IRQL or set it to DISPATCH_LEVEL. This reduces the overhead that is associated with testing and setting the IRQL in critical code sections.
When drivers pass packets up and down the driver stack, they can request NDIS to adjust the NET_BUFFER data offsets to accommodate header information. When sending a packet, a driver can expand the used data space to accommodate the driver's header information. When indicating a receive packet, a driver can decrease the used data space after the driver is done accessing its header information. This ability to dynamically adjust the used data space in a NET_BUFFER structure, without allocating and freeing memory or copying data, reduces the overhead that is required to process network data.
For more information about send and receive data handling in NDIS 6.0, see NET_BUFFER Architecture.