Modifying
NDIS Intermediate (IM) Drivers
And
NDIS Task-Offload

 

Summary

The general characteristics of "modifying NDIS IM drivers" are that they create complete packets:

  1. That contain modified representations (e.g., encrypted/compressed) of the original packets that were passed to the driver.
  2. Originate entirely new packets to be passed up or down the protocol stack.

With the current NDIS Intermediate (IM) driver model it is difficult, and perhaps impossible, for a "modifying" NDIS IM driver to operate with NDIS task-offload enabled.

In most cases modifying NDIS IM drivers do not have sufficient visibility into the required sequence of offload operations to operate successfully.

 

Symptoms

The symptoms associated with incorrect sequencing of NDIS task-offload operations are vague. Here are some examples:

bulletThe NDIS IM driver "doesn't work" on certain adapters (adapters that offer NDIS task-offload support) but works flawlessly on other adapters (that do not offer NDIS task-offload support).
 
bulletOnly "short packets" can be sent with the NDIS IM installed.
 
bulletCan browse the Internet, but not the Network Neighborhood.
 
bulletExcessive packets are lost when the NDIS IM driver is installed.
 
bulletThe TCP/IP ProtocolRecieve(Packets) handlers ignore modified packets indicated by the NDIS IM.
 
bulletChecksums are incorrect in transmitted packets.

Basically, the modifying NDIS IM driver fails unpredictably on certain adapters…

 

Microsoft Guidance

If a NDIS IM driver performs any modifications on the data that it passes through, it should fail a query for OID_TCP_TASK_OFFLOAD instead of passing it through to the miniport below. This is to avoid problems with incorrect sequence of operations performed on data.

This guidance is expressed in the Windows XP DDK PassThru NDIS IM sample as a comment in the MPQueryInformation handler in miniport.c:

NOTE on OID_TCP_TASK_OFFLOAD - if this IM driver modifies the contents of data it passes through such that a lower miniport may not be able to perform TCP task offload, then it should not forward this OID down, but fail it here with the status NDIS_STATUS_NOT_SUPPORTED. This is to avoid performing incorrect transformations on data.

 

Topic Status

January 2, 2003 Reviewed (shortened) and moved to NDIS.com.
May 29, 2001 Added suggestion from Microsoft.
May 28, 2001 Information posted.
 

PCAUSA Home · Privacy Statement · Products · Ordering · Support · Utilities · Resources
Mailing Lists  · PCAUSA Newsletter · PCAUSA Discussion List
Rawether for Windows, Rawether .NET, WinDis 32 and NDIS Press are trademarks of Printing Communications Assoc., Inc. (PCAUSA)
Microsoft, MS, Windows, Windows Vista, Windows 95, Windows 98, Windows Millennium, Windows 2000, and Win32 are registered trademarks and Visual C++ and Windows NT are trademarks of the Microsoft Corporation.
Copyright © 1996-2009 Printing Communications Assoc., Inc. (PCAUSA)
Last modified: January 23, 2009