Windows Millennium Edition TCPIP discards packets via dial-up NDIS intermediate drivers (285676)



The information in this article applies to:

  • Microsoft Windows ME Driver Development Kit (DDK)
  • Microsoft Windows Millennium Edition

This article was previously published under Q285676

SUMMARY

Transmission Control Protocol/Internet Protocol (TCP/IP) in Windows Millennium Edition will discard packets that are passed up from an intermediate NDIS driver over dial-up connections if NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA is not set in OID_GEN_MAC_OPTIONS. Intermediate drivers must support OID_GEN_MAC_OPTIONS and set NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA.

MORE INFORMATION

If the entire packet is passed up to TCP/IP, the unnecessary call to NdisTransfer will result in an NDIS_PACKET whose buffer contains invalid data. TCP/IP will discard the packet because of a failed check sum. To verify this condition, connect to a remote host and perform a PING to a known IP address. The PING will time out. Run NETSTAT -S from a command prompt. Internet Control Message Protocol (ICMP) receive errors will increment for each discarded packet (see the following output from NETSTAT.exe). User Datagram Protocol (UDP) receive errors may also indicate this condition.

NetStat -s

IP Statistics

  Packets Received                   = 21
  Received Header Errors             = 0
  [...]
  Fragments Created                  = 0

ICMP Statistics

                            Received    Sent
  Messages                  4 <---      4         
  Errors                    4 <---      0         
  Destination Unreachable   0           0         
  Time Exceeded             0           0         
  [...]
  Address Mask Replies      0           0         

TCP Statistics

  [...]

UDP Statistics

  Datagrams Received    = 0
  No Ports              = 0
  Receive Errors        = 17  <---
  Datagrams Sent        = 40
					

Another indication of this problem can be seen if you use the kernel debugger, load the debug version of TCPIP.sys, and set DbgSettingsZone to ff ff ff ff and DbgSettingsLevel to ff ff ff ff. The output below will be emitted to the debugger. The debug binary for TCPIP.sys can be obtained from the following Microsoft Knowledge Base article:

279356 NDIS debugging tips for Windows ME

This is the output emitted:

+ICMPRcv(..., ..., ...)
ICMPRcv: Packet dropped, invalid checksum.
					


Modification Type:MinorLast Reviewed:3/1/2005
Keywords:kbinfo kbKMode kbNDIS kbnetwork KB285676