B.1 Test Descriptions

This documentation describes the individual tests provided by the Novell LAN Test Tools. Refer to these descriptions when troubleshooting problems and more detail is necessary.

B.1.1 Basic Transmit and Receive Tests

There are eight basic transmit and receive tests. It takes 20 to 40 minutes to complete these tests.

Receive Tests

The Receive Tests verify reception of DIRECT packets, min-to-max packet sizes, and all frame types. The tests verify the following:

  • ECB status
  • ECB BoardNumber
  • ECB PacketLength
  • ECB Data
  • ECB Driver Workspace information
  • ECB DriverWorkspace information
  • ECB PreviousLink information
  • ECB StackID
  • ECB ProtocolID
  • ECB ImmediateAddress

The receive tests also verify the reception of broadcast packets, min-to-max packet sizes, and all frame types. The tests verify the following:

  • ECB DriverWorkspace information
  • ECB PacketLength
  • ECB Data

Look Ahead Tests

The Look Ahead Tests verify LookAhead fields for DIRECT packets, min-to-max packet size, all frame types.

Verify LkAhd_StartCopyOffset (test selected packet size, selected offsets).

Verify different LkAhd_DataBytesWanted values are handled correctly.

Verify LookAhead fields for BROADCAST packets (min-to-max packet size, all frames).

  • Test IOCTLSetLookAheadSize with value = current value.

Verify IOCTL returns ODISTAT_SUCCESSFUL and maintains value in configuration table.

  • Test IOCTLSetLookAheadSize with value > current value.

Verify IOCTL returns ODISTAT_SUCCESSFUL and updates value in configuration table.

  • Test IOCTLSetLookAheadSize with value < current value.

Verify IOCTL returns ODISTAT_SUCCESSFUL but does not update value in configuration table.

  • Test IOCTLSetLookAheadSize with value = maximum look ahead value.

Verify IOCTL returns ODISTAT_SUCCESSFUL and updates values in configuration table.

  • Test IOCTLSetLookAheadSize with value > maximum look ahead value.

Verify IOCTL returns ODISTAT_BAD_PARAMETER and does not update value in configuration table.

Verify LookAhead requirements with promiscuous mode enabled, if supported.

Transmit Tests

Verify transmit from min-to-max, all boards, medium data rate.

  • Verify data length and validate data.

Verify transmit ECB fields have not been altered, min-to-max, all frames.

  • Verify ESR has not been modified.
  • Verify StackID has not been modified.
  • Verify ProtocolID has not been modified.
  • Verify BoardNumber has not been modified.
  • Verify ImmediateAddress has not been modified.
  • Verify ProtocolWorkspace has not been modified.
  • Verify PacketLength has not been modified.
  • Verify FragmentCount has not been modified.
  • Verify Fragment has not been modified.

Verify errors for illegal length packets.

Verify the driver rejects its own broadcasts.

Verify data integrity using transmit ECBs with fragment counts of 1 to 16 (selected sizes, all frames).

Verify data integrity using transmit ECBs with 0 length fragments (selected sizes, all frames).

Raw Send Tests

Verify transmit raw send packets from min-to-max, all boards, medium data rate.

  • Verify data length and validate data.
  • Verify data size evenized for evenized frame types.

Verify transmit ECB fields have not been altered.

  • Verify ESR has not been modified.
  • Verify StackID has not been modified.
  • Verify ProtocolID has not been modified.
  • Verify BoardNumber has not been modified.
  • Verify ImmediateAddress has not been modified.
  • Verify ProtocolWorkspace has not been modified.
  • Verify DataLength has not been modified.
  • Verify FragmentCount has not been modified.
  • Verify FragmentDescriptor has not been modified.

Source Routing Tests

Verify source route TX handler is called on transmits.

Verify source route RX handler is called on receives.

  • Verify route information is correct.

Verify Address fields are correct and Rii bit is set.

Verify ECB DriverWorkspace has Source Route reception type bit set.

  • Verify that ECB Data content is correct.

Frame 802.2 Type I/II Tests

Type I Requirements

Verify ECB DriverWorkSpace[1] = 01h for 802.2 Type I packets.

Verify ECB ProtocolID is correct.

Verify packet data length and data.

Type II Requirements

Verify ECB DriverWorkSpace[1] = 02h for 802.2 Type II packets.

Verify ECB ProtocolID is correct.

Verify packet data length and data.

MAC Source Address Tests

Verify the driver/adapter does not overwrite the MAC header source address in a raw send frame. We post only Pass or Not Supported for this test.

Virtual Memory Transmit Tests

Verify the driver handles multiple fragments.

Verify the driver handles a single logical data buffer that straddles two physical address blocks.

B.1.2 I/O Control (IOCTL) Tests

There are ten I/O Control tests. It takes 2 to 3 hours to complete these tests.

Configuration Table Tests

Verify Configuration Signature.

Verify CFG Major and Minor Versions are 1.12 for Spec version 3.20.

Verify CFG Major and Minor Versions are 1.13 for Spec version 3.30.

Verify CFG Major and Minor Versions are 1.14 for Spec version 3.31.

Verify CFG Major and Minor Versions are 1.20 for Spec version 1.10.

Verify CFG Major and Minor Versions are 1.21 for Spec version 1.11.

Verify Node Address.

Verify Mode Flags.

Verify Board Number.

Verify Board Instance.

Verify Maximum Frame size.

Verify Best Data Size is correct for topology.

Verify Worst Data Size is correct for topology.

Verify Card (Long) Name.

Verify Short Name.

Verify Frame Type String and FrameID.

Verify Reserved 0 field is zero.

Verify Transport Time is not zero.

Verify Source Route Handler field.

Verify Line Speed.

Verify Look Ahead Size.

Configuration Table version 1.12 (Asm HSM 3.20)

  • Verify Reserved 1 field is zero.

Configuration Table version 1.13 (Asm HSM 3.30)

  • Verify Reserved 1 field is zero.
  • Verify Scatter gather count is not zero if modeflag MM_FRAGS_PHYS_BIT is set.

Configuration Table version 1.14, 1.20, and 1.21 (Asm HSM 3.31, C HSM 1.10 and 1.11)

  • Verify Reserved 1 field is zero.
  • Verify Scatter gather count is not zero if modeflag MM_FRAGS_PHYS_BIT is set.
  • Verify PrioritySup field is the same for all logical boards.
  • Verify Reserved2 field is zero.

Verify Driver Major and Minor Version.

Verify Flags field.

Verify Send Retries.

Verify Driver Link.

Verify Sharing Flags.

Verify Slot field.

Verify IO Port 0.

Verify IO Range 0.

Verify IO Port 1.

Verify IO Range 1.

Verify Memory Address 0.

Verify Memory Size 0.

Verify Memory Address 1.

Verify Memory Size 1.

Verify Interrupt 0.

Verify Interrupt 1.

Verify DMA 0.

Verify DMA 1.

Verify Resource Tag.

Verify Configuration.

Verify Command String.

Verify Logical Name.

Verify Linear Memory 0.

Verify Linear Memory 1.

Verify Channel Number.

Configuration Table version 1.12 (Asm HSM 3.20)

  • Verify IO Reserved is NULL.

Configuration Table version 1.13, 1.14, 1.20, and 1.21 (Asm HSM 3.30, 3.31, C HSM 1.10 and 1.11)

  • Verify Dbus Tag field is the same on all logical boards.
  • Verify DIOCfgMajor Version and DIOCfgMinor Version fields are valid.

Statistics Table Tests

Verify IOCTLGetStatisticsTable (IOCTL 1).

Verify Statistics Table version is 3.0.

Verify number of Generic counters.

Verify Generic counter mask is valid.

Verify unsupported Generic counters are zero.

Verify Custom counters strings are valid and string block is terminated by two NULLs.

Verify number of Custom counters is valid and that there are no zero-length Custom strings.

Multicast/Functional Address Tests

Verify that a single address can be added and deleted on each logical board and verify reception.

Verify return code: BAD_PARAMETER or ITEM_NOT_PRESENT with an invalid address. Test both, add, and delete.

Verify that multiple identical addresses can be added and deleted. Verify reception.

Verify that multiple unique addresses can be added and deleted. Verify reception. After adding multiple unique addresses, verify driver does not receive on a unique address that was not added.

Verify that a unique address can be deleted from the middle of an address list. Verify reception.

Verify reset and shutdown requests do not affect multicast functionality. Verify reception.

Promiscuous Mode Good Packet Tests

Verify basic promiscuous mode functionality. Verify traffic with good packet traffic tests.

Verify proper functionality when performing multiple consecutive promiscuous mode enables and disables.

Verify traffic with good packet traffic tests.

Verify multicast address changes made after promiscuous mode is enabled are resident after promiscuous mode is disabled. Verify traffic with good packet traffic tests.

Verify states and functionality are preserved after a partial shutdown and reset are performed while promiscuous mode is enabled. Verify traffic with good packet traffic tests.

Verify promiscuous remote multicast functionality. Post a warning if the adapter must go into full promiscuous mode in order to support this function. This is for assembly spec version 3.31 or greater and C spec version 1.11 or greater.

If MLID does not support promiscuous mode, verify MLID returns ODISTAT_BAD_COMMAND when trying to enable and disable promiscuous mode.

Promiscuous Mode Bad Packet Tests

Verify traffic for valid length packets with no CRC.

Verify traffic for Runt packets with CRC.

Verify traffic for Runt packets with no CRC.

Verify traffic for Long packets with CRC.

Verify traffic for Long packets with no CRC.

Verify traffic for Jabber packets with CRC.

Verify traffic for Jabber packets with no CRC.

Verify traffic for Very Short packets with CRC.

Verify traffic for Very Short packets with no CRC.

Verify traffic for packets with MAC Header length field error (length is less than actual packets data size).

Verify traffic for packets with MAC Header length field error (length is greater than actual packet size).

Verify traffic for packets with MAC Header length field error (length is equal to zero in MAC header only).

MLID Management Tests

Verify MLID returns ODISTAT_BAD_PARAMETER for illegal Management PIDs.

Verify MLID returns ODISTAT_NO_SUCH_HANDLER for legal but unsupported Management PIDs.

Reserved and Undefined IOCTL Tests

ASM HSM Spec version 3.20 and 3.30

Verify MLID returns ODISTAT_BAD_COMMAND for all reserved IOCTLs: 4, 7, 8, 12, and 13.

Verify MLID returns ODISTAT_BAD_COMMAND for all invalid IOCTLS: >=15.

ASM HSM Spec Version 3.31

Verify MLID returns ODISTAT_BAD_COMMAND for all reserved IOCTLs: 4, 7, 8, 12, 13, and 15.

Verify MLID returns ODISTAT_BAD_COMMAND for all invalid IOCTLs: >=19.

Transmit and Receive Monitor Tests

Verify registration of Tx Monitor returns ODISTAT_SUCCESFUL.

  • Verify monitor routine is called for each logical board and for each transmitted packet.
  • Verify disabling Tx Monitor returns ODISTAT_SUCCESSFUL.
  • Verify monitor routine is not called after disabling Tx Monitor.

Verify registration of Tx Monitor twice returns ODISTAT_OUT_OF_RESOURCES.

Verify registration of Tx Monitor with a NULL routine returns ODISTAT_SUCCESSFUL and no Tx Monitoring occurs.

Verify registration of Tx Monitor still returns ODISTAT_SUCCESFFUL when MLID is shut down.

Verify packets are not received when Monitor is enabled and MLID is shutdown.

  • Verify packets are received when Monitor is enabled and MLID is reset.

Verify all TCB values are correct for each transmitted packet and frame type.

Verify disabling Tx Monitor with invalid routine pointer returns ODISTAT_FAIL ODISTAT_BAD_PARAMETER and Tx Monitor is unaffected.

  • Verify disabling Tx Monitor with invalid board number returns ODISTAT_BAD_PARAMETER and Tx Monitor is unaffected.

Enable promiscuous mode to verify monitor routine functions properly when in promiscuous mode.

  • Verify registration of Tx Monitor returns ODISTAT_SUCCESSFUL.
  • Verify monitor routine is called for each logical board and for each packet transmitted.
  • Verify disabling Tx Monitor returns ODISTAT_SUCCESSFUL.
  • Verify monitor routine is not called after disabling Tx Monitor.
  • Disable promiscuous mode.

Verify monitor routine is called when performing a transmitted broadcast packet.

  • Verify monitor routine is called when performing a transmitted multicast packet.

Verify registration of Rx Monitor returns ODISTAT_SUCCESSFUL.

  • Verify monitor routine is called for each logical board and for each transmitted packet.
  • Verify disabling Tx Monitor returns ODISTAT_SUCCESSFUL.
  • Verify monitor routine is not called after disabling Tx Monitor.

Verify registration of Rx Monitor twice returns ODISTAT_OUT_OF_RESOURCES.

Verify registration of Rx Monitor with a NULL routine returns ODISTAT_SUCCESSFUL and no Rx Monitoring occurs.

Verify registration of Rx Monitor still returns ODISTAT_SUCCESSFUL when MLID is shut down.

Verify packets are not received when Monitor is enabled and MLID is shut down.

  • Verify packets are received when Monitor is enabled and MLID is reset.

Verify disabling Rx Monitor with invalid routine pointer returns ODISTAT_FAIL ODISTAT_BAD_PARAMETER and Rx Monitor is unaffected.

  • Verify disabling Rx Monitor with invalid board number returns ODISTAT_BAD_PARAMETER and Rx Monitor is unaffected.

Enable promiscuous mode to verify monitor routine functions properly when in promiscuous mode.

  • Verify registration of Rx Monitor returns ODISTAT_SUCCESSFUL.
  • Verify monitor routine is called for each logical board and for each transmitted packet.
  • Verify disabling Rx Monitor returns ODISTAT_SUCCESSFUL.
  • Verify monitor routine is not called after disabling Rx Monitor.
  • Disable promiscuous mode.

Verify monitor routine is called when performing a transmitted broadcast packet.

Verify monitor routine is called when performing a transmitted multicast packet.

Reset Tests

Verify basic driver reset functionality. Verify traffic after reset.

Verify consecutive driver reset calls. Verify traffic after final reset.

Verify MLID increments the AdapterResetCounter for the current board instance and not for any other instance.

Verify driver reset with an invalid board number returns ODISTAT_BAD_PARAMETER.

Verify basic driver reset instance functionality. Verify traffic after reset instance.

Verify when MLID is not assembly spec version 3.31 or greater or C spec version 1.11 or greater that it returns completion code: ODISTAT_BAD_COMMAND when the Reset Instance IOCTL function is called.

Shutdown Tests

Verify basic partial shut down/reset functionality. Verify Configuration Table shutdown bit functionality by checking that shutdown bit is set after shutdown and cleared after reset.

Verify consecutive partial shutdowns. Verify traffic after a single reset.

Verify IOCTL (5) returns ODISTAT_BAD_PARAMETER status for an invalid board.

  • Verify MLID will perform a Complete Shutdown and that deregistration has occurred by ensuring IOCTLGetConfiguration does not return ODISTAT_SUCCESS.
  • Verify the same number of boards are loaded at the end of the test as at the beginning.

Verify MLID will perform Complete Shutdown after Partial Shutdown with no reset between them.

Verify MLID will perform Complete Shutdown for hot plug functionality. This is checked by doing a Complete Shutdown and then reloading without having to completely unload after the shutdown.

  • Verify applicable boards are de-registered.
  • Verify MLID will reload, rebind, and then function properly.

Verify basic Partial Shutdown Instance/Reset Instance functionality of each logical board. Verify functionality of each board with traffic. Verify Configuration Table shutdown bit functionality by checking that bit is set after Partial Shutdown Instance and is cleared after Reset Instance. Check for bad command return code is spec does not support these IOCTLs.

Verify consecutive Partial Shutdown Instances and Reset Instances. Verify traffic after a single Reset Instance and then after multiple Reset Instances.

Verify Partial Shutdown Instance and Reset Instance of logical boards in sequential order. Boards will be shutdown in sequential order until all have been shutdown. Boards will then be reset in sequential order until all have been reset. Verify functionality with traffic after each board is partially shutdown or reset.

  • Verify MLID will perform a Complete Shutdown Instance and that de-registration has occurred by ensuing that IOCTLGetConfiguration does not return ODISTAT_SUCCESS. Verify same number of boards are loaded at the end of the test as at the beginning. Check for bad command return code if spec does not support IOCTL.

Verify MLID will perform Complete Shutdown Instance after Partial Shutdown Instance with no reset between them.

Verify MLID will perform Complete Shutdown Instance of sequential logical boards with no reload/rebind of boards until they have all been shutdown. Verify functionality of each board with traffic.

B.1.3 Traffic and Endurance Tests

There are seven traffic and endurance tests. It takes 2 to 5 hours to complete these tests.

Frame Integrity Tests

Verify data integrity with incrementing (min-to-max) and decrementing (max-to-min) data sizes at medium load.

Verify data integrity with incrementing (min-to-max) and decrementing (max-to-min) data sizes at heavy load.

Verify data integrity with various sizes (100 packets each size) with the data pattern changing with each size at medium load.

Verify data integrity with various sizes (100 packets each size) with the data pattern changing with each size at heavy load.

Verify data integrity with random packet sizes and pattern change with each size for 5 minutes medium load.

Verify data integrity with random packet sizes and pattern change with each size for 5 minutes heavy load.

Internal Router Tests

Verify data integrity with incrementing (min-to-max) and decrementing (max-to-min) data sizes at medium load.

Verify data integrity with incrementing (min-to-max) and decrementing (max-to-min) data sizes at heavy load.

Verify data integrity with various sizes (100 packets each size) with the data pattern changing with each size at medium load.

Verify data integrity with various sizes (100 packets each size) with the data pattern changing with each size at heavy load.

Verify data integrity with random packet sizes and pattern change with each size for 5 minutes medium load.

Verify data integrity with random packet sizes and pattern change with each size for 5 minutes heavy load.

The data patterns used in these tests are as follows:

  • 8-Bit Incremental: Increment each byte (00, 01, 02, 03, ...)
  • 8-Bit Decremental: Decrement each byte (FF, FE, FD, FC, ...)
  • 8, 16, & 32 Bit Inverted: Invert each byte, word, or dword (AA, 55, ...)
  • 8, 16, & 32 Bit Rotate Left: Rotate bit through each byte, word, or dword (01, 02, 04, 08, 10, 20, 40, ...)
  • All bits set or cleared: All bytes FF or all bytes 00

Transmit Overflow Tests

Verify MLID calls Transmit Complete in the correct sequence for all ECBs sent.

Verify MLID actually transmits ECBs in the correct sequence by monitoring Echo packets received back from the TGEN client.

Verify MLID calls Transmit Complete in the correct sequence for all RAW ECBs sent.

Verify MLID actually transmit RAW ECBs in the correct sequence by monitoring Echo packets received back from the TGEN client.

Receive Overflow Tests

Verify the MLID properly handles multiple NO_ECB_AVAILABLE return status when calling any of the MSM AllocateRCB functions. Verify MLID has recovered from no ECB condition by sending normal traffic.

Verify MLID can handle a heavy receive load and recover from any receive overflow error conditions. Verify MLID has recovered from overflow condition by sending normal traffic.

Priority Packet Tests

Verify MLID calls Transmit Complete in the correct sequence for all ECBs sent of a particular priority level.

Repeat test case with background receive traffic.

Verify MLID calls Transmit Complete in the correct sequence for all RAW ECBs sent of a particular priority level.

Repeat test case with background receive traffic.

LAN Stress Test

Multiprocessor stress test:

—Verify data integrity (15 minutes)

Uniprocessor stress test:

—Verify data integrity (10 minutes)

Jumbo Packet Test

The Jumbo Packet Test duplicates the Frame Integrity Test, but does so by utilizing jumbo packets. The test is only applicable for drivers that support jumbo packets.

B.1.4 Miscellaneous Tests

There are nine miscellaneous tests. It takes about 1 hour to completes these tests.

Information Integrity Tests

Verify driver static information (description strings, spec version, driver version, and date).

Outdated API Tests

Verify driver import list is valid for ASM HSM specification.

Verify driver import list is valid for C HSM specification.

Load/Unload Tests

Verify DriverParameterBlock information. Allowances must be made for each of the different specification versions.

Verify repetitive load and unload calls. Verify same number of frames loaded after unload/reload sequence and validate with traffic.

Verify driver does not load twice with the same options.

Verify driver returns all resources when unloaded.

Node Address Override Tests

Verify a valid node override address is accepted and the client responds on the new address.

  • Verify the client does not respond to the original (default) node address.

Verify a multicast (or functional) node override address is rejected.

  • Verify the address is modified to be a valid node or the driver maintains the default node address.

Verify a broadcast node override address is rejected.

  • Verify the driver keeps the default node address or the address is modified to be a valid address.

Canonical/Noncanonical Tests

Verify that the driver can operate correctly when configured to a canonical or noncanonical mode.

Reject Error Packet Tests

Verify traffic for valid length packets with no CRC.

Verify traffic for Runt packets with CRC.

Verify traffic for Runt packets with no CRC.

Verify traffic for Long packets with CRC.

Verify traffic for Long packets with no CRC.

Verify traffic for Jabber packets with CRC.

Verify traffic for Jabber packets with no CRC.

Verify traffic for Very Short packets with CRC.

Verify traffic for Very Short packets with no CRC.

Verify traffic for packets with incorrect value in MAC header frame length field. Packet size is computed from MAC frame length is less than actual packet size.

Verify traffic for packets with incorrect value in MAC header frame length field. Packet size is computed from MAC frame length is greater than actual packet size.

Verify traffic for packets with incorrect values in MAC header frame length field. MAC frame length is zero.

HSM Checksum Tests

Verify management IOCTL for HSM Checksumming for MCECB_CON_GET_CAPABILITIES control function.

Verify management IOCTL for HSM Checksumming for MCECB_CON_ENABLE_ACTIVE_CAP control function.

Verify management IOCTL for HSM Checksumming for MCECB_CON_DISABLE_ACTIVE_CAP control function.

Verify management IOCTL for HSM Checksumming for MCECB_CON_DISABLE_REMOVE_CAP control function.

Verify HSM checksum functionality for IPv4.

  • Verify HSM checksum functionality for TCP.
  • Verify HSM checksum functionality for UDP.
  • Verify HSM checksum functionality for RSVP.
  • Verify HSM checksum functionality for ICMP.

MLID Time Slice Tests

Verify the MLID's shutdown (driver unload) and initialization (driver load) routines do not run over 10 seconds without relinquishing control.

Verify the MLID's reset (IOCTL 6) routines do not run over 10 seconds without relinquishing control.

LDI/NBI File Tests

Verify the LDI file syntax is correct and complete.

Verify the driver/adapter can be auto-detected (if applicable0 based on the PAR: and PROD: field values.

B.1.5 Manual Tests

There are five manual tests. It takes about 30 minutes to complete these tests.

Connector Types Tests

For each connector on the adapter, verify traffic data integrity with random packet sizes and random data patterns at a medium-high load. Traffic will be tested using the Frame Integrity test case 6. Record all connectors tested in the Setup Options.

Linespeed Tests

For each linespeed supported by the adapter, verify traffic data integrity with random packet sizes and random data patterns at a medium-high load. Traffic will be tested using the Frame Integrity test case 6. Record all linespeeds tested in the Setup Options.

Half/Full Duplex Tests

For each mode of transmission supported by the adapter, verify traffic data integrity with random packet sizes and random data patterns at a medium-high load. Traffic will be tested using the Frame Integrity test case 6. Record all transmission modes tested in the Setup Options.

HIN Aware Tests

Verify that the bus tag and the slot values of the driver configuration table on all loaded boards are correct.

Cable Disconnect Tests

Verify the driver can handle cable disconnects and reconnects at different locations. Verify the driver handles normal traffic before disconnecting the cable. Verify the driver recognizes a disconnected cable and/or times out on the transmit returning the ECB to the upper layers within 20 seconds (driver calls TransmitComplete/ServiceEvents). Verify the driver can handle normal traffic again when the cable is reconnected.

B.1.6 Optional Test

There is one optional Performance Test. It takes about 10 minutes to complete this test.

Performance Test

The Performance Test is designed as a development tool to assist LAN developers determine how driver modifications affect LAN throughput. The test measures the driver’s ability to receive packets from 16 bytes to max packet size in 2x steps.

To use this test, simply run the test using the default/unmodified driver. Make the desired driver modifications and copy the revised driver to the SYS:SYSTEM directory replacing the existing driver. Rerun the test and compare the results by scrolling to the previous test results. To ensure the best possible results use servers with high speed CPUs and a quality hub/switch. This test was not designed to compare different LAN adapters on different systems due to hardware dependencies. If you wish to publish comparison results, use a test suite designed for that use that monitors the test environment as well as the performance.