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.
There are eight basic transmit and receive tests. It takes 20 to 40 minutes to complete these tests.
The Receive Tests verify reception of DIRECT packets, min-to-max packet sizes, and all frame types. The tests verify the following:
The receive tests also verify the reception of broadcast packets, min-to-max packet sizes, and all frame types. The tests verify the following:
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).
Verify IOCTL returns ODISTAT_SUCCESSFUL and maintains value in configuration table.
Verify IOCTL returns ODISTAT_SUCCESSFUL and updates value in configuration table.
Verify IOCTL returns ODISTAT_SUCCESSFUL but does not update value in configuration table.
Verify IOCTL returns ODISTAT_SUCCESSFUL and updates values in configuration table.
Verify IOCTL returns ODISTAT_BAD_PARAMETER and does not update value in configuration table.
Verify LookAhead requirements with promiscuous mode enabled, if supported.
Verify transmit from min-to-max, all boards, medium data rate.
Verify transmit ECB fields have not been altered, min-to-max, all frames.
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).
Verify transmit raw send packets from min-to-max, all boards, medium data rate.
Verify transmit ECB fields have not been altered.
Verify source route TX handler is called on transmits.
Verify source route RX handler is called on receives.
Verify Address fields are correct and Rii bit is set.
Verify ECB DriverWorkspace has Source Route reception type bit set.
Verify ECB DriverWorkSpace[1] = 01h for 802.2 Type I packets.
Verify ECB ProtocolID is correct.
Verify packet data length and data.
Verify ECB DriverWorkSpace[1] = 02h for 802.2 Type II packets.
Verify ECB ProtocolID is correct.
Verify packet data length and data.
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.
Verify the driver handles multiple fragments.
Verify the driver handles a single logical data buffer that straddles two physical address blocks.
There are ten I/O Control tests. It takes 2 to 3 hours to complete these 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)
Configuration Table version 1.13 (Asm HSM 3.30)
Configuration Table version 1.14, 1.20, and 1.21 (Asm HSM 3.31, C HSM 1.10 and 1.11)
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)
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 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.
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.
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.
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).
Verify MLID returns ODISTAT_BAD_PARAMETER for illegal Management PIDs.
Verify MLID returns ODISTAT_NO_SUCH_HANDLER for legal but unsupported Management PIDs.
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.
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.
Verify registration of Tx Monitor returns ODISTAT_SUCCESFUL.
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 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.
Enable promiscuous mode to verify monitor routine functions properly when in promiscuous mode.
Verify monitor routine is called when performing a transmitted broadcast packet.
Verify registration of Rx Monitor returns ODISTAT_SUCCESSFUL.
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 disabling Rx Monitor with invalid routine pointer returns ODISTAT_FAIL ODISTAT_BAD_PARAMETER and Rx Monitor is unaffected.
Enable promiscuous mode to verify monitor routine functions properly when in 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 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.
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 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 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 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.
There are seven traffic and endurance tests. It takes 2 to 5 hours to complete these 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.
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:
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.
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.
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.
Multiprocessor stress test:
—Verify data integrity (15 minutes)
Uniprocessor stress test:
—Verify data integrity (10 minutes)
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.
There are nine miscellaneous tests. It takes about 1 hour to completes these tests.
Verify driver static information (description strings, spec version, driver version, and date).
Verify driver import list is valid for ASM HSM specification.
Verify driver import list is valid for C HSM specification.
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.
Verify a valid node override address is accepted and the client responds on the new address.
Verify a multicast (or functional) node override address is rejected.
Verify a broadcast node override address is rejected.
Verify that the driver can operate correctly when configured to a canonical or noncanonical mode.
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.
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 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.
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.
There are five manual tests. It takes about 30 minutes to complete these 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.
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.
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.
Verify that the bus tag and the slot values of the driver configuration table on all loaded boards are correct.
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.
There is one optional Performance Test. It takes about 10 minutes to complete this 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.