KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q80562: MTTOOL Test Miscellaneous Information

Article: Q80562
Product(s): Microsoft LAN Manager
Version(s): 
Operating System(s): 
Keyword(s): 
Last Modified: 30-JUL-2001

SUMMARY
=======

The following are questions and answers related to MTTOOL, the test utility
provided in the Microsoft LAN Manager Network Device Driver Kit.

MORE INFORMATION
================

1. Q. The test script CLRST001.3 clears statistics and then checks the date and
  time in the Service Specific Status Table. A note in the NDIS 2.0.1 states
  this variable should be "0xffffffff" if date and time are not kept. However,
  after clearing the statistics, the script expects and checks for an entry in
  the date/time field. On receiving "0xffffffff" in the date/time field, the
  test believes it has encountered an error. Is this consistent behavior
  between the NDIS specification and the test?

  A. This is a discrepancy between the script, MAC implementation, the
  ClearStatistics primitive, and the definition of NOT_SUPPORTED in the Service
  Specific Status Table.

  The simplest method of verifying proper operation of ClearStatistics is the
  following:

  1. Enter the MTTOOL interactive mode.

  2. Type "stat" (without the quotation marks) at the prompt. This should give
     a list of the current statistics.

  3. Identify the current values.

  4. Type "clrstat" (without the quotation marks).

  5. Type "+" (without the quotation marks). Examine the log and verify that
     ClearStatistics returned SUCCESS.

  6. Press ENTER to return to the MTTOOL prompt.

  7. Type "stat" (without the quotation marks) at the prompt.

  8. Identify the statistics and verify that all the statistics that should
     have been reset were, and those that should not have been reset weren't.

2. Q. In the test script SLOOK001.6, the LookAhead length has been set to 256.
  We then transmit a packet of 512 bytes in length. The packet is received and
  echoed back. We then receive this packet through ReceiveLookAhead. The
  BytesAvail are 256 and the FrameSize is 512. Why does the test still complain
  although everything is supposedly in order? What is the minimum size of the
  buffer a MAC must have for LookAhead?

  A. The maximum size SetLookAhead can be called with is 256 bytes. This,
  however, does NOT imply that the MAC buffer set aside for LookAhead must to
  be restricted to 256. You can still set the LookAhead size to a value greater
  than 256 and return success. For example, some MACs START their LookAhead
  size from 256. This error usually occurs in the test because MTTOOL is
  expecting some other packet (this is a timing issue). The best way to work
  around this test to establish the validity of the test itself is to use the
  interactive MTTOOL and hand check it.

3. Q. Is the data_check option of BESTRES used during certification?

  A. Yes, always. It makes no sense to run a stress test and not check the
  integrity of the test data. If the data_check parameter is not specified, no
  checking of the frames passed to the protocol is performed. INT 3s are
  generated only if the data_check parameter is specified. Without the
  data_check parameter, pancake will accept whatever the MAC passes up the
  stack and disregard its correctness. Understandably, this is the most
  difficult part of the test to pass/master/debug. This is also the most
  critical part of testing. BESTRES and DOSTRES represent the most
  stress/network traffic that can be placed on a driver and card.

4. Q. Does an INT 3 represent anything besides data corruption?

  A. The business of stress testing and pancake is a very time-critical one. The
  INT 3 report may represent an as yet unencountered timing condition.

5. Q. How does MTTOOL check for data corruption?

  A. Pancake checks the frames sent to it from the MAC. This check first gets
  the length of the frame from the word at offset 0C in the frame. Pancake then
  proceeds to check the frame's data against its internal counter. Each byte is
  an AND of 0xff of its position within the frame. Therefore, the data should
  be as follows:

           0E 0F 10 ... (Frame_Length & 0xff)

  IMPORTANT NOTE: Pancake builds one packet of max_length in memory. For the
  Ethernet, that is a packet of size 1514. Into this packet, pancake sets the
  packet length at 0C 0D and then sends it to the MAC. In other words, only the
  packet length changes the packet data. This makes it impossible for pancake
  to build a bad packet because the data is set before testing begins.

6. Q. The following errors occur when running tests from slow to fast machines:

  MACTB001.12 FAIL
  MACTB001.14 FAIL
  MACTB004.4 FAIL
  RESET001.6 FAIL
  SETPF001.15 FAIL
  SETPF001.19 FAIL

  The MACTB00x.x errors seem to be due to the use of MRECV with zero delay. This
  causes packets to be lost when the master machine is slower than the slave.
  Isn't this acceptable driver behavior, which should not report an error?

  A. This behavior is to be expected and even anticipated when a faster machine
  is pushing a slower one. Some percentage of packets sent from a fast machine
  to a slower will be lost. There are provisions in place to handle this
  situation. If the MAC supports the discarded frame's statistic, it should
  keep the value current.

  This condition would be very hard to check automatically because the DWORD in
  the Service Specific Status Table, which represents the total frames
  discarded, is not mandatory. To check this, MTTOOL would have to add the
  total frames received to the total frames discarded, then check that value
  against what it expected. Most MACs don't keep this statistic, which does not
  make this an attractive solution. Again, the only good way to check this is
  by hand.

7. Q. I call ReceiveLookAhead during my IndicationComplete routine. This is
  something the NDIS 2.0.1 encourages MAC developers to do. This sometimes
  leads to traps. Can I remove this feature?

  A. Microsoft is currently investigating the issue of IndicationComplete
  re-entrancy and will post new information here as it becomes available.
  Currently, however, all MAC drivers must provide for IndicationComplete
  re-entrancy.

Additional query words: 2.00 2.10 2.10a 2.20

======================================================================
Keywords          :  

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.