Most NDIS IM driver developers encounter bizarre and unpredictable behavior
of their NDIS Intermediate (IM) drivers when operating on SOME NDIS
miniport drivers. The most common manifestation is often related to specific
adapters, but may be vague.
Complaints fall in the range:
1.) “Doesn’t work on certain adapters (frequently 3Com adapters).”
2.) “Can only send short packets”
3.) “Can browse the Internet, but not the Network Neighborhood”.
These problems may not appear in trivial PassThru NDIS IM driver samples
that simply re-wrap packets, but DO appear in non-trivial NDIS IM drivers.
It appears that this behavior is related to the NDIS Task Offload facility.
In an NDIS IM driver, calls to query and set OID_TCP_TASK_OFFLOAD should be
considered calls to the NDIS IM driver itself. From what I have found, an
NDIS IM driver should NOT blindly pass these OIDs (and other similar task
offload OIDs) to the lower NDIS miniport driver.
If an NDIS IM driver does not actually include code that specifically
implements NDIS Task Offload, then the NDIS IM driver should intercept task
offload query and set for OID_TCP_TASK_OFFLOAD (and similar) and fail them
by returning NDIS_STATUS_NOT_SUPPORTED.
If an NDIS IM driver actually does implement NDIS Task Offload, then it
should provide its own well-considered responses to these calls.
Of course, an NDIS IM driver can (and probably should) exploit the use of
the lower-level NDIS miniport’s NDIS Task Offload capabilities (if they
exist) in its own implementation of NDIS Task Offload support. However, this
requires more then simply passing the task offload OIDs blindly down. It
requires a good understanding of the task offload mechanism.
If anyone has something to add to this epistle, please do so.
I expect that Microsoft has a KB Article written in 1999 (or earlier) that
completely describes this problem and carefully describes the solution, but
I can’t find it…
Regards,
Thomas F. Divine
PCAUSA - Toolkits & Resources For Network Software Developers
NDIS Protocol - NDIS Intermediate - TDI Client
http: - http:
—
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com</http:></http:>