release.txt Driver File Contents (TM3200LAN.zip)

                     Release Note for B57DIAG Engineering Diagnostics.
                    ==================================================
Due to interrupt sharing problem  on some systems with older BIOS, interrupt test and all loopback test
will fail on some of these rare systems. If so, it is a bios problem and the way to get around this is to assign
the Device Under Test to another IRQ.

version 7.07
    Bug Fix:
    ========
    1. Problem: (CQ# 8766)
           Diags bustest test error reported on the 5705.
       Cause:
           The bustest is not supported on the 5705 family of devices. The 
           5705 family of device does not provide direct access to DMA engines.
           The 5700/01/02/03/04 did provide direct access to the DMA engines.
       Fix: 
           When the bustest is now run a NA is printed out to note that the 
           bustest is not applicable to the 5705 family of devices. Originally
           running the bustest on the 5705 family of devices would produce an
           error.
       Impact:
           As described above

version 7.06
    Bug Fix:
    ========
    1. Problem: (CQ# 8669)
           After running nictest, diag fails to reset phy and display the DFE locks up message when
           exit to DOS.

       Cause:
           The issue is due to ASF and Diag are fighting for mii access.
           When start Diag, Diag will put ASF running in a loop by writing
           DEVICE_RESET_MAGIC to offset 0xb50 and 0 to the last_driver_state
           of the NIC_SHARED_DATA in SRAM.
           When exit Diag, Diag will issue a GRC reset and release ASF.  ASF is
           activated and fighting with Diag to access mii.
           As a result, Diag will fail the DEF Taps tests when resetting phy.
       Fix: 
           The workaround is to reset the phy before release ASF.  
       Impact:
           As described above


version 7.05
    Bug Fix:
    ========
    1. Problem: 
           User is not able to program blank eeprom/flash and getting NVRAM corrupted message. 
       Cause:
           Diag will perform a NVRAM check before programming bootcode.  If NVRAM image is blank or corrupted, diag will
           display NVRAM corrupted message and exit to DOS.
       Fix: 
           In case of NVRAM is blank or corrupted, if user specified -m, -mac or -fmac together with -f option, diag will 
           let user reprogram the NVRAM.  
       Impact:
           It will have impact when user tries to program a blank eeprom/flash or recover a corrupted NVRAM image.

    2. Problem: 
           When user try to edit bootcode image using -meep command line options, diag will take "\n" character as part of the 
           input parameter.
       Cause:
           This issue was introduced since version v7.00.  Since gets() lib function in diag has been replaced by fgets() 
           lib function, "\n" character will be included as part of the input string.

       Fix: 
           Filter "\n" out from the input string before process the data parameter.
 
       Impact:
           As described above.



version 7.04
    Bug Fix:
    ========
    1. Problem: 
           "V" Option in dmaw and dmar commands is not working when user specified -b (byte swap) option.
       Cause:
           "V" Option in dmaw and dmar commands will cause diag to verify data between SRAM and Host memory.
           Wehn user enter -b optioin, diag did not byte swap data before comparing data from SRAM and Host memory.

       Fix: 
           Wehn user enter -b optioin, diag will byte swap data before comparing data from SRAM and Host memory.
       Impact:
           As described above.

    2. Problem: 
           reset -w did not for bootcode to complete loading.
       Cause:
           This issue was introduced since v7.01.  
           When user enter -w options, diag did not wait for bootcode to complete loading.
           It is dur to the origanal logic was broken by the new added debug code.

       Fix: 
           The issue has been fixed such that diag will wait for bootcode to complete loading if -w option has been used.
 
       Impact:
           As described above.


version 7.03
    Bug Fix:
    ========
    1. Problem: (CQ 8606)
           Diag allow 1000FD PXE speed on copper cards.
       Cause:
           Diag allow user entering invalid speed selection for PXE and MBA.
           Speed of 1000FD is only valid for fiber card.  Diag did not check card type before 
           executing selected option.

       Fix: 
           Diag will check for card type before executing selected speed option for PXE and MBA.
           It will only executing 1000FB speed option for PXE and MBA if target is a fiber card.
 
       Impact:
           As described above.

version 7.02
    Bug Fix:
    ========
    1. Problem: (CQ 8461)
           Customer requests to modify the way diag and udiag handle corrupted NVRAM case. 
       Cause:
           In command line mode, diag and udiag will try to recover NVRAM content when it 
           detects incorrect Magic Value or incorrect checksum of the NVRAM contain.
           In case of diag running in engineering mode or -cmd option switch has been enter when running udiag, 
           both softwares will not try to recover NVRAM content.
       Fix: 
           Diag and udiag will display error messages when corrupted NVRAM content is detected.
           Then diag will exit and no action will be taken.
           In case of diag running in command line mode, diag will suggest user to reprograme NVRAM.
 
       Impact:
           As described above.


version 7.01
    New Addition: 
    =============
    1. Request:
               Added incremental length option in dmaw and dmar cmds.
       Change:
               Added -i option in cmd dmaw and dmar.  With this option, diag will dma read/write start with 60 bytes to 
               a maximum bytes count specified by -l option.  -l option default to 256.
    2. Request:
               Remove 1G lines open/show loop back test (D4) from nic test suite.
       Change:
               Test D4 (screening for 1G Tx/Rx lines open/short) has been removed from nic test suite.
               D5 test (1G False Carrier) will become D4.

           
version 7.00
    New Addition: (Support 5705F)
    =============
    1. Request:
               Support 5705F
       Change:
               Added 5705F Device ID to diag.

version 6.31
    Bug Fix:
    ========
    1. Problem: (CQ 8445)
           5701 fiber card failed B2 (DB test) when running diag v6.30
       Cause:
           In 5701 fiber card, bootcode will monitoring the link change.
           If there is link change, bootcode will initialize the mac to 
           negotiate for link and modify the descriptors.  
           During DB test, even cpu has been stopped, mac may still try to modify descriptors.
           As a result, DB test failed.  
       Fix: 
           Diag will stop cpu and reset mac block before running test to prevent mac accessing the DB block. 
       Impact:
           As described above.

version 6.30
    Bug Fix:
    ========
    1. Problem: 
           Expansion ROM test failed during ikos emulation.
       Cause:
           Emulator was responding to slow and incorrect data is read.  
       Fix: 
           Added a delay before each expansion ROM read for emulation.
       Impact:
           As described above.
    
    2. Problem (CQ#8288): 
           CPU hangs post Expansion ROM testing.
       Cause:
           The memory arbiter is reset during CPU execution.  
       Fix: 
           Halt the CPU, reset the memory arbiter and restart the CPU.
       Impact:
           As described above.


    New Addition: (CQ#8350)
    =============
    1. Request:
           Add a field syntax for "ENABLE PHY AUTO POWERDOWN" in eeprom.txt file.
       Change:
           Diag has been modified to allow user to change the "ENABLE PHY AUTO POWERDOWN" in input text file. 
           The keyword is:
           enable_auto_powerdown = yes/no
    
version 6.29
    Bug Fix:
    ========
    1. Problem: 
           B5 test (mbuf sram test via dma) screen displayed incorrect pattern info. 
           As the screen display diag was testing all zeros pattern, in fact it was 
           test 16 zeros and 16 FFs pattern.
       Cause: 
           Pattern was selected by passing a pattern index to the pattern generator.  
           However, incorrect index has been used.
       Fix: 
           Diag will pass a correct pattern select index to the pattern generator such that the 
           screen will not display incorrect pattern info.
       Impact:
           As described above.

version 6.28
Bug Fix:
    ========
    1. Problem(CQ#8285): 
           Commands in B57UDAIG cause system to freeze at bios boot.
       After entering the following commands and reboot system, system hang after memory check.
           The system is a lom system and pxe code may be in BIOS.
           b57udiag -mba 1
           b57udiag -mbas 4

       Cause:
           When user enter -mba 1, -mbas 4 option switch, diag will update nvram and enable mba and set the speed to 4.
           In case of no mba code in nvram, firmware may provide incorrect info to BIOS and case system to hang.
           
       Fix: 
           Diag will check if mba/pxe code is loaded in nvram before enable the bits in nvram.
       Impact:
           As described above.


    2. Problem(CQ#8287): 
           elog functionality not work per spec.
           When user enter 'b57udiag -elog out.txt' b57udiag.exe is not performed and only Help command is displayed.

       Cause:
           elog option switch was not enabled for b57udiag.exe. Therefore, b57udiag will not take 'elog' as a valid option.
           Such that Help command was displayed.
           
       Fix: 
           elog option switch has been added to b57udiag.
       Impact:
           As described above.

    3. Problem(CQ#8211): 
           The -mbap option prints out an incorrect error message and 
           executed correctly.
       Cause:
           In the code the wrong bit field was being used for the -mbap 
           option error checking.
       Fix: 
           Changed the code to use the correct bit field.
       Impact:
           As described above.

version 6.27
    Bug Fix:
    ========
    1. Problem: (CQ #8259, #8273) 
           The CPU test and VPD fails on some 5701 systems.
       Cause:
           Debug code was left in by mistake on v6.26.
       Fix: 
           Removed the debug code.
       Impact:
           As described above.

    2. Problem: (CQ #8258) 
           The secfg command had labels swapped for the options 2 & 3.
           The Power Dissipated (2) and Consumed (3) "D" states were swapped.
       Cause:
           The printf statement has always printed these options swapped.
       Fix: 
           Modified the printf statement so the "D" states are correct.
       Impact:
           As described above.

    3. Problem: (CQ #8237) 
           Add device id to -geneep or expose -meep to customers.
       Cause:
           There is no "official" mechanism to update the device id within a bootcode image
       Fix: 
           Diag has been modified to allow user to change vendor id and device id in input text file. 
           The keyword is:
           system_vendor_id = xxxx
           system_device_id = xxxx

       Impact:
           As described above.


    4. Problem: (CQ #8276) 
           DOS Diag: Diag needs to return ErrorLevel for invalid cmd line switch.
       Cause:
           There is no error level has been returned for invalid cmd line switch.
       Fix: 
           Diag.exe will return 140 when an invalid command line argument is entered.  
           The same has been done for b44diag.
       Impact:
           As described above.

   5. Problem: (CQ #8276) 
           Diag does not exit test when NVRAM Contect test fails.
       Cause:
           Exit diag when NVRAM Contect test fails has been removed for some 
           special test, but never put back after that.
       Fix: 
           The b57diag will not continue testing eventhough the NVRAM content 
           check has failed. diag will exit properly with error code.
       Impact:
           As described above.


version 6.26
   Bug Fix:
   ========
    1. Problem:
           Hardware fixes in 5704 B0 silicon did not get enabled for the target port but the partner get enabled in verson 6.25
       Cause:
       After GRC reset on target port, diag will enable HW fixes for the target port and the partner port.
       PCI config Reg 0x4 of the target port got clear by reset,  therefore, diag lost memory access.  As a result,
           hardware fixes did not get enabled on the target port.  Hardware fixes only got enabled on the partner port.
  
       Fix: 
           After GRC reset, diag will restore memory access (write 0x6 to PCI Cfg Reg 0x4) before enabling hardware fixes. 
           Also, Bit 27 of Reg 0X64 will not be set.
       Impact:
           As described above.

    2. Problem: (CQ8242,8234)
           5704SB0 Fiber fails C5 VPD: Read Test intermittently.
           5704SB0 Fiber fails C5 VPD: Loading Firmware test intermittently.
       Cause:
       During VPD test, diag did not stop cpu when loading VPD firmware code.  
           Since CPU was in the unknow state, loading VPD firmware without stopping the CPU might have unexpected result.
       I had found the PCI config Reg 0x4 has been clear and memory access has been disabled.
           From PCI bus trace, there was not any write to  PCI config space register 0x4 to clear this register or any
           unexpected GRC reset during VPD test. However, the unexpected cpu activities may cause chip to reset itself 
           such that Diag lost memory access as a result.

       Fix: 
           Stop CPU before loading VPD firmware code can prevent unexpected cpu activities.  Issue cannot be reproduced
           after 6800 Iterations. 

       Impact:
           As described above.

    3. Problem: (CQ8242,8234)
           b57diag IPMI pass-thru code programming problem.  
           Using firmware 3.19, IPMI pass-through 2.08, and b57diag v6.18.
           The following issues had been found.  
           1. Chip/file mismatch:  Getting the error message that
          says the file doesn't match the hardware (i.e. fiber vs. copper mis-match).
              Firmware type had been verified.

           2. VPD write test failure:  VPD write failure on the
              first iteration of the VPD test (the only time it does the write test).

           3. The option to force a write test doesn't work with the vpdtest
              command; even with that option, it only attempts to write once.  

           4. Programming failure:  Intermittently fail to program the SEPROM properly.  
              Getting a subsequent checksum test failure.

       Cause:
       
       1. When the IPMI pass-thru code was origenally running, 
              it would enterfere the mii access from diag.  As a result, diag would get 
              incorrect phy type and thinking the chip was a fiber chip. As a result, diag will fail code/image type matching  
              When programming new code.
              This will not happen if there is no IPMI pass-thru running origenally.

           2. During VPD test, diag did not stop cpu when loading VPD firmware code.  
              Since CPU was in the unknow state, loading VPD firmware without stopping the CPU might have unexpected result.
          VPD write test failure can be related to not stopping CPU before loading VPD firmware code.

           3. Forcing write test in VPDtest will write to NVRAM.  If running force write test in VPDtest in many iterations will kill
              NVRAM.  As a result, force write test in VPDtest has been removed.

           4. Same as item #2.

       Fix: 
           Stop CPU before loading VPD firmware code and boot code can prevent unexpected cpu activities.
           Also, stop CPU activities after programming firmware can also prevent CPU interferes diag's normal funcitons.
           Therefore, CPU will be stopped before and after firmware programming under normal conditions.  This will not be applied to any test, 
           such as CPU test and VPD test, that require cpu running.

       Impact:
           As described above.





version 6.25
    New Addition: (Support 5704 B0)
    =============
    1. Request:
               Enable hardware fixes in 5704_Bx parts for known 5704 Ax errata.
      Change:
               Added code to driver init routines to enable hardware fixes in
               5704 B0 silicon.  See 5704 errata for more details info about
               the changes/fixes in B0 silicon.


version 6.24
   Bug Fix:
   ========
    1. Problem: (CQ8109)
           While running the MII test (C4) in the Broadcom diagnostics on 
           a 5700 the test will eventually either fail or the system will hang.
       Cause:
           Delate in between polling for mii read/write completion has been reduce to 25us.
           It will increase polling frequency.  As a result, system may fail MII test.
       Fix: 
           Increase delay from 25us to 50us, problem goes away.
       Impact:
           As described above.

version 6.23
   Bug Fix:
   ========
    1. Problem: (CQ #8083)
           In the "-n" manufacturing mode diagnotics can print out an
           incorrect VID.
       Cause:
           When the NVRAM is programmed in manufacturing the VID, DID, SVID,
           and SDID are updated in the NVRAM and the device and not in the 
           global memory copy that diagnostics keeps. 
       Fix: 
           Before the VID, etc is printed out diagnostics now reads the devices
           value and updates the global memory copy.
       Impact:
           As described above.

    New Addition:
    =============
    1. Request:
         Want the false carrier test to be executable in engineering mode
         via "carriertest" after the "loadd" command is executed
         - this is done to allow the voltage register to be changed after 
           the "loadd" and then execute the false carrier test
         - initially "nictest d5" was used to run the false carrier test but
           the "loadd" and the false carrier test are automatically executed 
           one after the other and that would clear any voltages that were setup
           before the execution of the "nictest d5" command
       Change: 
         Added code to achieve the above.

version 6.22
   Bug Fix:
   ========
    1. Problem: (6167)
           The 'blast -q' option, which adds software CRC-32 on trasmitting packets, 
           creates oversized packets when trying to send 1518 byte sized packets making the packet 
           size 1522 bytes instead. This only happened to the 1st 100 packet.

       Cause:
           -q option did not get invoked in the 1st 100 packet and software did not generate the CRC.  It is
           a software bug.

       Fix: 
           Software will generate the CRC for every packet if -q option is entened.
       Impact:
           As described above.
    New Addition:
    =============
    1. Request: (CQ #7657)
         Added an external loopback test with the following features:
         - check for a false carrier at the end of the test
         - allow a user selected number of packets to be transmitted
         - allow the user to display the packet count
         - allow the user to set an error limit
         The user manual documents the details of these options
       Change: 
         Added code to achieve the above.
    2. Request: (CQ #8012)
         Added the -ckdev <xy> option
           x = check chip rev
           y = metal rev 
         If xy does not match the device being accessed diagnostics exits.
         Use this option on a production line to verify that only chips 
         of a specific rev are run with diagnostics and all others fail.
       Change: 
         Added code to achieve the above.
    3. Request: (CQ #8041)
         The '-did' command now also displays the PXE version.
       Change: 
         Added code to achieve the above.
    4. Request: (CQ #8041)
         When diagnostic is run in the manufacturing mode, continually 
         looping testing new devices, the "-dids" information is printed
         at the end of testing each device. This display is useful so that
         manufacturing personnel can verify the information of the device is 
         correct.
       Change: 
         Added code to achieve the above.

version 6.21
   Bug Fix:
   ========
    1. Problem: (7785)
           diag display speed UNKNOWN when set pxe speed to 1000FD.
       Cause:
           Since PXE code did not support 1000FD before, diag is not able to decode the new pxe speed.

       Fix: 
           Added support of 1000FD PXE speed in diag.  User is able to display and set PXE/MBA speed to 1000FD for fiber mode 
           Also modified the few error messages labels.      
       Impact:
           Secfg, setpxe and setmba cmds are modified to support 1000FD (fiber Mode) PXE/MBA speed setting.


    New Addition:
    =============
    1. Problem:
           Secfg cmd provides user a list of item in the EEPROM that user can modily.  Item 18 (voltage setting) is only apply 
           to 5701. However this Item has still been shown as a valid item for other chips.
       Change: 
           Secfg will only show Item 18 as a valid item for 5701.

version 6.20
   Bug Fix:
   ========
    1. Problem: (7785)
           diag display speed UNKNOWN when set pxe speed to 1000FD.
       Cause:
           Since PXE code did not support 1000FD before, diag is not able to decode the new pxe speed.

       Fix: 
           Added support of 1000FD PXE speed in diag.  User is able to display and set PXE/MBA speed to 1000FD for fiber mode
       
       Impact:
           Secfg, setpxe and setmba cmds are modified to support 1000FD (fiber Mode) PXE/MBA speed setting.

version 6.18 
   Bug Fix:
   ========
    1. Problem: (7764)
           -meep switch does not support boot code larger than 8K byte size.
       Cause:
           The issue is due to a software array be limited to 8K.
           In case of the fiber boot code that has 12K size, not the whole file be stored.

       Fix: 
           Once the this array size increase to 16K, it allow the the whole file be stored and the issue is fixed. 
       Impact:
           All boot code has size larger than 8K byte will be affected.

version 6.17 (May 09, 2003)
   Bug Fix:
   ========
    1. Problem: 
           In engineering mode, when blast 1514 byte packet with a 64 bit 00000000FFFFFFFF pattern
           System will hang.
       Cause:
           When the diag fill up the memory with the 64 bit pattern, 
           the software byte counter of the for loop did not increment correctly 
           and course memory overflow and hang the system.

       Fix: 
           Corrected for loop index increment.   
       Impact:
           It hang system when running with any 57xx chip.
   
    New Addition:
    =============
    1. Problem: (CQ 7754)
           Customer has requested to add a -n parameter to the sechk parameter within b57diag in engineering mode. 
           This would allow the test to run with the following behavior:

           - Supress any prompts resulting from executing 'sechk'.
           - Do not automatically correct for an invalid checksum
           - The ability to display and log the sechk results should remain intact.
       Change: 
           Added code to achieve the above.
    
version 6.16 (May 01, 2003)
   Bug Fix:
   ========
    1. Problem: (CQ 7676)
           Diag show DEF lock up error message when testing Fiber cards (TBI_MODE).
       Cause:
           Diag applied Phy reset work around to 5703, 5704 in TBI_MODE.
           This will cause the phy reset work around to fail and display DEF lock up error 
           message.
       Fix: 
           Apply the Phy reset work around to 5703, 5704 and 5705 in Copper Mode only.   
       Impact:
           As described above.
    
           
version 6.15 (April 29, 2003)
   Bug Fix:
   ========
    1. Problem:
           1000BT external loopback test fail on 5704/CIOBE due to no link.
       Cause:
           5704/CIOB-E phy reset occasionally will cause Phy to lock up.  
           Once the phy has been locked up, it will not link up at 1000BT.  
           Phy reset is needed to unlock the Phy.  The same can be found in 5703 and 5705
       Fix: 
           Apply the same work around that has been introduce in V6.14 to 5703 and 5705   
       Impact:
           As described above.
    2. Problem: (CQ #7652)
           When there are multiple different devices in a system and an
           NVRAM update is done, the update stops at the first device
           that does not match the ID in the image file. There can be
           other devices that match the image file ID that do not get
           updated.
       Cause:
           When a device ID does not match a file image ID diagnostics
           exit instead of continuing.
       Change: 
           Changed code to continue checking for device ID that match
           the ID of the NVRAM file ID after an unmatched device ID
           is found.
       Impact:
           As described above.
           

version 6.14
   Bug Fix:
   ========
   1. Problem: (CQ #7583)
         The NVRAM and VPD test will fail if diagnostics is run for
         many iterations.
      Cause:
         The life cycle of the NVRAM will be exhausted if the NVRAM
         test (C1) is run for an extended period of time.
      Change: 
         Modified the code so that write to the NVRAM is done only on
         the first iteration when many iterations are executed.
      Impact:
         For life cycle testing use the diagnostics command "setest"
         in a loop. The diagnostics command "nictest c1 -n=0" will only
         run the test write operation on the first iteration.

    2. Problem:
           1000BT external loopback test fail on 5704/CIOBE due to no link.
       Cause:
           5704/CIOB-E phy reset occasionally will cause Phy to lock up.  
           Once the phy has been locked up, it will not link up at 1000BT.  
           Phy reset is needed to unlock the Phy.
       Fix: 
           New routine has been added to do phy reset for 5704/CIOBE. This routine 
           will issue PHY_RESET and check if the reset is successful.  If not, 
           another PHY RESET will be issued, until max "retry" reaches. Once the max 
           retry has been reached, a warning will be displayed and test will continue.         
       Impact:
           Once a Phy lock up has happened and cannot be unlocked by issuing phy reset, 
           chip will not link up at 1000BT. It will fail the 1000BT external loopback test.

    New Addition:
    =============
    1. Request: (CQ #7398)
         When an invalid DOS command line option is entered, 
         diagnostics displays help screens showing valid command
         line options. A customer requested that the diagnostics banner
         be printed before the display of the valid commands.
       Change: 
         Added code to achieve the above.
    
version 6.13
    Bug Fix:
    ========
    1. Problem: (ClearQuest #7429, #7464) 
           The CPU test fails on some 5701 systems.
       Cause:
           Diagnostic does not wait long enough for the CPU to finish setup.
       Fix: 
           Modified the code the increase the CPU wait time.
       Impact:
           As described above.


    2. Problem: (ClearQuest #7428) 
           Diag fails on 5700 - Mac loopback
       Cause:
           Diagnostic does not wait long enough for the CPU to finish setup during load driver.
       Fix: 
           Modified the code the increase the CPU wait time.
       Impact:
           As described above.

    New Addition:
    =============
    1. Request: (ClearQuest #7439)
           When external loopback test D3 and D4 test fail provide different
           error codes for failures at 10/100/1000 Mbit/s.
       Fix: 
           Added code to achieve the above and documented new error codes.

version 6.12
    Bug Fix:
    ========
    1. Problem:  
           Some tests, such as ASF Test, MSI Test and Reg Test has been skipped for all b57xx except b5788. 
           Also HW_init will initialize chip the same way as 5788.
       Cause:
           The logic that indecate 5788 is the target device will always return 1.
       Fix: 
           Diagnostics is modified such that the logic will truely indecate if 5788 is really the target device.
       Impact:
           As described above.

version 6.11
    Bug Fix:
    ========
    1. Problem:  (ClearQuest #7217)
           On some machines the 5901 is incorrectly classified and the
           gigabit loopback test is run (should be bypassed) and fails.
       Cause:
           During a driver load the chip is reset but the diagnostics does
           not wait for the firmware to complete (setup the PCI registers)
           and this causes the 5901 to be classified incorrectly.
       Fix: 
           Diagnostics is modified so it now waits for the firmware to signal
           that it has completed execution (setup).
       Impact:
           As described above.
    
    2. Problem:  (ClearQuest #7264)
           CPU Test of Dos Diag fails for 5700B3 LOM on Dell 6600.  
           The failure displays, CPU reset failed, register 5034 is 0x1d.
           1)The problem does not occur in b57diag v6.07
           2)The problem occurs in b57diag v6.08, v6.09, and v6.10
           3)The problem is seen on both 5700B3 LOM

       Cause:
           Diagnostics does not wait long enough for the firmware to complete during the setup phase of the CPU test.
        
       Fix: 
           Increase FIRMWARE_WAIT_TIME from 150 to 170 ms to allow firmware has longer wait time to load bootcode.
       Impact:
           As described above.

  New Addition:
   =============
    1. Request: (ClearQuest #7288)
           A customer requested that an error message is printed and an error
           code of 1 is returned when an user enters an incorrect number when
           selecting a card to run tests against from the DOS command line.
       Fix: 
           Add code to achieve the above.

version 6.10
    Bug Fix:
    ========
    1. Problem:  (ClearQuest #7217)
           A 5901 is recognized as a 5705 during manufacturing and the gigabit
           loopback test is run and fail because the device is a 5901.
       Cause:
           In manufacturing diagnostics programs the device's firmware and
           then runs the manufacturing tests.
           Before firmware is programmed the 5901 is classified as a 5705.
           After firmware is programmed diag. did not re-classify the device
           as a 5901.
       Fix: 
           Added code re-classify the device after the firmware is programmed.
       Impact:
           As described above.

version 6.09

    Bug Fix:
    ========
    1. Problem:  
          Software mistaking 5705 device as 5788 and not allow user to update 5705 bootcode.
 
       Cause:
           The logic that indecate 5788 is the target device reported incorrect info.
       Fix: 
           Diagnostics is modified such that the logic will truely indecate if 5788 is really the target device.
       Impact:
           This has been introduce in version 6.08

version 6.08
    1.  Added support to bcm5788.
    Bug Fix:
    ========
    2. Problem:  (ClearQuest #7155)
           User requested the following modification to the -elog option:
           Create the error log file only if an error occurs.
           If the error log file exists append to it.
       Cause:
           Modification Request.
       Fix: 
           Added code to fulfill the user request.
       Impact:
           None.
   New Addition:
   =============
    1. Request: (ClearQuest #7171)
           User requested that the ability to print out the DID,VID, SDID, VID,
           firmware, PXE, PXESpd, WOL, ASF and MBA options from a DOS
           command line option.
       Fix: 
           Added the DOS command line option -dids to provide the feature.
        
version 6.07
    1.  The space between the file name an -f option in 'upgfm' is no longer needed.
    Bug Fix:
    ========
    2. Problem:  (ClearQuest #7155)
           When viewing a log file there is not way to tell if a user stopped
           the testing procedure via a <ctrl-c>.
       Cause:
           When the user presses <ctrl-c> logging is stopped.
       Fix: 
           When a user presses <ctrl-c> the string "User Aborted Testing" is
           logged to the log file.
       Impact:
           None.
    3. Problem:  (ClearQuest #7171)
           When a log file is created and the flash update option is selected
           then an incrementing address counter is displayed on screen and all
           these incrementing values are written into the log file.
       Cause:
           The code does not disable logging of the flash address counter.
       Fix: 
           Disable logging of flash address counter.
       Impact:
           None.
   New Addition:
   =============
    1. Request: (ClearQuest #7155)
           User requested that an error log file is generated when an error
           occurs. Only error information is logged (NOT pass information).
       Fix: 
           Added DOS command line option "-elog <file>" to provide the feature.

version 6.06
    Bug Fix:
    ========
    1. Problem: (ClearQuest #6748)
           The diagnostics command 'memtest -c" fails on the 5705.
       Cause:
           The 5705 memory map is different than the 5700/01/02/03/04.
           The present code does not take this into account.
       Fix: 
           Use the 5705 memory map NOT the 5700/01/02/03/04.
       Impact:
           This test failed on the 5705 on previous version of diagnostics.
    2. Problem: (ClearQuest #7171)
           If a user used the diagnostics command line option "-m" to program
           the MAC address the user HAS to enter the MAC address. If a user
           ESCapes out of entering the MAC address the NVRAM gets corrupted.
       Cause:
           The MAC address entry routine was not coded to handle the ESCape
           sequence correctly and corrupts the NVRAM.
       Fix: 
           Modified the MAC address entry routine so that when a MAC address
           is not entered (ESC pressed) the NVRAM is not corrupted.
       Impact:
           This "-m" corrupted the NVRAM on previous version of diagnostics.
    3. Problem: (ClearQuest #7171)
           When "b57diag -c 0 1 -e b57kia -m -n -t abcd" is run on a 5704 the
           user is not allowed to exit out of diagnostics after the first 
           execution loop. The user is force to run the diagnostics loop two 
           time on each device before he is allowed to exit.
       Cause:
           Since the 5704 is a dual device the command above should run twice
           (once for each device). Due to a coding error the user is forced to
           run four times (twice for each device).
       Fix: 
           Modified the code so the above test is run once per device.
       Impact:
           Described above.
   New Addition:
   =============
    4. Request:  (SQA request)
           Users would like to update the PXE code from the DOS command line
           using b57udiag.exe.
       Fix: 
           Added the DOS command line -pxe option to diagnostics so that the 
           PXE code can be updated.
       Impact:
           None
    
version 6.05
    1.  Enable swapXBAR option in SECFG when 5404 B0 is detected.
    2.  Added 5703B0 ASIC Rev ID 
    Bug Fix:
    ========
    3. Problem:  (ClearQuest #7087)
           The diagnostic DOS command line command option "-firm" fails 
           when programming multiple cards.
       Cause:
           In order to program the NVRAM a mapping has to be done from the
           file image to an NVRAM image. When programming multiple cards
           the mapping routine was mistakenly called multiple time. The first
           call correctly preformed the mapping and the first card is
           programmed correctly. All remaining call corrupted the NVRAM image
           and the following card are programmed incorrectly.
       Fix: 
           Call the file image to NVRAM image mapping routine once.
       Impact:
           Previous version of diagnostics will incorrectly program the 
           2nd-nth card.
           
version 6.04
    Bug Fix:
    ========
    1. Problem: (ClearQuest #5898)
           Warning text is added to the D4 test. The warning text reads
           "(** ZERO LEN LB RJ45 **)".
       Cause:
           Test D4 (screening for 1G Tx/Rx lines open/short) only works
           with zero length (ie short) RJ45 loopback connectors.
       Fix: 
           Text change in code.
       Impact:
            None.

version 6.03
    Bug Fix:
    ========
    1. Problem:  (ClearQuest #6619)
           When the NVRAM is updated via the DOS command line "-firm" command
           the NVRAM update fails.
       Cause:
           The NVRAM image file was incorrectly mapped to the NVRAM.
       Fix: 
           The NVRAM image file is correctly mapped to the NVARM.
       Impact:
            Image loaded to NVRAM with the with previous version of the
            "-firm" command would not work correctly.
    New Addition:
    =============
    1. Request: (ClearQuest #5898)
          Customer requests to test for 1G Tx/Rx lines open/short.
       Fix: 
          Inserted and coded test D4 for 1G Tx/Rx lines open/short testing.
       Impact:
          Original D4 and D5 test now change to test D5 and D6.

version 6.02
    Bug Fix:
    ========
    1. Problem: (ClearQuest #5898)
           D3 (external loopback) test was modified so the it could 
           check for shorts and opens on the 1G lines of short RJ45 cable.
           This test failed with long cables.
       Cause:
           Screening for open and short can be done only on short cables.
       Fix: 
           Open/short screening has been removed from the D3 test so
           that the D3 test would pass with long cables.
       Impact:
           Open/short testing not supported.
    2.  Change copyright string from Broadcom to OEM.

version 6.01
    1.  Fixed setorture command failure.
        Bug added in code since v5.03 where the firmware bootup handshaking
        is tested for twice, which causes the incorrect failure.
    2.  Bounds checking for udiag command line options added.
    3.  Added Support to 5705 A2/A3, 5901 A2/A3, 5705M A2/A3.
    4.  Added OEM NC7761 Gigabit Server Adapter support.
    5.  Modified Phy Interrupt test.  Since the purpose of this test is to check if phy can update our interrupt
        status bit (to generate interrupt) and we do not want to use actually
        interrupt to test this feature we were polling the interrupt status. 
        Since some systems will randomly call our interrupt service routine and clears the
        interrupt status, caused our polling routine to fail to see the interrupt
        status. The workaround was not only polling for interrupt status in the register, 
        but also checks if actually interrupt service routine has cleared the status. 
        If the interrupt service routine clears the status, it will increment a counter to indicate that the status was cleared by
        interrupt service routine.
    6.  Removed "Disable Expansion Rom Test" from Expansion Rom test.
        Once the Expansion ROM is "disabled" on the system, when the diag is accessing to the Expansion ROM, 
        it in fact, is accessing to "non-existing" memory address.   Depending on the system design, the system reaction to the
        "invalid memory access" may be different, and it is very possible to hang the system.

version 6.00
    1.  Customer requested that DOS command line execution of the loopback
        test D3 allow selection of line speed. Line speeds for this test
        can be set via the command line option "-lbspd t/h/g", where
        t/h/g is ten/hundred/giga line speeds.
        To run ten and giga LB "b57diag -t abcd T D3 -lbspd tg"
    2.  A customer requested a DOS command line option to program the firmware
        on a device, only if the did, vid, sdid, & svid of the device matches
        the information in the firmware file.
        Use "b57udiag -firm abc.bin" to program all device on a system where
        the device did, vid, sdid, & svid matches the same information in
        the firmware file "abc.bin".
    3.  5704 support has been added to q57udiag.

version 5.18
    1.  Tx/Rx 32 bit packet counters are extended to 64 bits, to allow
        for longer test runs without a counter rollover.
    2.  -w and -b options take no effect in dmaw cmd in engineering mode.  These had been fixed.
    3.  HP NC7761 Gigabit Server Adapter PCI_ID has been added.
    4.  The 5705 would not catch a open on gigabit Tx/Rx lines during loopback.
        Tap2, mean square error, on the DSP is used to screen for opens.
    5.  Stopping "blast -t -r -n=0" via ESC would stop the Tx/Rx simultaneously.
        If packets are loopedback (LB) some packets would not be RXed due to the LB delay.
        Fixed by first stopping Tx, then waiting, then stopping Rx.
        
version 5.17
    1.  Added 5704 A3 bond ID and Rev ID.

version 5.16
    1.  Extended 5705 status block non-error counters in software.
    2.  Modified 5705 reset sequence required for A2 chips.
    3.  Fix a bug in accessing flash while flash is not supported which will cause system hang.  In bug is at the end of the CPU test.
    4.  Modified enabling Clock Run function

version 5.15
    1.  Fixed incorrect qstat cctet count for 2nd-nth 5705.
    2.  In q57udiag, -mbas speed option will only support auto for Fiber cards
    3.  In q57udiag, setmba and setpxe cmds will only support auto for Fiber cards
    4.  Fixed multiple do with parameter-passing bug
    5.  All loopback tests are using hw counters instead of software interrupts counters.

version 5.14
    1.  Mask out the all W2c bits in offset 0x6 of PCI CFG registers test.

version 5.13
    1.  Increase tx wait time in external loop back to allow all packets can be tx. 

version 5.12
    1.  Fixed CPU test failure with correct reset sequence

version 5.11
    1.  Enable wol En/Dis options in q57udiag
    2.  Removed 5704 support in q5udiag.
    3.  After reset, software will enable clock-run bit in PCI cfg space if 5705 detected.

version 5.10
    1.  Added delay at the end of cpu test to let cpu fully complete loading fw.
    2.  Reduce the frequency of polling register during reset to avoid fighting between CPU and host.

version 5.09
    1. "loadd" cmd will config link speed depend on card/chip type (FE/GE).
    2.  Fixed bug when running "blast" consecutively without a chip reset.
        The bug was introduced in 5.07.
    3.  Removed cpu_mem_access test per Tak
    4.  Modified CPU test util_chip_global_reset to wait for CPU loadd fw completed.
    5.  Fixed bug when running "blast -t" where TXing eventaully stops.
    6.  Modified PCI cfg read mask to skip Bit 15 of offset 0x4c since this bit is w2c.
    7.  Enhance program ASF FW function in both engineering and manufacturing mode.

Version 5.08   
    1. Added 10 and 100 Mbit/s operational mode to the command line options
       -tr and -hlb (pg. 13 in manual)
    2. Added 5782 support.
    3. Added new PCI Device for 5702 A3, 5703 A3

Version 5.07    
    1. Added command line option -tr (pg. 13 in manual) 
    2. Added command line option -hlb (pg. 13 in manual)
    3. Made changes to the blast command to support above options
    4. Modified the way that the diag checks for ASF version. (fixes ClearQuest 6113)
    5. Modified the way to reset the chip.
    6. Increase Phy reset time out.
    7. Modified 5705 PCI cfg register 0x74 read mask.
    8. Fixed standalone_exe flag.
    9. Unset DMA once bit in case of 5701 running in PCXI mode.
    10. Added support to 5705

Version 5.02
        1. Added write function 
        2. Added option -j(jumbo packet) and -t(tcpseg) for loaddrv command
        3. Overhauled t3_mem_pool_init routine for more memory allocation options
        4. Fixed 5705 ROM Size Error
        5. Added Intelligence Mechanism to fw / PXE updrades.

Version 5.01
        1. Added 5704 A2 NVRAM write enable support
        2. Added Configuratin check for TT mode to very secondary port ASF/PXE/WOL enable
        3. Added Cofiguration check for NIC mode to warn user for both port set to 100mpbs
        4. Finalized FE->GE feature with the latest spec.
        5. Fixed checksum in sechk command for ASF.
        6. Fixed cheksum in dir command for ASF.              
        
Version 3.24    
        1. Fixed LED mode when loading driver 
        2. Added CPU debbuging command
        3. Added Internal CPU GPR test 
        4. Added delay for both dmar & dmaw & bustest done polling
        5. Added support for both CPU on Internal CPUGPR test.           

Version 3.23
        1. Fixed Indirect register test on oem system
        2. Fixed asfcfg backward compatibility
        3. Added delay after voltage change.
    4. Fixed 5704S voltage setting value.
        5. Added lowWaterMarkMaxRxFrame for txpkt and blast command
        
Version 3.22  
        1. Added multiple device DMA (bustest, dmar, dmaw)
        2. Fixed dmaw/dmar -c option bug       
        3. Added detection for 5704 in oem products.
        4. Fixed A5 PCI config. register test on 5704.       

Version 3.21   
        1. Fixed 5700/5701 failure on oem machine.
        2. Added delay for cpugprtest
        3. Change voltage control in cpu general purpose register test.
        4. Added 5704S Bond id support
        5. Added Updated Bond id check for 5700
        6. Fixed Voltage regular control correctly for 5704 secondary device
        7. Removed debugging code.
        8. Modified Mac source address during tx/rx
    9. Added 5703SA2 Bond Id fix

Version 3.20
        1. Added loopback packet options.
        2. Added multiple boot agent options (-mba).
        3. Added command line options for b57udiag.

Version 3.19
        1. Fixed bond id checking for CIOB

Version 3.18
    1. Enhanced cpugprtest to test under v1.1, v1.2, and v1.3
    2. Added workaround for 5704 A1 for NVRAM access locking when NVRAM was invalid
    3. Fixed a problem where clock control register is overwritten when driver is 
       loadded.
    4. Added support for 5704S A1
    5. Added support for 5705 (non-mobile version)
    6. Added 5705 cputest failure workaround       

Version 3.17
    1. Inverted polarity for Auto Powerdown mode so that default Autopower
       down is disabled.

Version  3.16
    1. Removed some debug break points.
    2. Fixed 5704 eeprom programming.
    3. Fixed a bug causes 5703A3 to always read 133MHz PCI speed.
    4. Added more statistics support for qstats commands.
    5. Fixed an issue where Tx flow control cannot be set with drvrcfg command.
    6. Added 5901 support.
    7. Added Auto powerdown mode support.

Version 3.15
    1. Changed so that Phy interrupt test is skipped for BCM5705 A0.
    2. Added Mini-PCI configuration in secfg command.

Version 3.14
        1. Fixed memory allocation in pxe programming code.
        2. Added 5702fe exclusion for gig external lpbk.

Version 3.13
        1. Added 5705 support.
        2. Fixed a memory allocation error on some systems.

Version 3.12
    1. Embedded bist data into codes to reduce number of released files.
    2. Corrected some spelling errors.
    3. Fixed -f option to program eeprom image with size greater than 8k.
    4. Added ASF command line to program ASF firmware.
    5. ASF firmware files to be read from a text file.
    6. VPD Write test to run only once if in continuous loop.
        
Version 3.11.0
        1. Added commands "dir", "asfprg" for end user purpose.
        2. Fixed b57udiag freezing problem.

Version 3.10.0    
        1. Fixed Link polarity problem in loopback modes.
    2. Implement Power Saving option for firmware and driver use.

Version 3.09
        1. Fixed a bug when both -m -f are entered in 5704.
        2. Fixed output messages when -fmac option is in use.
        3. Fixed problem with EFI hanging when clearing nic statistics

Version 3.08
        1. Automatically skips serdes loopback if external link is detected in fiber.
        2. Fixed help command in engineering mode.
        3. Fixed -fmac command line.

Version 3.07
        1. Enhenced setest command.
        2. Fixed reset -w option bug                                 
        3. Skipped ROM/PCI config regi. test for secondary device in Daul MAC mode 3 for 5704. 
        4. Create the first version of short diag -- b57sdiag   
        5. Changed Altima indirect access method workaround only specific to A2 revision
        6. Changed to dynamic firmware debug printf
        7. Fixed bustest in ikos system (need more time before checking data)
        8. Added help menu and miscellaneous small changes per oem's request
        
Version 3.06
        1. Fixed serdes loopback failures on some product
        2. Added filename support for -geneep option

Version 3.05
        1. Changed (shorten) delay time for 5704 NVRAM arbitration timeout
        2. Fixe Fiber internal loopback problem. 

Version 3.04
        1. Fixed serdes loopback failures on 5701
        2. Fixed Phy loopback failure on 5700

Version 3.03
    1. Fixed Altima 1011/1012 screening process power on/off problem
    2. Added tx/rx octal display on qstat command.
    3. Changed stsblk command display format from 10-digit-number to 15-digit-number
    4. Added manufacturing mode, concurrent nvram programming and pxe update capability            

Version 3.02
        1. Added workaround for 1011/1012
        2. Fixed some indirect memory access bugs

Version 3.01
    1. Added Fiber Voltage workaround.
    2. Added -fmac <filename> option to program mac address from a file.                                                            

Version 3.00
        1. Added compile option for b57udiag (user diag)
        2. Code size reduction

Version 2.39
        1. Added phy crc counter to engineering blast
        2. Fixed multiple interrupt problem on 5700 B2/B1/B0
        3. Fixed failure when WOL is enabled
        4. Added prevention to program wrong eeprom.bin to device

Version 2.38
    1. Added cread/cwrite command
    2. Fixed broken phy workaround created in v2.37
    3. Fixed sedump command to support ATMEL Flash

Version 2.37
    1. Added 5704 support
    2. Added 5704 A0 workarounds
    3. Added geneep new configuration commands
    4. Fixed bug for chicken and egg problem for LOM write protection
                                   
Version 2.36
        1. Fixed flash corruption failure.
        2. Fixed indirect register test failure.

Version 2.35
        This version does not support more than 3 devices on a PCIX system. It would result
        in register test A2 failure if 4 or more devices are in the system.

        1. Fixed dma test problem in 5701/pcix.
        2. Fixed a failure on phy interrupt test.
        3. Fixed a failure on Rx Cpu test when loaded from the floppy drive.

Version 2.34
    1. Added secondary device (for 5704) NVRAM configaration support
       Cold reset instead of warm reset before exit
    2. Fixed bustest problem with new DOS extender
    3. Added pciinit function call before reset if engineering mode was 
       entered be noinit option to prevent reset & flash access fail problem.
    4. Fixed NVRAM test failure
    5. Fixed Register Faiure
        6. Added legacy eeprom test for sedvt command
        7. Added dynamic directory support
        8. Fixed some bugs in seeprom cfg which did not save cfg completely.
        9. Fixed loopback failure on 5700 for backward compatibility.

Version 2.33
        1. Added seclock command
        2. Added seinit command
        3. Changed setorture command display
        4. Added -e, -a, -w option to sedvt command

Version 2.32
        1. Added coverage for 5702FE
        2. Handle appropriate link polarity for OEM in PHY loopback test

Version 2.31
        1. Added memory test patterns to memory test
        2. Replaced dos4gw dos extender to pmodew
        3. Added fix to eeprom corruption problem
        4. Fixed IRQ9 hanging problem

Version 2.30
    1. Restored the original prompt :> instead of >
    2. Fixed function/do command parameter passing bug
    3. Fixed version string problem
    4. Extended wait time for firmware after reset
    5. Fixed ROM_test/VPD_test failure
    6. Fixed upgfrm command bug
    7. Added -r option for reset/pcii command to not to halt CPU
        8. Changed sechksum command

Version 2.29
    1. Fixed function printf() parameter bug 
    2. Appended CRC for ASF image programming
    3. Changed sechksum command to display every block checksum in the directory
    4. Support two phase boot code
    5. Changed upgfrm algorithm
    6. Changed secfg to support more configurations
    7. Added user define function
    8. Added parameter passing for user defined function and do commands
        9. Added auto malloc()/DPMI memory detection algorithm

Version 2.28
        1. Fixed problem with firmware response
        2. Fixed problem with eeprom corruption
        3. Fixed MSI test to avoid device string corruption

Version 2.27
    1. Fixed atmel bitbang, seread bug
    2. Fixed -i option for 5703A1
    3. Fixed bug for Gigabit link issue. -- not to force Master all the time. 
    4. Added 'skips' 
    5. Fixed EEPROM size detection bug
    6. Fixed Rainer 1000 link problem
    7. Removed test engineering test B8 from test menu
    8. Fixed error control on test D3
    9. Add loading escape if ASF hangs                   
    10. Add ASF cold and warm boot simulation    
    11. Add WOL configuation in menu                     
    12. Fix smbout parameter issue
    13. Added Error Control
    14. Removed flshprg command
    15. In manufacturing mode:
        ROM_test (C7) is skipped for 5700/5701 running on PCIX-bus.
        BIST_test (A4) is skipped for 5700/5701.
        MSI_test (D4) is skipped for 5700/5701.
    16. Removed ROM disable test from 5703_A0 device.             

Version 2.26
    1. Changed MBUF water mark for BCM5702/BCM5703.

Version 2.25
    1. Fixed 5703 register 0x4c00 bit 31/30 error (should be no problem with 5703 A1)
    2. Fixed external loop hang problem

Version 2.24 <Pending>
    1. Added support for bridge detection and testing
    2. Changed nictest command. It take "test list" parameter. By defaut, disable EEPROM content check in engineering mode
    3. Separated register test for each board. 
    4. Added pcicfgtest
    5. Added bitbang mode for atmel/stt FLASH device
    6. Added passthru mode for all atmel/att Flash and seeprom
    7. Fixed @ sign (multiple device command parameter bug)
    8. Added ROM disable test
    9. Fixed scratchpad memory test in conjunction with runing firmware bug.

Version 2.23
    1. Updated 5703 register test
    2. Updated DMA test
    3. Added individual register test with back-to-back access
    4. Fixed Interrupt test failing on BCM5700

Version 2.22
    1. Fixed eeprom programming 4k/8k problem 
    2. Fixed 5704 register test
    3. Fixed receive mask error for 5704 XBar mode
    4. Fixed MIItest failure
    5. Fixed 5704 xbar mode, interrupt line bug
    6. Unconditionally enables RX/TX cpu clock at start up 
       (it may be possible disabled by bootcode for WOL)
    7. Added Bist test
    8. Added back-to-back access register test option

Version 2.21    
    1. Moved changes from bcmdiag version 2.6 - version 2.9
    2. Changed t_writemem16, t_writemem8, t_readmem16, t_readmem8 from big endian to little endian
    3. Separated regtest for 5700, 5703, and 5704

Version 2.20
    1. Fixed blast -q option bug
    2. Fixed ASF eeprom programming gap filling bug
            
Version 2.19
    1. Fixed Register test
    2. Restore letency timer/cache line value after reset
    3. Fixed sleep command 
    4. Fixed rs232 echoing 
    5. Fixed register test: regster 690,694 -> 590,594
    6. Fixed Broadcast config.
    7. Changed IKOS flash clock devider to zero
            
Version 2.18
    1. Fixed VPD test
    2. 5703.bin update
    3. flshdiag.bin update
                
Version 2.17
    1. Stablizing tx/rx test
    2. Fixed memory allocation bug
    3. C5/D4 tests still have to be disabled
    4. D2 test has to be disabled due to board design

Version 2.16.2
    1. command clearbit bug fix
    2. added checksum report for bootstrap on sechksum command
    3. Added MSI test. Due to chip bug, this test will not pass on 5703 A0 chips
    4. Fixed setest failure after running romtest.

Version 2.16.1
    1. Memory Leak fix            
            
Version 2.16
    1. Added support commands for engineering mode
    2. Added auto-polling test to mii_test
    3. Added 10MB loopback test
    4. Fixed "Stack Overflow!" bug
    5. Fixed romtest/vpdtest
    6. Added Backword bcmediag compatibility syntax for upgfrm command
    7. Merged board to board test with Fiber Test
    8. Fixed command line option -i to seach for invalid device id. 
        9. Stablized link in TBI/engineering mode.

Version 2.14
        1. Finalize external memory test coding
        2. Added external memory test option
        3. Added external memory code execution test into external mem test
        4. Fixed wol/pxe enabling/disabling problem
        5. Enhanced -x & -w options to accept inputs 0/1 for disabling/enabling

Version 2.13
        1. Correct FCS error statistic read

Version 2.12
        1. Fixed a bug in PXE programming code

Version 2.11
        1. Fixed DMA failure for specific OEM
        2. Fixed failure on an OEM PCIX bridge

Version 2.10
        1. Added detection for specific OEM
        
Version 2.09
        1. Removed un-neccessary command line options

Version 2.08
        1. Correct Silicon revision 

Version 2.07
        1. Fixed external loopback failure in version 2.06
        2. Added command line option to view eeprom binary file
        3. Disable WOL update function

Version 2.06
        1. Fixed TBI mode failures on phy_type problem
        2. Fixed Specific OEM message
        3. Enter OEM manufacture code to handle link polarity in loopback tests

Version 2.05
        1. Fixed DMA on PCIX failure
        2. Take out packet # on loopback tests
        3. Change order of tests per customer request
        4. Fixed external loopback failure
        5. Changed VPD test
        6. Added -all option
        7. Added -noinit option

Version 2.04
        1. Fixed copper mac loopback hang problem
        2. Fixed D3 loopback link problem

Version 2.03
        1. Added Phy type/led mode/voltage source/part revision selectability in eeprom.txt
        2. Added real/customer rev options
        3. Speed up prog. pxe
        4. Mac I/O reset

Version 2.02
        1. Added TBI support

Version 2.01
    1. Added FORCE_PCI and VOLTAGE_SOURCE to EEPROM.TXT file.
    2. Changed secfg command to support FORCE_PCI and VOLTAGE_SOURCE
        3. Added -coe to continue on error

Version 2.00
        1. Fixed IRQ9 problem on specific OEM
        2. Fixed Interrupt test failure reported from QSA
        3. Fixed CPU test problem reported from Systems Engineers

Version 1.29
        1. Skip test on NIC card that has ODI loaded
        2. Fixed loopback hanging problem by adding delay time to ISR 

Version 1.28
        1. Added generic key code for eeprom generation

Version 1.27.1
        1. Fixed a bug in manufacturing mode
        2. Added compile option for specific oem

Version 1.27
        1. Added sramtest command to test external memory in engineering mode
        2. Added dbgmode to set a debug mode flag in engineering mode
        3. Removed xmtest option which is not really needed
        4. Added patch in loopback test to lower expectation on reception in case of chip testing
        5. Modified external memory test routine
        6. Added options debug/nocrc/chip/mac
        7. Modified LoadPatchFirmware routine
        8. Modified testfailed routine to enter engineering mode if fails and debug option entered
        9. Fixed bug in eeprom programming
         
Version 1.26
    1. Checked-in the fix for HP shared 9 interrupt issue (enabled back irq9 interrupt)
    2. Fixed a bug in loopback tests
    3. Fixed IRQ sharing with another device, such as Intel NIC, on memory read problem
        4. Added CRC patch from Engineering for 5701

Version 1.25  (Internal Verion)
    1. Added -debug option, when it fails jumps to debug prompt
    2. Reduced timeout wait time

Version 1.24
        1. Fixed bug in the load_firmware routine
        2. Disabel IRQ9 chaining

Version 1.23
    1. Added support for BCM5701-A0
    2. Fixed interrupt chaining with IRQ9

Version 1.20
    1. Changed to jump into command mode when no card detected with option -b57eng
    2. Revise options -x and -w as following:
                When nothing entered, always disable PXE/WOL
                When -x or -w is entered, always enable PXE/WOL
                When -f is entered, use eeprom.bin's content for PXE/WOL/PXE speed setting
                When -f is entered and -x or -w is also entered, force PXE or WOL to enable 

Version 1.19.3
    1. Changed -f option to use eeprom.bin PXE and WOL setting instead of forcing to disable

Version 1.19.2
    1. Changed software to exit directly to dos when no card was detected. No ESC needed

Version 1.19.1:
    1. Added Altima/5411 support
    2. Added loop command
    3. Added mrloop command
    4. Added option -geneep, -geneepkey
    5. Added option -ver to display current version number
    6. Removed mac_pref.txt input file for mac prefix -> now should use eeprom.txt to update eeprom.bin.
       The eeprom.bin prefix is used if the mac input is less than 12 digit.
        7. Added RJ45 external loopback for 100/1000

Version 1.19:
        1. Add -xmtest option to increase memory test coverage
        2. Reverse some coding on eeprom file dumping that is no long needed
        3. Change eeprom programming counter display from hex to decimal          
    4. Added B7 MBUF memory special test
    5. Put back interrupt chaining except irq9
    6. Increased MAX_DEVICE from 8 to 16. Now it can support up to 16 devices
    7. Fixed bug to restore phy state from isolated mode after test

Version 1.18e:
    1. Fixed EEPROM access hang when loopback connector is connector is connected

Version 1.18:
    1. Fixed IRQ 9 test D1 hang problem. 
    2. Restored LED to LINK3 LEDMODE after phy loopback test.
    3. Added command rm.
    4. Fixed MAC address display bug.
    5. Added Link speed 10 test A1,A2 failure problem with workaround.
    6. Changed -bus option to test specified slot only. This option is invalid if -c option is used.
    7. Fixed intermitent failure/system hang problem when loopback connector is connected

Version 1.17:
    1. Change MAC address reading to accept variable length instead fixing to 7 digits.
    
Version 1.16:
    1. Changed the parameter misspelling "-dmpi" to "-dpmi"
    2. Fixed the EEPROM size 0x204 programming bug due to the structure size define error.
    3. Display not only device number but also bus:dev on error messages
    4. Fixed Test D1, "Cannot Tx Packet" bug.
    5. No sharing on IRQ 9

Version 1.15:
    1. Added command line option -dpmi to use DMPI method memory allocation
    2. Added command line option -bus bb:dd:ff to test against specified bus & device number
    3. Displays device number on error message

Version 1.14:
    1. Fixed PCI-X eeprom access bug.
    2. Invalidate the default xx-xx-xx-00-00-00 mac address. However, it allow user
       to enter mac address as xx-xx-xx-00-00-00. 

Version 1.13:
    1. Fixed Memory Allocation Problem for Dell 8450.
    2. Added PCI-X support
    3. Programmed MAC (in PCI-X mode) to not allow set the Relaxed Ordering Bit in 
       the Requestor Attributes of transactions it initiates that do not require 
       strong write ordering.

Version 1.12:
    The new options -n, -m, and -f now requires -e option to be activated

    1. New Option -n 
        With this option, the program will run in manufacturing loop. 
        It supports power on/off of UUT. This will ignore the option -I, 
        the iteration option.
 
    2. New Option -m
        Prompt user for the MAC address. With this option, user must enter/scan
        the mac address before testing. The program also checks for the file
        "mac_pref.txt" This is a text file should contain six digits of ASCII 
        MAC three-byte-prefix address. Any of the following format is supported:
 
        Example:
            000467
 
            00 04 67
 
            00
            04
            67
 
        If this file exists, user has option to enter/scan 7 digit hex number. 
        The first digit will be ignored and the last 6 digits will be used for 
        the lower part of MAC address. Combine with the prefix, it creates 6 
        byte (12 digit) hex number. 
        If this file does not exist, the whole 12 digit number must be entered
        for the MAC address. When entering MAC address, a space character is 
        allow between each byte. For example, any of the following is valid.
 
        000467010203
        00 04 67 01 02 03
        1010203           (currently, the scanner uses this format)
 
    3. New Option -f
        Program "eeprom.bin" into EEPROM before testing. The file "eeprom.bin" 
        must be there or the program will not run with this option. 
 
        The -m and -f combination will create the following behavior:
 
        a) -f and -m: 
 
        Program will not validate the eeprom content and go ahead to prompt 
        user for the MAC address. It programs MAC address and EEPROM content 
        and then checks the validity of eeprom content at the end of 
        programming.


        Loading EEPROM content from eeprom.bin: passed   -- enter MAC address after pass here
        Programming EEPROM from eeprom.bin....: passed              
        Checking EEPROM content...............: passed
 
        b) -f only
 
        Program will check the validity of eeprom. If it is not valid, 
        it will act as a), -f -m option. If it is good, it saves the MAC 
        address from eeprom, program new eeprom.bin content into EEPROM 
        and then restores the original MAC address. It checks the validity 
        of eeprom content once more at the end of programming. 


        Checking EEPROM content...............: passed
        Loading EEPROM content from eeprom.bin: passed
        Programming EEPROM from eeprom.bin....: passed
        Checking EEPROM content...............: passed
 
        or 
 
        Checking EEPROM content...............: invalid
        Loading EEPROM content from eeprom.bin: passed         -- enter MAC address after pass here
        Programming EEPROM from eeprom.bin....: passed
        Checking EEPROM content...............: passed
 
 
        c) -m only 
 
        Program will check the validity of eeprom. If it is not valid, 
        it will act as a), -f -m option. If it is good, the program will 
        prompt the user for a new MAC address and program the MAC address 
        only. It checks the validity of eeprom content once more at the 
        end of programming. 
 
        Checking EEPROM content...............: passed        -- enter MAC address after pass here
        Programming MAC address...............: passed
        Checking EEPROM content...............: passed
 
        or 
 
        Checking EEPROM content...............: invalid
        Loading EEPROM content from eeprom.bin: passed         -- enter MAC address after pass here
        Programming EEPROM from eeprom.bin....: passed
        Checking EEPROM content...............: passed
 
 
        d) no -m and -f options
 
        Program will check the validity of eeprom. If it is not valid, 
        it will act as a), -f -m option. If it is good, it proceed to 
        normal diagnostics.
 
        Checking EEPROM content...............: passed
 
        or
 
        Checking EEPROM content...............: invalid
        Loading EEPROM content from eeprom.bin: passed         -- enter MAC address after pass here
        Programming EEPROM from eeprom.bin....: passed
        Checking EEPROM content...............: passed

    4. Fixed -x -w option checksum false error report bug

 

Version 1.11:
    1. Added features to secfg command to allow users to program VPD-R and 
       VPD-W information.
    2. Removed all debugging information to reduce file size.
    3. Manufacture test includes EEPROM content testing. If manufacture checkusm
       is bad, it prompts user to enter MAC address. If the checksum it good, it 
       will save the mac address before programming eeprom.bin if user choose to
       do so. 
    4. Changed Internal MAC loopback test from 100 to 200 packets. 
       Changed Phy loopback test from 100 to 2000 packets.
       Changed RJ45 loopback test from 100 to 2000 packets.
    5. Removed pattern and altenate pattern test from memory test to increase speed.
    6. Removed VPD test to increase speed. Since both eeprom test and vpd test
       exercise hardware eeprom. There is no needs for extensive test for both.

Version 1.10:
    1. Removed bit 13 register 11 read only bit test for MII test
       The MDI Crossover state bit changes internally when there is no cable
       connected. It is not reliable to be tested as read only bit and it is not
       an error. 

    2. Suppressed the error dialog when run without -p option

Version 1.09:
    1. Moved over bcmediag.exe version 1.24 - 1.30 changes.
       
      bcmediag.exe Version 1.30:
        a. Added bustest to test out PCI bus in the worst case scenarios.  The goal is
           to have every data/control lines toggled.
           Usage : bustest -a=address -n=iteration -l=min_len -h=max_len
                   -i=transaction -s=start_case -e=end_case
                   -a : NIC address to DMA data to.
                   -l : Minimum length (default = 256).
                   -h : Maximum length (default = 1024).
                   -n : iteration (default = 1)
                   -i : Number of transactions per pattern (default = 10)
                   -s : Start of test case (default = 0)
                   -e : End of test case (default = 259)

          There are total 260 test cases (258 unique tests cases) which 
          are described as follows:

        Test case#                    Pattern 
        ==========       ==================================
           0             ffffffff ffffffff 00000000 00000000
           1             ffffffff fffffffe 00000000 00000000
           2             ffffffff fffffffd 00000000 00000000
           .                    .
           .                    .
           .                    .
           64            7fffffff ffffffff 00000000 00000000
           65            00000000 00000000 ffffffff ffffffff
           66            00000000 00000000 ffffffff fffffffe
           67            00000000 00000000 ffffffff fffffffd
            .                   .
            .                   .
            .                   .
           129           00000000 00000000 7fffffff ffffffff
           130           00000000 00000000 ffffffff ffffffff (repeat)
           131           00000000 00000001 ffffffff ffffffff
           132           00000000 00000002 ffffffff ffffffff
            .                   . 
            .                   .
            .                   .
           194           80000000 00000000 ffffffff ffffffff
           195           ffffffff ffffffff 00000000 00000000 (repeat)
           196           ffffffff ffffffff 00000000 00000001
           197           ffffffff ffffffff 00000000 00000002
            .                   .
            .                   .
            .                   .
           259           ffffffff ffffffff 80000000 00000000

             If you run bustest command without any parameters, it will perform 
             DMA testing on all 260 patterns with 10 iterations per pattern and
             different data length in each iteration.  First eight bytes of data
             are used to store the following info for debug:

             byte 0-4 : length
             byte 5-6 : iteration#
             byte 6-7 : test case#

        b. Added PCI-X support and work-around for B1 silicon.  This version
           diagnostics detects if the NIC is in PCI-X slot.  If yes, work-around
           is implemented.  However, user still can overwrite this by issuing 
           debug -c=5 to toggle PCI-X work-around before loading driver.

      bcmediag.exe Version 1.28:
        a. Made minor changes to support B1 silicon due to changes in ASIC revision
           format.

      bcmediag.exe 1.27:
        a. Added new commands to utilize BCM5500 built-in BERT features. Three 
           new commands are added:
            * lbertram: load BERT pattern into BERT TX&RX RAM, and enable BERT.
            * dbertram: Dump BERT TX& RX RAM.
            * bertstats: Display BERT statistics.

      bcmediag.exe Version 1.26
        a. Changed initialization of BCM5500.

      bcmediag.exe version 1.25
        a. Added support for Serdes PHY (BCM5500) and TBI interface.
        b. Added code to allow transmit jumbo frames up to 9022 bytes/packet
           with txpkt command. (Note that you have to delete diagcfg.bin
           before run bcmediag if you want to transmit jumbo frames over
           4Kbyte/packet).
        c. Added PCI-X support and work-around for B0 silicon.  This version
           diagnostics detects if the NIC is in PCI-X slot.  If yes, work-around
           is implemented.  However, user still can overwrite this by issuing 
           debug -c=5 to toggle PCI-X work-around before loading driver.

      bcmediag.exe version 1.24:
        a. Enhanced txpkt/txcfg command to allow users to:
           * Transmit random IP headers including IP options.
           * Transmit random TCP headers including TCP options.
           * Transmit random data payload.
        b. Added code to check IP/TCP/UDP checksums of incoming packets.

    2. Changed command user interface routines. This changes some of command syntax
    3. Fixed WOL spelling
    4. Change command help output.
    5. Added -p option to print on Error
    6. Display error on Red dialog with option to continue or print
     

Version 1.08:
    1. Put delay in test C3 to avoid low priority DMA test error
    2. Replaced original nictest with manufacturing tests
    3. Fixed domument error code error, error code number 28 and greater was
       shifted by 1. 
    4. Added error code 39,40,41,42
    5. Changed test B5. External RAM test to detect the existance of external 
       RAM first for testing

Version 1.07:
    1. Changed ESC to CTL-C as break key
    2. Changed -t and -T option to allow multiple group specification in one option
    3. Changed test D3 to be disabled by default
    4. Added "Unit Under Test: NIC" line at error output
    5. Unload all drivers upon exit

Version 1.06:
    Added -I option for iteration

Version 1.05:
    1. Rewrote all tests to comply to OEM's manufacture error message requirement
        2. Added -t to disable tests and -T to enable tests
                 format: -t <gnnn> where g is the group letter can be A,B,C, or D
                                                 n is the subtest number it should be '1' to '9'

             example: -t A345 -t C13 -T b12   this will disable test A3,A4,A5,C1,C3 
                                                          and enable test B1,B2.

Version 1.04:
    1. Added -m option to disable RJ45Loopback Test

Version 1.03:
    1. Fixed multiple card interrupt problem. 
           Original call had only one variable to save original interrupt
           vector. If multiple cards use different interrupts, some origianal 
           interrupt vector get lost. This will cause problem after exiting program.
           Code is changed to support shared interrupt as well.

    2. Comment out some unreachable code in order to reduce code size.

Version 1.02:
    1. Added changes due to changes in boot code firmware 0.6.  Before issuing
       CHIP reset (or GRC reset), it writes a siginature to SRAM so that 
       firmware wouldn't perform code boot initialization such as PHY
       H/W reset, PXE loading, etc...

    2. Added new command to upgrade boot code firmware without corrupting 
       manufacturing information.  
           upgfrm -b -p -f=<filename>
               -b: upgrade boot code. 
               -p: upgrade PXE.
               -f: input filename.

    3. Changed command line option -m to -e to run engineering mode

    4. Added command line -i for force_program_device_id option
           restored option -a for setting base memory address

        5. Added 5701 support

    6. Added multiple card support

        This version change is the same as bcmediag.exe v1.20 changes to v1.23.

Version 1.01:
    1. Fixed and enabled RJ45 loopback test
    The test requires to reset the system each time
    replace the adapter.

Version 1.00:
    1. Fixed Phy Loopback test
        2. Fixed ASIC version number display
        3. Disabled RJ45 loopback test

The program disables PXE and WOL by default.
To enable PXE: type q57diag -x
To enable WOL: type q57diag -w

Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web4, load: 0.64