                     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 11.05

    1. Problem (CQ34050):
           B57diag: 5714S can not pass external loopback test.
       Cause:
           SerDes did not setup properly.
       Fix:
           Correct the procedure to setup SerDes.
           
    2. Problem (CQ33914):
           B57diag: nictest fail on A2 with 5761E
       Cause:
           Access to some critical registers to violate the compliance to PCIe spec.
       Fix:
           Remove test on those critical register when running nictest
            
    3. Enhancement.
           Support 5785 device(Mazama)
           
    4. Enhancement.
           Release for EFI x64 and IA-32.       
    
    5. Enhancement.
           Support 5761 B0       
           
    6. Fix CQ34071 - B5761 Dosdiag-Run Nictest  fail item in C2-CPU Test
    7. Fix CQ34072 - B5761 Dosdiag- Run nictest fail item in F group APE Tests
   

Version 11.04
    1. Enhancement: (CQ33247)
           Modify strings in b57diag secfg "LED Mode"
           
                old strings          new strings 
                -----------------    -------------------------------------
                Mac (0)              Mac(MAC mode) (0) 
                Phy1 (1)             Phy1(PHY mode) (1) 
                Phy2 (2)             Phy2(PHY mode w/Link Quality) (2)
                Shasta Mac (3)       Hub mode (3)
                SharedTraffic (4)    LINK/ACTIVITY LED mode (4)

    2. Problem (CQ33815):
           B57diag: C2 test failed when setting wol by using setwol -e/-d
       Cause:
           Defined SB format 1 rev 0 size was too long causing sb data corruption on write to nvram.
       Fix: 
           Corrected sb format 1 rev 0 length.                    

    3. Fixed the workaround to CQ31805 introduced in v10.55.

Version 11.03
    1. Problem (CQ33746):
          Expansion ROM test made the system hang using 5764 device;
       Cause:
          When the b57diag perform Expansion ROM test, the memory 
          read was performed immediately after memory base address 
          was written into PCI configuration space.  At this moment, 
          the address might not took effect yet.
       Fix:
          Put PCI reads before the memory read, just to make sure 
          that the memory address is written correctly.
    
    
Version 11.02
    1. Problem:
           'phyctrl -s2' return 10M full duplex.
       Cause:
           The b57diag interpreted the PHY control register incorrectly.
       Fix:
           Correct the interpretation, speed select ( bit 6 and 13): 
           11 == reserved
           10 = 1000 Mbit/s
           01 = 100 mbit/s
           00 = 10 Mbit/s

    2. Enhancement:
           Apply CQ31619 fix only to Taishan revision A chip.
          
    3. Enhancement:
           Added GPHY OTP WAR and 10MB Receive Only Mode WAR into util_init_phy() which also causes a phy reset.
          
    4. Problem (CQ32564)
           failed @ G2 with PXE enable and cable in
       Cause:
           . In previous b57diag, the test ID for G9 test was wrong. 
           With correct G9 test id, b57diag g9 failed. 
           . To pass G9 test, b57diag need a system reset; 
           APE diag then pick up the interrupt and post the correct 
           test result back to b57diag. 
           . Previously, Group G test failures were due to 'timeout'.
           The reason is that APE diagnostic didn't post correct test 
           status back to b57diag. This is fixed in apediag.bin version
           0.0.99
           . It is not PXE related.
           . It is not cable in/out related.
        Fix:
           Correct G9 test id; reset system during g9 test;  Ape diag 
           post correct test status back to b57diag.

    5. Enhancement:
           Revised the command 'maclpk' by disabling Link Aware, Link Speed and GPHY APD DLL and restoring accordingly.

    6. Enhancement:
           Removed disabling Link Aware and Link Speed modes from loadding driver.
     
      
      
Version 11.01
   
    1. Add workaround for GPHY 10MB Receive Only Mode.
    2. Finalize the options shown for Taishan family in SECFG menu.
    3. Add GPHY OTP WAR to replace the second enhancement in version 11.00.
    4. Add the new packet pattern 0x5A in Txcfg configuration.
      
      
Version 11.00
    1. Problem : 
              Taishan B0 can't connect at 1000mbps.
       Cause: 
              1000Base-T Control Register doesn't be set properly. The existing workaround doesn't be applied for B0. 
       Fix:   
              The existing workaround applies for B0 as well.       
  
  Enhancements:      
    1. Report the link state based on Auto Nego and Force mode.
    2. Add workarounds for PHY interoperation (based on the bit 31 at offset 0x6804) of Taishan B stepping requested by LSI team.
    3. Support AC131 external PHY.
      
      
Version 10.60
    
    1. Problem : (CQ33189)
              D1 internal MAC loopback test failed with loading driver.
       
       Cause:
              A chip reset was run before porforming D1 test. That resets registers except the global variable 
              which records the driver has been loadded or not. The dismatched condition caused the failure in D1 testing. 
              
       Fix:
              Removed the unnecessary global resetting.

    2. Fix the vpdinfo command on Soledad.
    3. Fix text output in eswitch command.
      
  Enhancements:
    1. Display the SRAM Addr with "--------" for User_Block when running the dir command.
    2. Enhanced and completed the command 'uprg' to program a user file into USER_BLOCK of NVRAM
    3. Added secfg option settings for clkreq, ASPM L0 & L1 and Link Idle mode (on B0).
    4. Chnaged the memory allocation algorithm to shrink the required memory for EFI BIOS when loadding driver.                 
    
Version 10.59
    1. Problem: (CQ32972)
           B57diag v10.58 -fmac switch does not program the mac address correctly on 5764M NIC using Selfboot
       Fix:      
           Correct the logic to handle a corrupted NVRAM which was pre-installed in NVRAM

    2. Fixed IPsec transmit problem in Soledad IPSec loopback test (D9).
    3. Fixed cfgpagesize command to set enable Flash writes. 

    Enhancements:

    1. Removed GPIO CTL register (0xB8) in F1 & F2 APE tests.
    2. Disabled APE self test G5. APE GPIO register test as default.
    3. Set E-Switch default as disabled.
    4. Support 5723 NVRAM auto-sense with OTP auto-config and non-OTP.
    5. Updated Bond ID for 5723.
    6. Enhanced the pause and page display in diagcfg teste, and testd commands.
             
Version 10.58
  Fix:
    1. Problem: (CQ32907)
           If the content of an empty NVRAM are all FF's. That will cause the system hang when programming selfboot image.
       Cause: 
           The logic to check NVRAM size got confused between Format1 and an empty NVRAM.
       Fix: 
           change if(SB_FORMAT(&psf)) to if(SB_FORMAT(&psf)==1). 

    2. Problem: (CQ32564)
           Failed at G2 with PXE enabled and cable in.
       Fix:
           Turn off CPMU power mode during test.
           
    3. Problem: (CQ32591)
           Loop back test failed at D group interation 6.
       Fix:
           Turn off CPMU power mode during test.
           
    4. Problem: (CQ31970)
           Display the wrong error message.
       Fix:
           Corrected the typo.         
           
    5. Problem: (CQ32368)
           NICTEST A2 failed when DASH F/W loaded on Soledad.
       Fix:
           Disable DASH code before running nictest, then restart DASH after nictest completes.
       
    6. Fix for Bond ID test failure on Soledad 5761/e Rev. A1/Ax/Bx.
    
    7. Fix for PCI Bar1 restore for manufacturing mode board swap on Soledad.
    
    8. Fix for supporting Format 1, Rev.3 for Taishan familiy B0. 
    
    9. Fix for Bond ID check for 5723
    
    10. Fix for reloading APE management code after nictest completion.
    
    11. Fix for Soledad mutex errors in VPD and ROM tests.  RxCPU bootcode was locking event mutex reg.
    
    12. Fix for Atmel 45DB161D 16mb device on Soledad.
    
    13. Fixed the Tx packet number dismatched with ifHCOutBroadcastPackets using the command 'blast'.

  Enhancements:
    1. Added read command option to dump host memory in byte/ascii format.

    2. Modified CPU Fetch test (C8) to disable power modes during testing. 

    3. Changed of EEP size for any device under 10MB to display in KB.

    4. Enhanced the command verbose by adding a new option which can output log data without displaying on screen.
           
Version 10.57

    1. Fixed CQ#32493 - APE Indirect Control Reg (F1) @ address 0x24, 0x78, 0x8c RO bits changing.  Masked bits failing RO bits.
                        Address 0x6004 RW bit 0 failure fixed - writing to clear this bit has no effect.

    2. Support Taishan, Caesar II and 5723 A1/B0 chip
    
    3. Fixed CQ31958
         Problem:  
                 B57Diag reports iSCSI firmware version with incorrect/garbage data
         Cause:  
                 iScsi boot firmware string is read from nvram in 32bit words.  Version string was not correctly aligned in the buffer.
         Fix:	
                 Adjusted pointer to the start of the version string in the host buffer.
    
    4. Enhancement : Support new Selfboot image Format 1, Revision 3 which is for Taishan, Caesar II and 5723 B0 chips.

    5. Fixed #CQ32324 - 5761c/e device/board ID check problem when programming bootcode firmware.

    6. Revised the workaround to CQ31970
    
    7. Fixed for CPU test (C2) failure on Soledad when using loopback connector.  

    8. Enchancement : Prevent the user from updating the LED mode in the secfg menu for Taishan/Caesare_II A0/A1.
    
    9. Differetiate Selfboot patches for chip revision between Ax and Bx.
    
   10. Fixed CQ32085 
         Problem: 
                 BCM5764M: Most Caesar II devices failed NICTEST when interfacing to ST1M
         Fix: 
                 Bypass code that was writing to PCI-X registers, these registers are used for VPD
                 on Soledad & Taishan Family devices.

   11. Support 5723 Caesar II server
   
   12. Remove Link Speed Mode option from secfg menu on Taishan family
   
   13. Apply CQ31797 fix for 5723

   14. Fixed register test on 5761/e CPMU register address 0x3638.
             
Version 10.56

    1. Enhancement: 
           Reduced the memory allocation to meet some environment where doesn't allow large memory requirements(i.e. EFI BIOS)
           For example, b57diag -optmem or loadd -z
    
    2. Enhancement:
           Removed -taishan and -soledad options. This revision can support Taishan, Caesar_II and Soledad offically.

    3. Enhancement:
           Prompt to enable Link_Speed_Power mode along with Link_Aware mode and Low_Power_Energy_Detect mode.
    
    4. Enhancement:
           Restore Link_Aware and Link_Speed_Power mode setting between bootcode and selfboot firmwares (seprg -p)

    5. Enhancement:(CQ31792)
           Enhanced Tx performance for Taishan and Caesar II. 
    
    6. Enhancement:        
           Prohibit the coexistence of -h and -t on the blast command.
    
    7. Problem : (CQ31970)
           Programming incorrect ASF FW needs to report 5764M as incompatible device.
       Cause:
           Did not match the device ID of ASF FW with the hardware device ID correctly.
       Fix:
           Match the firmware device ID and hardware device ID correctly.
           Add 5764M to the error message string when programming imcompatible version of ASF firmware.
    
    8. Enhancement:
           Modify APE DASH firmware programming options, remove -z, -e.
           Use -a to program asf/ape mgmt firmware, add -b (for update), -k (for padding) options

    9. Enhancement:
           Changed apecputest to apetest. Added new option commands to apetest.

    10.Enhancement: (CQ31868)
           Support ASF for 5764M.  
    
    11.Enhancement:       
           Support three new commands for APE initially: apectl, apeinfo and mancfg.
    
    12.Enhancement:       
           Ignore to test MII register offset 0x1e.

    13. Fixed CQ31201 - Customer wants change UMP speed setting on DL320G5 LOM - default is 10/100 Auto.


Version 10.55

    1. Fixed CQ31805 - Taishan socket board fails A5 Diag Test
    2. Fixed CQ31806 - Diag output for the D8 SADB Test is missing the dots
    3. Fixed CQ31702 - PHY Activity led not working in gphy led mode

    4. Created new IPSec automated test (D9). Fixed IPsec test error. 
    5. Fixed E-Switch port switching in External loopback tests.


    6. Fixes for Soledad bring up : 
       - Mac loopback test fixed - Disabled Power Link speed mode.
       - Soledad cpu test fixed - Modified timeout and firmware.
       - ESwitch test modification for Soledad A0.
       - PCI and Control register test fixes for RO bits.
       - IPSec test modified to remove HMAC-SHA1 algorithm ciphers.
       - Removed check for Atmel page size before programming device.
       - IPSec loopback.
       - Removed PCI cfg register 0x30 (Expansion ROM reg) test.
     
    7.  Fixes and enhancements for Taishan bring up.
       - Erased Wireless Combo LED mode from Taishan.
       - Skipped over MBA data of Format1/Rev2 when calculating CRC
       - Modified the secfg menu (h. MBA CFG Data) for Format1/Rev2 

    8.  Enhancement:  
         Added automatic Atmel pagesize detection/configuration for Soledad


    9. Enhancement:
         Added -umps for q57udiag to change UMP speed setting in command-line

   10. Enhancement:
         Added IPSEC Loopback Test for 5761/5761E as part of D3 Test in Nictest. 




Version 10.54
    1. Enhancement:
          Added SADB Test for 5761/5761E as D8 Test in Nictest. 

    2. Enhancement:
          Enabled Group F and Group G Tests by default.
          
    3. Enhancement:
          Updated "sadbtest" command to run both sadb pattern test and sadb interrupt test by default
          
    4. Enhancement:
          Update deviecs supported ISCSI Boot list according to the MRD for release 11. 

    5. Enhancement:
          Added E-Switch for 5761E support.
          
    6. Enhancement:
          UPdated BondID List for 5761 and 5761E.
          
    7. Enhancement:
          Added Link Aware Mode and Link Speed Power Mode En/Dis option in "secfg" 
          for 5761, 5761E, 5784M and 5764M.      

    8. Enhancement:
          Set INTX_DISABLE (BIT_10) in PCI command register when doing MSI test. 
               
    9. Enhancement: APE CPU Diag self tests
          Added unload firmware option for apecputest.

    10. Problem (CQ31181): 
          The b57diag testing cannot detect "2nd Boot Code" CRC error. 
          And all tests are pass without any NVRAM content error or warning message.
       Fix: 
          Added a CRC Test for the entire NVRAM content.
          
    11. Enhancement - Fixes to APE DIAG tests. Added apecputest command option.

    12. Enhancement - Added APE CPU Self tests. Requires Soledad apediag.bin binary file.

    13. Enhancement - (CQ31074) Disable CRC checking of User_Block in NVRAM

    14. Problem (CQ31065): 
          -updateasfcfg -firmall result in a Directory checksum error
        Fix: 
          The root cause is that the directory checksum had not been 
          updated when '-updatesecfg' was not used.   

          1) use "b57diag -updateasfcfg -updatesecfg -firmall 5755c.bin" 
          with older b57diag releases.  This is a workaround.
          2) use "b57diag -updateasfcfg -firmall 5755c.bin" with next 
          b57diag release 10.54. This is the fix to the root cause, 
          meaning, the directory checksum will be updated when '-updatesecfg' 
          was not used.

    15. Enhancement - Added Format1 Rev 2 of Selfboot support for Taishan.
    
    16. Enhancement - Added CRC checksum for Code Directory and Userblock in func_userblock function.


Version 10.53
    1. Enhancement:
           Loading of diagnostic configuration file (diagcfg.bin) fixed (engineering mode). 
           The code now checks if any tests were changed and will prompt the user to save6
           (but only from within the diagcfg menu).  To restore the default factory tests 
           the diagcfg.bin can be deleted.        

    2. Enhancement:
           sadbtest and sadbutil commands added (documented from previous version).
    
    3. Enhancement:
           Cleaned up Help Strings and read command data display output.
    
    4. Enhancement:
           Modified format of display in teste and testd commands.
	         Added wildcard card enable/disable to teste and testd commands.
	
    5. Enhancement Fix: (CQ30396)
	         Correct ATMEL NVRAM part numbers and part size display.
	 
    6. Problem : (CQ30452)
          L1ASPM Debounce was displayed for those devices that do not support it.
       Cause:
          Some specific devices do not support ASPM feature.
       Fix:
          Add the list of device IDs to identify those devices that don't support ASPM   
 
Version 10.52
    1. Enhancement Update : (CQ30396)
          Added support for displaying ATmel AT45DBxxx and AT45BCMxxx NVRAM "D" parts on all controllers.

    2. (Fix) Problem: 
               Diagnostic command "findbridge" does not display PCI bridge information correctly.
       Cause:  Function "util_find_bridge" did not do an initial scan to cache all PCI bridge information due a flag not being set. 
               On subsequent calls to "util_find_bridge" cached PCI bridge information was also not being read and displayed correctly.
       Fixed:  Re-coded function util_find_bridge to correctly scan, read and display PCI bridge information.

Version 10.51
    1. Enhancement :
          Support dynamic tracking by flushing file buffer per line.
    
    2. Problem : (CQ30274)
          For 5906M, pressing the G key on the secfg menu results in changing the value 
          for option F as if the F key was pressed.      
       Cause:
          In switch-case loop, the 'break' statement for the G key was not been put 
          correctly.
       Fixed:
          Correct the 'break' statement accordingly.

    3. Enhancement : (CQ30396)
          Added support for ATmel NVRAM 45xxxxD part number display.

    4. Enhancement : (CQ30395)
          Added command syntax help for readbr and writebr commands to online help and 
          user guide.  Expanded help for seread command.

Version 10.50
    1. Enhancement : (CQ29798)
          Add support for configurable NVRAM parameters for 5906M in eeprom.txt syntax

    2. Enhancement : (CQ29867)
          b57diag: Need to add "-mfct" support for 5906/5906M devices

    3. Enhancement : (CQ29971)
          Enable b57diag default to -disableeswitch for 5756M device      
    

Version 10.49
    1. Problem : (CQ29797)
          System hangs when running nictest C7 (Expansion ROM test - 
          ROM Size) with 5703.
       Cause:
          Some devices(including 5701, 5703..) are not allowd to 
          access to the offset 0x7c94. It is safe for 5761 to do that.
       Fixed:
          Only allow 5761 to access to 0x7c94;

    2. Problem : (CQ29667)
          5715C - b57diag failed w/ register test on bit 29 at offset 0x44C.
       Cause:
          Incorrect register read/write mask had been used.
       Fixed:
          Corrected register read/write mask to resolve this issue.
      
Version 10.48
    1. Enhancement: (CQ29476)
          Modify b57udiag to include hidden command for changing MAC address.
          For example,

          b57udiag -c 0 -e b57udg -mac 001018123456

          Note: The parameter -e b57udg is required for the -mac option.


Version 10.47
    1. Problem : (CQ29434)
          Ledblink command does not properly quit.The only way to get out 
          of ledblink is by quickly tapping ESC twice or holding ESC down.
       
       Cause: 
          The function util_wait_ms() calls util_user_abort() which needs 
          to eat an input character whenever a user taps an ESC to get out 
          of ledblink. If another util_user_abort() is used under a common 
          while loop, another ESC tapping will be reqired.
      
       Fixed:
          Remove another util_user_abort().
          
    2. Enhancement: (CQ29447)
          Added ASF support to BCM5721 devices.      
          
    3. Enhancement: (CQ29531)
          Added Cable Sence support to BCM5754M.
          
          
Version 10.46
    1. Enhancement: 
          Added an option switch -v to Upgfrm command to preserve VPD data in NVRAM. 
          User can select -v option to upgfrm command to preserve VPD data in NVRAM.
          Without -v option entered, the VPD data in NVRAM will be overwritten.

    2. Problem:
          When seprg bootcode for 5757, 'Mismatched device family between 
          bootcode image and target device' was displayed.
       Fixed:
          Added 5757 image ID support.
          
    3. Problem: (CQ29057)
          b57diag v10.45 PCI CFG Test failed w/ 5787M 

       Cause:
          Incorrect register read/write mask has been used.
       Fixed:
          Fixed register read/write mask to resolve the issue.
          
    4. Problem: (CQ29129)      
          Customer requests a way to configure the selfboot sb5787M2.09
          via EEPROM.txt.  The current tool can not correctly configure
          the MBA configuration setting for Selfboot for BCM5787M.
       Cause:
          B57diag got the incorrect MBA present status when it extract
          the MBA info from the image. 
       Fixed:
          Get the correct image MBA info.
       Impact:
          None.

    5. Enhancement: 
          Fixed MSI test for Soledad.  The MSI control registers had been 
          relocated in the PCI config space. This caused the MSI test failed on Soledad.

    6. Enhancement:
          Changed existing chip pin straps, and added new chips pin strap 
          support for Soledad.

    7. Enhancement:
          Added APE Mutex register tests (F8).
          a). No multiple requests from one source at same time
          b). Single Request/Grand/Release
          c). Multiple Request/Grand/Release

    8, Problem (CQ29354)
          5787A2 failed b57diag A5 test.
       Cause:
          PciReg5787Table overwrites PciBaseTable incorrectly.
       Fixed:
          Modified the PciReg5787Table correctly.

    9. Problem (CQ29167)
          B57diag -b57eng failed reading NVRAM on 5787M
       Cause:
          BitBang mode was used.
       Fixed:
          Fixed logic to choose Auto mode.


Version 10.45
    1. Enhancement: 
          Added L1 ASPM Debounce Enable Configuration support for Bootcode
          and HW Selfboot firmware.  The L1 ASPM Debounce Enable bit can be
          configured via secfg, secfg5 and secfghwsb1 commands.

    2. Problem (CQ29033)
	  During b57diag LED blinking test, pressing "CTRL + C" stops LED 
          blinking but also terminate following other scheduled tests in batch file.
       Cause: 
          "CTRL +C" will cause to terminate the batch job in DOS. 
       Fixed: 
          Instead of using "CTRL +C" to stop LED blinking, user can now use "ESC" key.

    3. Enhancement:
          For BCM5757, add firmware upgrade thru SMbus feature to "seprg".
          New parameters are -b, -x, and -y.
          
    4. Problem:
          b57diag lock up when SMbus underflow.
       Cause:
          for loop not incremented when SMbus underflow occur.   
       Fixed:
          Remove checking of SMBUS_OUT_START in for loop.  
          Error condition will be checked in higher level routines.           

    5. Enhancement:
          Terminology update: replaced "ASF/IPMI/UMP" with "Management Firmware"
          in many places. Replaced "IPMI" with "IPMI Passthrough" in several
          places.

    6. Enhancement:
          The 'asfcfg' command is now deprecated for the 'mancfg' command
          (asfcfg remains as an alias for backwards compatibility). This new
          command is used to configure the Management Firmware, regardless of
          what management technologies are supported by that firmware.

    7. Enhancement:
          The asfcfg/mancfg menu has been completely re-vamped for more
          logical organization (e.g. all the ASF System Description Table
          sub-menus are under one sub-menu) and clarified terminology. This
          menu now supports configuration of the WS-Management elements
          of the Management Firmware for BCM5757 devices.
          
    8. Enhancement: (CQ28966) 
          Implementing the NVRAM configurability of GPIO0 and GPIO2 for    
          the BCM5722 LOM device.           

    9. Enhancement:
          Added BCM5757 support.

    10. Enhancement:
          Added engineering mode command 'setman' to replace 'setasf', 
          'setipmi', and 'setump'.

          
Version 10.44:
    1. Engineering Release.

Version 10.43:
    1. Enhancement: 
          Add GPIO2 Initial State Configuration in NVRAM Parameter 
          for 5752 and 5756ME LOM device.

    2. Problem: (CQ28450)
          asfcfg from filename corrupts PCI vendor ID.
       Cause: 
          The manufact data of NVRAM was corrupted with random numbers
          when 'asfcfg <filename>' was used  to apply the ASF 
          configuration from the file to NVRAM.  This operation 
          changed the NVRAM content with invalid vendor and device ID. 
       Fixed: 
          Remove the extra manufacture data write.
       Impact:
          None.

    3. Enhancement: (CQ28255)
          Changed the NVRAM directory checksum algorithm from crc8 to 
          two's complement.


Version 10.42:
    1. Enhancement: (CQ28326) 
          Add GPIO0 Initial State Configuration in NVRAM Parameter 
          for 5752 LOM device.

    2. Enhancement: (CQ28396) 
          Add GPIO0 Initial State Configuration in NVRAM Parameter 
          for 5656ME LOM device.


 version 10.41:

    1. Enhancement: (CQ28096)
          Add command line option to b57diag to view a binary image 
          w/o HW requirement.
       Cause:
          A specific customer requests the b57diag has the ability to 
          check the integrity, view the directory structure, and display 
          the configuration of various firmware from command line 
          without hardware present.
       Fixed:
          Added code to check all CRCs, get the directory info, and 
          display the configurations of firmwares (bootcode, ASF, UMP).  
          The file is usually created by 'sedump'.  
          the CLI is  'b57diag -veep <filename>'.        
       Impact:
          None.

    2. Enhancement: (CQ28257) 
          Add a checksum byte at NVRAM offset 0x75 for code directory 
          area (0x14-0x73). 
       Fixed: 
          Always insert checksum when updating secfg information or 
          doing any dirctory change;
          when changing checksum value, the manufacturing CRC needs 
          to be updated also;
          when detecting checksum Error: Adding all bytes from 0x14 
          to 0x73 and adding the checksum byte, the result should be 
          zero. If it is not zero, then check if the checksum byte 
          (0x75) is zero. If the checksum byte is zero, means this is 
          legacy image that does not compute checksum, therefore it is
          not checksum error. Otherwise, it is checksum error. 
       Impact: None.

    3. Enhancement: 
          Added "-s" option for "sedump" command to skip CRC check for legacy 
          bootcode when dumping NVRAM content.
       Impact:
          None.

       
version 10.40:

    1. Problem: (CQ27901)
          Customer is looking for a way to get rid of error message and 
          program EMPTY eeprom successfully from DOS command mode.
       Cause:
          In previous code, b57diag perform the NVRAM content verification
          before program the image.  During NVRAM content verification, 
          if any error occur, the program stops.
          Furthermore, incorrect error message is reported if the NVRAM corrupted.
       Fixed:
          Report correct error message if NVRAM corrupted.
          Removed the extra verification.
       Impact:
          None.

    2. Enhancement: (CQ27939)
          Remove PLL power down enable/disable option from the menu. 
       Impact:
          None.
          
    3. Problem: (CQ28033)
          secfg5 -i=1 not working on second port of 5714C. 
          Please refer to CQ27954 for more details.
       Cause:
          Previously, only 5705 supports Capacitive Coupling. 
       Fixed:
          Added code to make Capacitive Coupling configurable on
          5714C, 5715C, and 5780 since they have the same GPHY 546x core as the 5705. 
       Impact:
          Capacitive Coupling is enabled on 5714C/5715C/5780.

    4. Problem: (CQ28078)
          b57diag v10.06, unable to program IPMI firmware on 5703
       Cause:
          Based on 10.0 MRD v1.0b, following devices should support IMPI:
          5704, 5714, 5715, 5780, 5721, 5722.
       Fixed:
          Added IPMI support to 5703 rev B and above.
       Impact:
          None.

    5. Problem: (CQ28173)
          Lost of ump connection after exiting out of diag engineering mode. 
          v10.01 passes. v10.02 fails.
       Cause:
          The IPMI/ASF configuration data will be recorded at the beginning of the diag 
          and restored when exit from diag. Those data that have been recorded at the 
          beginning of the diag will only be good at that time for UMP.  
          Restored those data at a later time may cause the connection to be lost.
       Fixed:
          Restored the IPMI/ASF configuration data only when IPMI/ASF is running.
       Impact:
          None.     
                 
    6. Problem: (CQ28121)
          b57diag interrupt test fails on 5906 if the system BIOS boot priority
          is set PXE first and floppy second.
       Cause:
          the Mailbox interrupt signal will first go into PCIE module in 
          PCIE clock domain, which will not be reset by GRC reset if bit 29 of 
          0x6804 is set. 
       Fixed:
          Added a workaround to Set Low Priority 0x5804 Mailbox register 
          with a zero value before the interrupt test.
       Impact:          
          None.

    7. New device support:
          Added support for 5756ME and 5722.
          
                   
version 10.11:
    1. Enhancement: CQ#27630 CQ#27832
          The Hybrid Trim value in the GPhy has been adjusted to improve the IEEE 
       Testing performance for 5755M.
 

version 10.10:
    1. Enhancement:  (CQ27143)
          Removed an extra back to back reset in CPU fetch test.  
          Previously, this reset is called before a global reset.


version 10.09:
    1. Enhancement: (CQ27580)
          Request from MKT to don't enables the PLL power down feature 
          from all s/w components for the chips of 5906M and 5787M.
       Fixed:
          "Hide" PLL powerdown configuration. However,  in engineering 
          mode, secfg '-e' option can be used to make PLL powerdown 
          configurable.
       Impact:
          "PLL powerdown" configuration will not be shown in secfg.


version 10.08 
    1. Problem:
          The 5756ME and 5722 can fail to pass traffic when put into
          conference mode during MAC DVT.
       Cause:
          A race condition in the chip requires that the Clock Slow Down 
          Control Bits (Bits 20, 19, 12) of register 0x74 be cleared 
          before issuing a GRC reset. 
       Fixed:
          Clear bits 20, 19 & 12 in register 0x74 before a GRC reset.

    2. Problem:
          The 'stack overflow' is displayed when type 'dev' after write 
          reg 0x4c with value 3.
       Cause:
          If an error occurs, the test_failed program need read the 
          NVRAM to get some device info.  But after the power state register
          0x43 is set to state 3, the NVRAM is inaccessible. In this 
          case, we can not read the NVRAM again.
       Fixed:
          If the error code is ERR_EEP_READ, the test_failed program 
          will not read the NVRAM.       

    3. Problem: (CQ27454)
          There is inconsistence of the LED setting between the Snow 
          register spec and "secfg" in B57diag. The difference is shown 
          below:
          secfg option   read 0x40c Bit [12,11]    per Reg Spec 
          MAC mode               11                    00 
          PHY mode 1             00                    01 
          PHY mode 2             01                    10 
          Shared traffic         10                    11 
       Cause:
          The definition in previous version was incorrect.
       Fixed:
          Correct the definition of the power state settings.
   
    4. Problem: (CQ27467)
          After running test suite for couple of iterations, B57diag 
          encounters Pmode/W error after D2 test (PHY test).
          Other information:
          Tried b57diag on diffrent system, it hung after D2 test.  
       Cause:
          Incorrect memory function was used.
       Fixed:
          Using correct function.

          
version 10.07
    1. Enhancement:
          Added '-d' option to CLI 'showglobal' and 'showcurrcard'. 
          The option will dump all the variable without pause.   
          Also, added 'ESC' check to jump out the dump.

    2. Problem:
          When doing External loopback test and False Carrier Test, the 
          RX report CRC or Frame too long error when the TX side using 
          HW CRC and packet size 1518B.
       Cause:
          The hardware appends 4B CRC to the packet, so the packet size 
          should not exceed 1514B. 
       Fixed:
          If the test doing HW CRC, using 1514B as maximum TX size.  If 
          the test doing SW CRC, using 1518B as maximum TX size.

    3. Enhancement (CQ 27377):
          Changed b57diag shared memory test (group B), to save memory 
          content first and restore the content after the test.

    4. Request:
          Removed 5756ME and 5722 support for release 10.0.  User need 
          the option '-stanme' to make 5756ME and 5722 visible in 
          release 10.0.
    
          
version 10.06
    1. Problem: (CQ27188)
          Found Unit Under Test: remained "NIC" even configured to LOM on
          B57diag (revision: 9.79b, 10.03 and 10.05). 
       Cause:
          Previously, the "Unit Under Test: NIC" is hard code in. It does
          not change according to the NIC/LOM setting.
       Fixed:
          Read NVRAM to get the NIC/LOM configuration bit from Selfboot,
          HW Selfboot, and regular bootcode image. Then display "LOM" 
          or "NIC" based on the settings.
       Impact:
          Display of "Unit Under Test" will be changed for LOM device.

    2. Problem: (CQ27208)
          5787F does not support ASF, but B57Diag 10.04 allowed the 
          firmware to be loaded into NVRAM.
       Cause:
          Previous version didn't filter out the 5787F. 
       Fixed:
          Added a new filter to check if the image is a ASF or IPMI
          firmware, then check if the device support ASF or IPMI. 
          Based on the 10.0 MRD v1.0b, 5702, 5705, 5782, 5751, 5753, 
          5752, 5754, 5755, 5756ME, 5787 should support ASF, while 
          5704, 5714, 5715, 5780, 5721, and 5722 should support IPMI.

    3. Problem: (CQ27115)
          B57diag hangs the system when the data in NVRAM are partially 
          corrupted. 
       Cause:
          Diag has obtained a out-of-range pointer from corrupted NVRAM
          data.  When Diag uses this pointer to compute the checksum,
          it hangs the system.
       Fixed:
          A checking logic has been added to prevent using any 
          out-of-range pointers which may hang the system.
          When error has been detected by this checking logic, 
          error message will be issued.
       Impact:
          This issue can occur with any devices in which the NVRAM data 
          are partially corrupted.   
  
    4. Enhancement:
          Based on request from a specific OEM customer, this version 
          adds logic to read configurable option from the NvRAM for 
          allow/disallow PLL power down feature. User can use "secfg" and 
          configure "Allow PLL Powerdown {Disable(0), Enable(1)}".
       Impact:
          The option of "Allow PLL powerdown" only can be displayed and 
          configured on the device 5787M.

    5. Enhancement:
          Removed secfg "WoL AUTO" configuration since it is not used.  
                        
    6. Problem: (CQ27257)
          When trying to enable pxe from command line "b57udiag -c 0 -mba 1" 
          on a selfboot board, failed output looks like:
          "Checking selfboot NVRAM Content..........: passedOption is N/A to this Device."
          Recommend puting "Option" portion on a new line. 
       Fixed:
          Software bug.  Add one more "carry return" when showing the error messages.
       Impact:
          None.

    7. Problem: (CQ27228)      
          b57diag unable to program IPMI for 5722 nic from command line, 
          Returns error: "Selected device does not support IPMI firmware."
       Fixed:
          Added 5722 to the list that support IPMI.

          
version 10.05
    1. Problem: (CQ27149)  
          When trying to program firmware for 5787m card w/ b57udiag, 
          it complains and does not let user program firmware. 
          eg. B57udiag -c 0 -firm a:sb5787m3.20
          B57udiag complains and w/ error message 
          "Boot code file and device type incompatible."
       Cause:
          The 5787M sub_device id has been chaged from 1693 to 9693. 
          Previously, the B57diag checks device id, sub device id, 
          vendor id, and sub vendor ID when upgrading the bootcode 
          using '-firm' option.
          If one of above 4 IDs does not match, "Boot code file and 
          device type incompatible." will be displayed.  
       Fixed:
          Ignore the MSB of the sub device ID.
       Impact:
          The change affects the sub device ID comparing when upgrading 
          bootcode for 5787, 5787M, 5787F, 5786, and 5788,  using '-firm'
          option.

    2. Problem: (CQ27150)
          Spelling error after upgrading pxe firmware : "Totally 1 
          cards(s) has been programed"
       Fixed:
          Changed the wording to "Totally 1 card(s) has been programmed"

       Impact:
          None.    
          
    3. Problem: (CQ27151)
          "B57diag -dids"  displays unknown characters in table which 
          should be bootcode version. The problem only occurs w/ 5906m 
          self boot cards.
       Cause:
          Incorrect field was used to display hardware selfboot rev 
          and patch rev.
       Fixed:
          Using correct field.
       Impact:
          This change only applies to 5956 device.     

    4. Enhancement: 
          Updating register table in Register Test for 5906 according 
          to A2 spec.

          
version 10.04
    1. Enhancement: (CQ27111)
          Customer requests that the 5755M GPIO0 init state to be configurable.
       Fixed:
          Change B57diag "secfg" and other configuration tool 
          (-meep option, and secfg5) to make 5755M GPIO0 and GPIO2 
          configurable. (input/output, 0/1 value in output mode). 
          This information is stored in NVRAM (manufacturing information, 
          offset DC).  Also, a boot code change request is in the works 
          to change the behavior to not drive GPIO0 low. 
       Impact:
          This change only applies to 5755M LOM device.
          

version 10.03
    1. Problem: (CQ26833)
          Programming PXE V10.0.0 by using b57diag V10.02, execute dir 
          command and see the PXE version showed as v39.64.0. Steps to 
          reproduce the problem:
            a. program PXE
            b. program ISCSI or ASF
            c. program a different version PXE, so that the EEP offset  
            of the new PXE will be changed to big than 0x10000.
       Cause:
          The 'dir' used a 16bits mask to get the version offset.  When
          the EEP offset bigger than 0x10000, the offset is wrong. 
       Fixed:
          Changed the mask to 32 bits.
       Impact:
          All the version string that come from the offset that is bigger 
          than 0x10000 should be corrected.

    2. Enhancement:
          Added '-p' option for 'reset' command. This option will force 
          PCIE block to be reset during GRC reset. 

    3. Problem: (CQ26845)
          B57diag v10.02 not able to program iSCSI boot code on 5722.
       Cause:
          The older MRD does not require iSCSI programming support on 5722.
       Fixed:
          Added 5722 into the list that support iSCSI boot code according
          to 9/19/2006 MRD v1.0b.doc for release 10.0. 
       Impact:
          There is no other impact.
          
    4. Problem: (CQ26550)
          Report from customer stated that after running B57diag version 
          9.74, user can not ping BMC IP address, or run any IPMI commands. 
          The system will still fail on warm boot, or turning system off 
          by power button. 
          Only way to recover is to remove AC. 
          When AC reinserted all IPMI commands work. 
          Verify this on 2 different systems.  
       Cause:
          IPMI/ASF configuration data in the internal memory get 
          destroyed when running 'nictest'.
       Fixed:
          Restoring the IPMI/ASF configuration data before exit from 
          b57diag resolved the issue.
       Impact:
          This issue can be found in all versions of B57diag except 
          V10.02.  B57diag V10.02 has the same fix implemented.

    5. Enhancement:
          Added 5906 A2 support to b57diag.

    6. Enhancement:
          Added configuration of Clkreq for 5906 A1 and A2 in "secfg".

    7. Enhancement:
          Added configuration of PCI-E Link Polarity Fix Disable for 
          5906 A2 in "secfg".

    8. Enhancement:
          Added support for following MBA related commands when re-generating 
          selfboot bootcode using 'eeprom.txt' and 'geneep' option:
          "remove_mba_data",
          "hide_mba_setup_prompt",
          "mba_setup_hot_key",
          "mba_boot_protocol",
          "mba_delay_time",
          "mba_bootstrap_type".

    9. Problem: (CQ26923)        
          Unable to erase NVram contents using "erase all" command.
          Steps to Reproduce:
              a. program IPMI on the board.
              b. Delete entry 0 by typing "erase 0". 
              c. Now try to delete entries 1,2,3 by typing "erase all".
              1,2 and 3 are not deleted.
       Cause:
          b57diag jump out erase program if the image is not in the NVRAM. 
       Fixed:
          b57diag delete all images when "erase all" is executed.

          
version 10.02
    1. Enhancement:
          Added 5906 support in 'geneep' option switch according to MRD for Release 10.0 Alpha V1.0B.
          User can use this command to modify the configuration of the Hardware Selfboot firmware.
  
    2. Enhancement:
          Added a new feature to display unsupported commands in 'eeprom.txt' when 
          parsing 'eeprom.txt' when execute 'geneep' option switch.  By displaying unsupported commands,
          user can modify the unsupported commands in 'eeprom.txt'. 

   3. Problem: (CQ26768)
          B57diag V9.79b not able to program iSCSI boot code on 5780S.
          This issue was reported by PQA for Release 9.7.
       Cause:
          Since iSCSI support for 5780S was not stated in MRD for Release 9.7 at 
          the time the iSCSI programming support was added to diag, B57diag would
          not allow user to program iSCSI boot code for 5780S.  
       Fixed:
          Added 5780S into the list that support iSCSI boot code according to MRD for Release 9.7 V1.6. 
          The same fix has also been applied to B57diag V9.79C
       Impact:
          There is no other impact.
		
   4. Enhancement:
          Enabled 5722, 5756ME, 5906 and 5906M support by default according to MRD for Release 10.0 Alpha V1.0B. 
          No option switches to enable support for these devices are needed.

version 10.01
    1. Problem: (CQ26793)
          With BCM5756ME for customer mobile platform, only one port is
          used so that the external loopback had problem when using the
          e-switch;
       Fixed:
          Added a new global option "-disableeswitch", to act like 
          engineering mode "eswitch -f" command. With this new switch, 
          packet will be send out via "default" port, no switching is 
          performed when doing loopback test.

    2. Problem: CQ26715
          Board 5751f fails on b57diag test on d3, speed = 1000, which 
          should be skipped.
       Cause:
          There is a bug in the util_is5751F().
       Fixed:
          Fixed the bug in the util_is5751F() and using device id 
          instead of asic rev id and bond id.
          The issue also impact 5753F.

    3. Enhancement:
          Added IPMI firmware upgrade support for 5722.     

          
version 10.00
    1. Enhancement:  
          Added smbus AUTO mode. 'smbusrun' takes care of both bitbang 
          mode and automode, use '-s' option for slave operation. '-f' 
          option to set BitBang clock frequency.

    2. Enhancement: 
	  Added CLI 'smbusmode' to set the smbus running mode: auto, 
	  bitbang, and regular.
           . auto mode: stop ASF/IPMI, b57diag code controls the SMBUS 
           register directly.
           . bitbang mode: diag code controls the smbus data/clock bus
           directly.
           . regular mode: ASF/IPMI is running
    
    3. Enhancement:
          Added a patch in current B57 with an additional MII write 
          0x17 (PTEST) with a value 0x0012 after EPHY reset and init.

    4. Enhancement: (CQ 26607)
          Added ISCSI firmware support in "firmall" command line 
          function.
    
    5. Enhancement: (CQ 26586)
          Enhanced the clean up process of the NVRAM when the Iscsiprg 
          failed to program the ISCSI firmware. 

    6. Enhancement: 
          Support new family ID DEVICE_STANFORD_ME_FAMILY to 
          differentiate StanME from Stanford when programming ASF/IPFI 
          firmware.
         

version 9.79
    1. Problem: (CQ 26511)
          When execute “b57diag -e b57kia -c 0 -piscsi1 iscsi.bin", error message appears.
       Cause:
          File name processing error.
       Fixed:   
          Fixed in iSCSI file name processing.

version 9.78
    1. Problem:
          iscsiprg command is missing from engineering mode.
       Cause:
          A bug has been introduced when adding iscsiprg support for b57udiag.
       Fixed:   
         The bug has been fixed and iscsiprg command has been added back to engineering mode.

    2. Enhancement:
         Updated b57diag.pdf, b57udiag.pdf and b57udiag.htm. 

version 9.77
    1.  Enhancement: (CQ 26227)
          Added NIC_Design and L1_PLL_POWERDOWN_DISABLE fields in "secfg" for Hardware Selfboot firmware.

    2. Enhancement:
         Added "-piscsicfg" and "-piscsiprg" option switches to force program iSCSI CFG and iSCSI PRG when programming
         iSCSI firmware.  These two firmware should be used along with "-piscsi" option switch.

   3. Enhancement: (CQ 26334)
         Added "-piscsi", "-piscsicfg" and "-piscsiprg" option switches in DOS User Diag.
         Added iscsiprg command in DOS User Diag.

   4. Enhancement:
        Added SMBus Bitbang mode support.


version 9.76
    1. Problem:
          Diag D4 Test failed on a HTLE system.
       Cause:
          A line of debug code writing a random data to MII Reg 0x18 which cause the failure.
       Fixed:   
         Removed the line of debug code and the issue has been resolved.
    
    2.  Enhancement:
          Restored "cpuinfo" command as in version 9.74.

    3.  Enhancement:
          Added ISCSI CFG 1 support for the secondary port of dual port devices.

version 9.75
    1. Enhancement:
          Added CLI 'eswitch -f/-e' to forbid/enable E-switch.
          When the E-Switch is enabled, 'nictest' performs the group D test 
          in both laptop mode and docking mode. When the E-Switch is forbidden,
          'nictest' only performs the group D test in one mode.
    2. Problem: (CQ#26047)
          vpd test failed on 5906 A1, 
       Fixed:   
          The root cause is that when the b57diag runs in manufacture
          mode, at very beginning, it writes tpm size into NVRAM. Since SNOW 
          does not support TPM, this operation messes up the NVRAM. 
          b57diag reports error when it read VPD data. 
    3.  Enhancement: (CQ#25849)
          Enabled auto-MDIX when forcing link speed in 5906/5906M.
    4.  Problem:
          Stanford ME Hardware E-Switch didn't work after E_switch related software tests.
         Fix:
          B57diag disable override capability after the tests.
    5.  Problem:
          When the Stanford ME is changed between Laptop mode and Docking mode, 
          the Mac port status is different from Phy link status
        Fix:
          Synchronize the MAC port state with PHY port state.    	  
    6.  Enhancement:
          Added a CLI 'cpualive' to check CPU status and report if it is alive.
    7.  Problem: (CQ#26183)
          5754 iSCSI code can not be programmed.
        Fixed:
          Changed the filter to let the code be programmed.
    8.  Enhancement:
          Hide E-switch test when in manufacture mode if the device is not 
          Stanford ME.
    9.  Problem: 
          C4 error when Snow is connected with a switch. 
        Fixed: 
          Skip the bit9 and 10 check because they are affected by the 
          physical channel condition of connected system/link.
    10. Enhancement:
          Added CLI 'miiloop' to test MII/MII EXP/ MII TAP register
    11. Problem: (CQ#25325)
          Unbale to upgrade bootcode on a 5754M A2 nic. 
        Fixed:
          Reversed the check to identify 5754M before 5754.
    12. Enhancement:
          Added "sedump -l" for 5906 which will dump the eeprom image whose
          size is specified in -l option.          
          
    13.  Problem: 
          Bit length of some configuration fields in MBA configuration word are incorrectly defined
          for Selfboot firmware and HW Selfboot firmware in diag.
       Cause:
          Outdated specification was used when coding MBA Configuration structure.
       Fixed: 
          Correct the bit length of the following fields in MBA Configuration word according to the 
          most updated specification.
         a. MBA Configuration timeout
         b. Bootstrap Method
         c. MBA Link Speed.
       Impact:
         5787 and 5754 when using Selfboot Firmware.
         5906 when using HW Selfboot Firmware.
         
         
version 9.74
  1.  Enhancement:
          Added 100M PHY loopback support for StanME FPGA board.  
  2.  Enhancement:
          Added a filter for upgrading iSCSI firmware.  Now, b57diag will not 
          allow iSCSI firmware upgrading when the device not support iSCSI.
  3.  Problem:
          Diag code failed the vpdtest when the SNOW board does not support 
          VPD data.
      Fixed: 
          b57diag performs the vpdtest only when the NVRAM contains VPD present flag.
  4.  Added the 5906 A1 support.
  
version 9.73
  1.  Problem: (CQ#25866)
          Diag does not show the version of Hardware Selfboot firmware in the x.xx format.
      Fixed:
          Modified diag to show the version of Hardware Selfboot firmware in the x.xx format.

  2.  Problem:
          "Secfg" for Hardware Selfboot did not let user to select "Interesting Packet WOL" and "Magic and Interesting Packet WOL" in "WOL Auto" field.
      Fixed:
          Modified diag to let user to select "Interesting Packet WOL" and "Magic and Interesting Packet WOL" in "WOL Auto" field.

  3.  Enhancement:
          Add a CLI to turn on/off -asfeng option from the b57diag prompt (CQ#25743).
          Add an option to 'upgfrm' to set forced_fpn field and FPN flag of PXE image header

  4.  Problem: (CQ#25751) 
          VPD test failed on ST Flash.
      Cause:
          Previous versions consider ST Flash as non-buffered flash.
      Fixed:
          To solve the issue, please upgrade the flshd14a.bin and flshd15b.bin to version 3.4.            

version 9.72
  1.  Problem: (CQ#25696)
             MII Test failed on 5960M
         Cause:
            Bit 0 of MII Register 0x18 is a Read only bit.
            Bit 0 of MII Register 0x18 will get set if Bit 14 is set.
            Since both bits are tested at the same time, the value of Bit 0 of MII Register 0x18 will get changed while software is not expecting the value of 
            this bit to be changed.  Therefore, the MII Test failed. 
         Fixed:
             T0 resolve the issue, MII Register 0x18 will be tested in 2 steps. One step test Bit 14 and the other step test Bit 0.

  2.  Problem: (CQ#25697)
             Phy Loopback Test failed on 5960M
         Cause:
             Normally, 5906M will have the APD (Auto Power Down) enabled.
             With APD enabled, the PHY will go to power down mode when no connection is detected.
             During Phy Loopback Test, the Phy is in Power down mode such that no packet was sent and received by the Phy.  
         Fixed:
             To resolve the issue, software will disable APD before running the Phy Loopback Test.
        
 3. Enhancement:
         Added 3 commands to let user config hardware selfboot firmware for 5906/5906M without entering the secfg mode. 
         The 3 commands are "secfghwsb1", "secfghwsb2" and "secfghwsb3"

version 9.71
  1.  Problem:
        CQ25155 and CQ23480. Under rare circumstances, 5721 devices can
        encounter a read DMA overrun.  This would result in subsequent
        read DMA operations not completing.  This in turn would lead
        to network applications failing or "timing out".
      Cause:
        This is due to a newly discovered corner case HW bug in the 5721.
        The same problem is also in 5751, 5753, 5789, 5752, and 5755
        devices.  5787, 5705, and devices introduced before the 5721 and
        5751 are not affected by this issue.  This HW issue can occur
        under a rare circumstance where a very large Rx BD read 
        request is generated while the RDMA read FIFO is partially filled
        with Tx  data and the TxMbuf memory is full.  Most network 
        applications would never generate this circumstance, and thus this
        problem is hard to reproduce, and won't occur with most network
        applications. This problem could theoretically occur at 1Gb speed
        but is more likely to occur at 10mb or 100mb operation, and is more
        likely to occur with applications that generate lots of smaller 
        (e.g. 82B) packets. More information about this issue will be
        included in future 57xx chip errata documents for affected
        devices.
      Change:
        Modified the Diag to limit how many BDs the HW will try to fetch
        at any given time.  With this workaround, the HW should never 
        fetch more than 15 RX BDs in a read burst during runtime (not init
        time). This avoids the circumstance that could expose the HW
        erratum.
      Impact:
        The performance impact of this change is negligible.

    2.  Problem: (CQ#25396)
             'Mismatched device family' message when upgrading 5751F bootcode.
         Cause:
             The issue is due to the incorrect device checking order. Software had miss identify the device type.  
         Fixed:
             Reversed the checking order to resolve the issue.
         Impact
             The same issue can be happened to 5753 as well.

    3. Enhancement:
             Added E Switch support to External Loopback Test (D3) and 1G Carrier Loopback Test (D4).  
             This enhancement only applies to devices that support E-Switch.
    
   4. Enhancement:
            Added "eswitch" engineering mode command for user to select/switch port.
           This enhancement only applies to devices that support E-Switch.


version 9.70
    1. Enhancement: 
         Added host interrupt check and Status word check in E Switch Test for 5756.
         Moved E Switch Test from C9 to D7 in "nictest"
   
    2. Enhancement:
         Modified the Control Register Test for 5756 and 5722 according to the updated 5755_ME_Register_050906.doc

    3. Enhancement:
         Modified the CPU Test to use CPUME.BIN for 5756 and 5722.

    4. Enhancement:
         Added new Phy ID for 5756 and 5722 in diag.

    5. Enhancement:
         Modified the access function to support ST M45PE flash for 5714/5715/5780.


version 9.49
    1. Problem: 
         Diag is not able to program bootcode to 5753M NIC. 
        Fixed:
         Diag is not able to identify 5753M when the NVRAM is blank.
         This has been fixed by modified the code to checking ASIC ID and Bond ID instead of Device ID.
        Impact:
         The following devices will be impacted by this fix: 5753, 5753M, 5753F, 5751, 5751M, 5751F.

    2. Enhancement: (CQ 24837)
          According to the updated Register Specification of 5787 V1.09, Bit_31 of Reg 0x7014 is a reserved bit.
          Diag will not check for Bit_31 of Reg 0x7014 when accessing the NVRAM.
   

version 9.48

    1. Problem: 
         Item 9 in the MBA menu for Selfboot Firmware in "secfg" command will remove the ICP block if the block has only one patch.
        Fixed:
          There is a software bug and that has been fixed.

    2. Enhancement: (CQ 24528)
         Added Selfboot MBA Phase II support to Diag.  The banner will show the selected MBA protocol and selected MBA link speed.
         The following commands and option switches have also been modified to support
         Selfboot MBA.  
         a. "setmba" command
         b. "-mbas" 
         c. "-mbap"

version 9.47

    1. Problem: 
         The function that return the Selfboot Firmware size will only return correct firmware size if the firmware does not 
         have any customized data block, such as VPD, PCI Power Consumption.
        Fixed:
          Modified the function to include the size of customized data blocks.

    2. Enhancement: (CQ 24528)
         Added Selfboot MBA support to Diag.  "secfg" command had been modified to let user create and set the 
        MBA Config Data in the patch code.  "upgfrm" command has been modified to preserve the MBA data in 
        the patch code when updating the Selfboot Firmware.

    3. Enhancement: (CQ24525)
        Programming the PHY Tabs to achieve better, more reliable Gig-E Link"

version 9.46
    
    1. Problem: (CQ#: 24619)
          When entering into engineering mode, diag hangs at the banner if a 5700 or 5701 NIC is installed in the system
        Cause: 
          The issue is due to Diag is trying to write to Register 7014, which is not a valid register for 5700 and 5701.
        Fixed:
          Not to write to 7014 when device is 5700 or 5701.
        Impact:
          Diag V9.44 and V9.45 will have the same issue.

    2. Enhancement:
         Updated Flash device labels for 5755/5755M.
version 9.45
    
    1. Problem: 
          B57diag failed to identify the new package of 5755M device with Bond ID 0101b.
          B57diag works fine with the 5755M device with Bond ID 0111b
        Cause: 
          According to the specification of 5755/5755M, the last 2 bits of the Bond ID are "don't care" bits.
          However, diag did not take these 2 bits as "don't care" bits .
        Fixed:
          Diag will ignore the lower 2 bits of the Bond ID of 5755/5755M.
        Impact:
          Diag will not run well with this new package of 5755M which has Bond ID 0101b.

version 9.44
    
    1. Problem: 
         In Nictest C8, diag will write to Reg 0x7024 before resetting the Flash block.
         However, if address lockout enabled, software should not write to Reg 0x7024, which will create address lockout status error.
        Fixed:
         Software is not going to write to 0x7024 when address lockout is enabled.

    2. Enhancement: (CQ 24060) 
         Added "pri_smb_addr" and "sec_smb_addr" keyword in "geneep" function to configure NVRAM option #51 and #52.
    
version 9.43

    1. Problem: (CQ#24225)
         Diag shows incorrect device string for 5786 A2 when failed to program Bootcode to a blank NVRAM.
       Fix:
         Software will check for bond id and device id before showing “5786 A2” device string.

version 9.42
    
    1. Problem: (CQ 24044)
         5755M support not working.
       Cause:
         During release 9.06 point 2 incorrectly modified 5755M part
         number instead of 5757M part number.
       Fix:
         Reinstated the 5755M part number and updated the 5757M part
         number.

version 9.41
    1. Enhancement: 
         Enabled 5755 support in diag by default according to MRD 9.4.

version 9.40
    1. Enhancement: 
         Added 5786 support to diag according to MRD 9.4.

    2. Enhancement:
         Updated VPD menu for Selfboot firmware to show system default VPD data.

    3. Enhancement:
         Updated "vpdinfo" command to show current VPD data for Selfboot firmware.
 
version 9.06
    1. Problem: (CQ 23752)
         When programming an illegal Mac address to Selfboot Firmware, NVRAM data will get corrupted.
       Cause:
         The issue is due to a debug instruction which will write to NVRAM when user enters an illegal Mac address in Selfboot Firmware. 
       Fix:
         The debug instruction has been removed.
       Impact:         
         This issue will only happen when user enters an illegal Mac address such as 001018000000.  
         Therefore the impact is minimal.

version 9.05
    1. Problem: (CQ 22916)
         According to the PCI 2.3 specification, VPD check sum should be calculated from the first byte of VPD data.
         However, diag calculates the VPD check sum start from the first byte of the VPD-R section. 
       Fix:
         Diag has been modified to calculate VPD check sum for Selfboot firmware start from the first byte of the VPD data instead of VPD-R section.
       Impact:         
         Due to this issue, the option 'e' and option 'f' in "secfg" for selfboot firmware have been combined.  
         Option 'f' has also been removed.  In addition, the "eeprom.txt" key words for selfboot firmware has also been changed.  
         Please see b57diag.pdf for details.  Because of the changes in "eeprom.txt" key words for selfboot firmware, 
         "-chksecfg" option for selfboot firmware will have to follow the changes as well. 

    2. Problem: 
         "sbfcfg" command and "-geneep" option will corrupt selfboot firmware file image when saving modified data back to file.
       Cause:
         An incorrect length (128 bytes) of the VPD-R block has been used which corrupted the offset of other data blocks.
       Fix:
         This issue has been fixed by correct the length of the VPD-R block data to 76 bytes instead of 128 bytes. 
       Impact:
         This issue will impact "sbfcfg" command and "-geneep"option.

version 9.04
    1. Problem: (CQ 23432)
         Execute upgfrm -p b57mmbae.nic will cause system error.
       Cause:
         The root cause is that software is trying to free a pointer that is pointing to NULL and which causing system error.
       Fix:
         Modified code to not freeing NULL pointer.
       Impact:
         This will only be seen if the PXE code has only one section such as b57mmbae.nic.

    2. Enhancement: (CQ 23423)
         Added option to allow user to set/force UMP link similar with ASF/IPMI in OS-absent environment
         New option is added to "umpcfg" command.
       Impact:
         Diag will modify the nvram setting for UMP firmware according to the user input.
         This option will only work with the versions of ump firmware that utilize these new NVRAM settings.  

    3. Enhancement: 
         Removed the support for BCM5755 chip due to systems are not available in time for complete testing.
       Impact:
         Diag will not recognize BCM5755.

version 9.03
    1. Problem: (CQ 23262)
         B57diag failed C1 (NVRAM test) and C5 (VPD test) when tested with the 5752:A1 LOM and 5752:A1 NIC.
       Fix:
         There is a bug in the nvram read function. The issue is introduced when adding new support.

version 9.02
    1. Problem: (CQ 22488)
         PCDR plug-in V8.27 seeing CPU test failure in OEM system
       Cause:
         The C8 CPU fetch test in the b57diag is to ensure the rom loader can successfully fetch the boot code from the nvram into the internal memory. 
         The code fetching starts after b57diag reset the internal CPU.
         After successfully fetching the boot code, CPU will then execute the boot code from the internal memory.
         The C8 test will stop the execution of the bootcode and reset the CPU to re-start the next cycle.
         If this operation happened when the CPU is accessing the NVRAM, it may corrupt the instruction issued by the CPU to the NVRAM.
         If this happen, CPU and software will no long have access to the NVRAM until the next GRC Reset cycle.

       Fix:
         In the modified b57diag,  the first 2 instructions of the bootcode in the internal memory will be replaced by a "halt" and "no-op" instructions.
         This instruction replacement will avoid the execution of the bootcode after the code fetching from the NVRAM.
         Then it is save to reset the CPU and re-start the next cycle of test.


version 9.01
    1. Problem: (CQ 22916)
         According to the PCI 2.3 specification, VPD check sum should be calculated from the first byte of VPD data.
         However, diag calculates the VPD check sum start from the first byte of the VPD-R section. 
       Fix:
         Diag has been modified to calculate VPD check sum for bootcode start from the first byte of the VPD data instead of VPD-R section.

    2. Problem: (CQ 22937)
         The b57diag engineering-mode command 'asfmbox -c' can create invalid ASF mailbox status records if the length 
         of one or mailboxes (supplied by the user) is not evenly-divisible by 4 (32-bits).

       Fix:
         The issue has been resolved by making the length of each ASF Mailbox to DWORD aligned.

    3. Enhancement: 
         Updated Selfboot firmware default data for 5787.


version 9.00

    1. Problem: (CQ 22892)
         Upgfrm -b sb5787M2.01 and/or upgfrm -b sb5787c2.01 do not upgrade the sb patch. 
         However, seprg -f worked fine Setup to reproduce:
       Cause:
         For Selfboot firmware, "upgfrm -b" command only support Format0 to Format1 upgrade and Format1 to Format1 patch upgrade.
         However, in case of Format0 to Format0 and Format1 to Format0 update, Diag has a bug to handle these cases.
       Fix:
         Diag will warn user to use "seprg" command to handle Format0 to Format0 and Format1 to Format0 Selfboot firmware update.

    2. Problem: (CQ 22893)
         B57diag v8.34 switcg -I allows illegal character as argument (e.g. -I xyz).
       Fix:
         Check for illegal characters function has been added to filter out illegal characters for -I (iteration) option switch.

    3. Enhancement: 
         Added code to display "format0" in stead of version string for Format0 Selfboot firmware.
         Only Format1  Selfboot firmware contains version string.  Diag will display "V0.00" for Format0 Selfboot firmware.  
         Diag has been modified to display "format0" instead of "V0.00" for Format0 Selfboot firmware.

    4. Enhancement: 
         Added ISCSI boot firmware programming support to B57diag.
         "iscsiprg" command will allow user to program ISCSI boot firmware, ISCSI Config block and ISCSI Config program to NVRAM.

    5. Enhancement: 
         Modified Diag to display "0 byte" instead of "16 bytes" NVRAM size when Diag is not able to detect the size of the NVRAM for 5787 and 5754.

    6. Enhancement: 
         Added new support for UMP firmware to enable UMP Echo function.  The "umpecho" command will allow user to enable of disable the Echo Test 
         function of the UMP firmware.

    7. Enhancement: (CQ#22851)
         Added code to prevent user to program A0/A1 Selfboot patch into A2 device.  

    8. Enhancement: 
         Enabled support of 5755, 5754, 5787, 5714, 5715, 5780 by default.

version 8.34
    1. Problem: (CQ 22660 ???)
         The engineering mode "secfg" command presented the cable sense
         option (i.e. option 53) for the 5753M part (it should not).
       Cause:
         The option added in v8.20 has a bug that displays the
         option for all parts due to a typo in the code.
       Fix:
         Fixed the typo in the code so that cable sense is available
         for the parts noted below in point 2 of version 8.20.

    2. Problem: 
         The engineering mode "seprg" command produces an incorrect
         warning when executed on a 5753 part.
       Cause:
         Identification of the 5753 part was not coded into the error
         checking portion of the "seprg" command.
       Fix:
         Added error checking for the 5753 part in the "seprg" cmd.

    3. Problem: (CQ 22701)
         Mac address of 2nd port is incorrect if b57diag is used with parameter "-fmac"
       Cause:
         In the function util_AccessMacAddressFile(), after b57diag finishes programming the mac address of 1st port,
         b57diag increases mac address by one and saved it to file and global.mac_address for 2nd port usage. 
         The first zero will be gone after processing the code. 
       Fix:
         Make sure 6 hexadecimal digits are always saved in global.mac_address[6] 
         and this is the reason why b57diag doesn't fail if only one NIC is programmed at a time. 
         b57diag always saves the correct format in macaddr.txt and it reads the mac address from macaddr.txt every time.

    4. Enhancement: 
         Modified code to read TxMac_status (0x460) bit 3 to check link status for 5714S/5715 step A2 and up.

    5. Enhancement: 
         Bit 8 of MII register 0x1e for 5755 will not be test in MII Register Test to prevent Energy_Det signal to go low during MII Register Test.

    6. Enhancement: (CQ#22638)
         Added Atmel 24C02 device support for Jade in Diag.

    7. Enhancement: 
         Added "-d" option to "seprg" command in to skip ID check when programming ASF/IPMI code to let engineers has more flexibilities when debugging 
         ASF/IPMI firmware.

    8. Enhancement: 
         Added "asfmbox" command in b5diag engineering mode to create and view ASF Off-line Mailbox in NVRAM.  The "dir", "sechksum" and "semap" 
         command had also been modified to support ASF Off-line Mailbox.

    9. Enhancement: 
         Item 14 in the "ASF Settings" submenu (Item 1 of "ASF CFG" menu) has been changed to "Send 'ASD Ready' SMBus Msg".

version 8.33
    1. Enhancement:  
         Added ASF firmware support for 5755, 5754 and 5787. 

Version 8.32:
    1. Enhancement:  CQ14458
         Modified code to restore MAC Address and NVRAM config data 
         between Bootcode and Selfboot firmware in "seprg" command.
       Fix:
         Added -p option to "seprg" command to restore some of the NVRAM config data between Boot code and selfboot firmware.
         -p option will restore NVRAM configuration data between Bootcode and selfboot firmware.  
         The configuration data that will be restored are listed below.
          a. Wol_enable
          b. Wol_Limit_10
          c. Driver_wol_enable
          d. Lom_design
          e. Phy_auto_power_down
          f. Reverse_nway
          g. Disable_power_saving
          h. Phy_led_mode 
          i. Shasta_ext_led_mode						
          j. Cable_sense


    2. Enhancement:  
          Added 5714A3 and 5787/5754A2 bond IDs support to b57diag.


version 8.31:
    1. Problem: (CQ 14518)
         Upgrading selfboot patch shows incorrect version format.
       Fix:
         Extended enhancement CQ 14406 to "upgfrm" command.

    2. Enhancement: 
         Added HOT SWAP support for 5714/5715/5780 devices.

    3. Enhancement: (CQ 14605)
         Removed the warning of using the default VPD value when programming the blank nvram with "seprg" command.

    4. Enhancement: (CQ 14573)
         Extended the "-firmall" option with b57diag to also support UMP firmware.

    5. Enhancement: (CQ 14466)
         Extended the "-geneep" option with b57diag to also support selfboot firmware.

    6. Enhancement: 
         Extended the "-chksecfg" option with b57diag to also support selfboot firmware.

    7. Enhancement: 
         Added "sbfcfg" command in engineering mode.  This function will allow user to edit the configuration of 
         of a selfboot file image.

    8. Enhancement:
         Added 5 more keywords in "-chksecfg" option to check firmware versions.
         bootver =  <boot code version string>
         pxever = <pxe code version string>
         adfwver = <advance firmware version string>
         adfwcfgver = <advance firmware configuration version number>
         iscsiver = <iscsi firmware version string>

    9. Enhancement:(CQ 14098)
         Added validation to check if the firmware to be updated is right for the chip.
         Diag will not only check device id but also device type, such as M and F.
         This check will only be applied to devices after 5705.

    10. Enhancement:
         Modified C1 NVRAM Test to work with small size nvram devices.

    11. Enhancement:
         Applied new Phy script to 5787 and 5755 after Phy reset.

version 8.30:
    1. Problem: (CQ 14426)
         5715s A2 fails D2 Phy Loopback Test.
       Cause:
	 ECD 13216 Fix has been applied which cause the test to fail.  When in PHY loopback mode signal detect 
         is not generated (as there is no activity on the wire, loop is closed within the serdes) so when fix is 
         enabled link (which is up) is logically and-ed with signal detect (which is down) so result is link down.
       Fix:
         To resolve this issue, ECD 13216 Fix will be disable when running Phy loopback test on 5714/5714 A2 Serdes devices.

    2. Enhancement: (CQ 14406)
         New code has been added to support the new selfboot version string format.
         major, one digit
         minor, two digits
         build, convert to a, b, c...., When build = 0, do not display any letter. Otherwise, 1=a, 2=b....26=z, 27=A, 28=B...
 
         major=1, minor 2, build=0, display as "sb 1.02"
         major=1, minor 2, build=3, display as "sb 1.02c"
 
    3. Problem: (CQ 14216)
         Intermittently fails b57diag internal MAC loopback test on 5704S
       Cause:
	Software halted the internal cpu while the cpu was autoneging to establish link with the ESM partner.  The autoneg process 
        is automatically done by bootcode after GRC reset.  Halting the CPU also caused the auto-negotiation process got halted, such 
        that there was no signal detected by the MAC.  As a result, no data could be received and the test failed.
       Fix:
        Software will wait if the autoneg process is going on before halting the CPU to avoid this issue.

version 8.29:
    
    1. Enhancement:
         Renamed "-iscsi" option switch to "-piscsi1".  This option is used to execute a field upgrade of NVRAM to 
         add ISCSI boot firmware. The firmware is programmed into a/the device/s specified by “-c” option switch.

    2. Enhancement: 
         Added "-pump1" option switch.  This option is used to execute a field upgrade of NVRAM to 
         add UMP firmware. The firmware is programmed into a/the device/s specified by “-c” option switch.
  
    3. Enhancement: (cQ #14351)
         Added "-uump" option switch.  This option is used to execute a field upgrade UMP firmware in NVRAM. 
         The firmware is programmed into a/the device/s specified by “-c” option switch if UMP firmware is preexisted in NVRAM.

    4. Enhancement: (cQ #14350)
         Added "-dir" option switch.  This option is used to display file directory in NVRAM.

version 8.28:
    1. Enhancement:
         Modified 5755 NVRAM workaround code, so that it only applied
         to the A0.

    2. Enhancement:
         Limited the maximum values programmed to the "Replenish 
         Threshold" register for 5755 and 5787 for improved performance.

    3. Enhancement:
         Added support for 5755 A1.

    4. Enhancement:
         Added the "cable_sense" keyword to the words recognized by 
         diagnostics in the EEPROM.TXT file. Details in the *.PDF.

    5. Enhancement:
         In the "secfg" and "secfgsb1" command for selfboot firmware, added the Cable Sense 
         option (enable/disable) selfboot supported devices.

    6. Enhancement:
         Added access to GPIO3 via "gpioread" and "gpiowrite".
         GPIO3 is only valid for 5752 and new devices.

    7. Problem: (CQ 14312)
         SMBus address does not display properly in secfg
       Cause:
         If the SMB address is set by older version of diag, the SMB address setting in "asfcfg" of such nvram image will not sync up with 
         the SMB address in "secfg".
       Fix:
         Added "util_syncSMBaddr()" function to sync up the SMB address in both "asfcfg" and "secfg".

    8. Problem: (CQ 14228)
         B57Diag: 5755 with ASF enabled fails C2, C5, C8
       Cause:
	C2 and C5 test failed when diag reset the device.  
        The reset failed because ASF firmware did not deposit "~Kevt" to sram 0xb50 after GRC reset.  
        C8 test will wait for "0x1d" in Reg 0x5034 after CPU reset.   
        Since it is ASF firmware will write "0x1d" in Reg 0x5034 instead of 1st phase of bootcode, the wait time is longer.  
        Hence C8 test will fail.  
       Fix:
         Next release of ASF firmware will have C2 and C5 issues resolved.
         The solution for C8 issue is to increase the wait time when ASF is enabled on 5755.

    9. Problem: (CQ 14306)
         B57Diag: "Cannot gain access to flash, SwArbit: 3100" error message with 5752
       Cause:
	 The issue to the last cpu reset.  In which, the cpu has been reset without halting the cpu.  
         It will cause the software arbiter to lock up.  
       Fix:
         To resolve this, the cpu will be halted before issue the cpu reset.


version 8.27:
    1. Problem: (CQ 13932)
         Device cannot link up with partner when entering "loadd" command.
       Cause:
         The "loadd" command will autoneg link speed by default.  If the link partner is set to "force link",
         the UUT device and the link partner will not link up.  
       Fix:
         Added "-f" option switch in "loadd" command.  User can use "-f" switch to "force link" instead of "autoneg" for link speed.

    2. Enhancement:
         Enabled CQ13779 fix.

    3. Enhancement:
         Increased wait time for C8 test for 5755 if ASF firmware is enabled since it takes longer to load all firmwares.

version 8.26:
    1. Enhancement:
         Finished 5755 A0 NVRAM bug work around.
         Update flshdgsj.bin with the bug work abound in v3.3. 
 
    2. Enhancement: (CQ 14153)
         Removed option 14 from ASFCFG. That option is now configured via SECFG.

    3. Problem: (CQ 14174)
         B57DIAG Eng Fails on exit with 5701s PXE enabled.
       Cause:
         This issue can also be found in V8.24.  It is introduced when adding selfboot support.  
         There is a immature read nvram function call when bootcode is loading PXE after reset during exit.
         Such call only is needed for devices support selfboot.
       Fix:
         Limit this read nvram function call only to devices that support selfboot.

    4. Problem: (CQ 14094)
         sedump command does not work in q57diag v 8.23 and 8.24.  
         Correctly specified sedump command gives error: Cannot open
         then displays usage message.
       Cause:
         A modification has been done on sedump command.  
         Since most of the commands are using a format that don't need a space after options, 
         the sedump command has been modified to follow the same format.
       Fix:
         Modified the code to change back to support the old input format to support customer script files.

    5. Problem: 
         Diag will not show 5787 bootcode version number.
       Cause:
         There is a bug in the selfboot firmware detection function which fail to detect if the nvram 
         contains selfboot firmware or legacy bootcode.
       Fix:
         Modified the code to fix the bug in the function.

version 8.25:
    1. Enhancement:
         Started adding code for 5755 A0 NVRAM bug work around.
    
    2. Problem:
         VPD Test failed on 5787A0, A1 with NIC card using EEPROM.
       Cause:
         The bug was introduced when adding 5755 support since V8.24.
         A workaround for 5755 has been incorrectly applied to 5787.
       Fix:
         The code has been modified to apply the workaround only to 5755. 

    3. Problem:
         "txpkt" command will hang system with 5705 device.
       Cause:
         The bug was introduced when adding 5755 support since V8.20.
         A workaround for 5755 and 5787 has been incorrectly applied on 5705.
       Fix:
         The code has been modified to apply the workaround only to 5755 and 5787.
 
version 8.24:
    1. Enhancement:
         Improved the script file (*.do) "write" function for NVRAM 
         access by byte swapping the write value.

    2. Enhancement:
         Enhanced the "dids" engineering mode command and the "-dids"
         DOS command line option to identify 5752 A2 silent revs.

    3. Enhancement:
         Update Jade A1 Rev ID.

    4. Enhancement:
         Enabled ECD 13216 Fix for 5714S/5715S A2.

    5. Enhancement: (CQ13951)
         Added 3 commands to let user config selfboot firmware without entering the secfg mode. 
         The 3 commands are "secfgsb1", "secfgsb2" and "secfgsb3"

    6. Enhancement: (CQ13927)
         Due to chip timing issue, diag skipped MAC loopback test for 5780.

    7. Enhancement:
         Updated 5755/5755M Bond ID.

    8. Problem: (CQ #13953)
          5714/5715 A2 with ST M45PE10 Flash gets NVRAM corrupted after upgrading bootcode 
       Cause:
          This issue was introduced since V8.22 when adding support for STM25P10A no-buffer flash on Jade.
          Function programNoBufferFlash() got corrupted.
       Fix:
          Fixed function programNoBufferFlash() and upgrading bootcode did not show any problem.

    9. Problem: (CQ 13945)
          B57Diag: "Reading current NVRAM ... OK" line should not be present 

       Fix:
          Removed such message.

version 8.23:
    1. Enhancement:
         V3.2 of flshdgsj.bin released.
         Improved NVRAM strapping options decoding to account 
         all possible NVRAM configurations.

    2. Enhancement:
         Modified code to support selfboot firmware in C8 CPU Fetch Test.

version 8.22:
    1. Enhancement:
         Enabled two tests for 5751Cx/5755/5787 family by default.
         The "serial" test, tests the serial number capabilities
         registers and is now run as nictest A6.
         The "power" test, tests the power capabilities
         registers and is now run nictest A7.
    2. Enhancement:
         Modified the "cputest" (test C2) for the 5714/5715/5780 so
         that it will now pass. A bug in the chip is worked around by
         setting a bit that causes the hardware to use a path that is
         not effected by the chip bug.

    3. Enhancement:
         Added iSCSI Boot support in diag.  
         Impacted command:  
         upgfrm (Added -i option switch)
         iscsiprg (new added)
         secfg    (added option 3 in item 26)
         secfg3   (added new parameter for -m option).
         Impacted option switch:
         -piscsi  (new added)
         -iscsi   (new added)

    4. Problem: (CQ #13904)
          B57Diag: Updating MAC address with "-m" switch erases VID, DID, SVID, SDID and MAC address. 
       Cause:
          The issue has been introduced since V8.18.
          When using -m and -mac along with -f, it works fine.  Once -f is not entered,  
          -m and -mac will not work and corrupted the nvram.  The reason of the nvram corruption is 
          that software is writing an uninitialized buffer data to the nvram.  
       Fix:
          This issue has been fixed by initializing the buffer before writing to nvram.

    5. Enhancement:
         Added "-putil" option switch. This option switch should be used along with "-firmall" option switch.
         When "-putil" was entered, diag will call another application "b57putil.exe".  
         "b57putil.exe" will unload PXE and such that diag can have full control over the device.  "-putil" should be
         used when updating firmware via PXE connection.


version 8.21:
    1. Enhancement:
         Added support for the 5755/5787 in the "cputest" and 
         "vpdtest".  New bin files have been added.  (cpusj.bin and flshdgsj.bin).

    2. Enhancement:
         Enable Gigabit Mode for 5787 and 5755.  
         Old versions of diag only support 10/100 speed with 5787/5755 FPGA board.

    3. Enhancement:
         Updated Register Map for 5787 according to the most updated Register spec.

    4. Enhancement:
         Added "-M" option in txpkt command to enable CQ 9139 Fix in 5787and 5755.

    5. Enhancement:
         Modified to allow programming 5787M image to NVRAM in 5787.

    6. Enhancement:
         Added programming Selfboot firmware to NVRAM via "upgfrm" command.

    7. Problem: (CQ #13773, #13825)
          System with 5700 and 5701 hang when running Diag. 
       Cause:
          The issue was introduced since Diag V8.18.  
          Diag has accessed the 0x7000 block register when adding support for 5755 and 5787.
          In 5700 and 5701, the 0x7000 block is not accessible and cause the system to hang. 
       Fix:
          Diag will not access the 0x7000 block registers when the target is 5700 or 5701.

    8. Problem: (CQ #13822)
          5752A2 with ST Flash shows incorrect firmware/configuration info when loading PXE or ASF.
       Cause:
          Bug has been introduced since V8.17 when adding support for 5755 and 5787.
          The problem only occurs when other NVRAM except Atmel is used.  
          The function that detects if Atmel Flash has been used is broken 
          and cause the software to read the version string at a different location.

       Fix:
          Fixed the function in question.


    9. Problem: (CQ #13768)
          B57Diag: "sedump -l -f<filename>" command dumps incorrect NVRAM size
       Cause:
          When -l option is not entered, the sedump file default length will be 8K.  
          If -l option had been entered but did not specify the dump size, the entire NVRAM will be copied to file.  
       Fix:
          When -l option has been entered but missing the dump size, a warning will be issued to prompt user to 
          enter the dump size or the entire NVRAM will be copied to file.


version 8.20:
    1. Enhancement (CQ # 11370):
         Added the engineering mode command "aspm" for setting PCI-E
         link states. 

    2. Enhancement:
         In the "secfg" and "secfg5" command added the Cable Sense 
         option (enable/disable) for the 5752M/5755M/5787M/5787FM 
         chips.
    
    3. Enhancement:
         Enabled C8 CPU Fetch Test in NICTEST by default.

    4. Enhancement:
         Enhancement Register Test for 5755 and 5787.

    5. Enhancement:
         Enabled 5714 and 5715 support by default.

    6. Enhancement:
         Removed ECD 13216 fix on 5714/5715 A2 SERDES devices for re-evaluation.

         
version 8.19:
    1. Problem: (CQ #13760)
          B57diag V8.17 "sedump" command was broken.  
       Cause:
          When adding selfboot firmware support for 5787, a bug was introduced.
          Output file name cannot be enter correctly, such that nvram data cannot be 
          dumped to file.  
       Fix:
          Corrected the issue by fixing the file name input function.
       Impact:
          The issue was introducing since version 8.12.
       
    2. Enhancement:
         Added 5714/5715 A2 support.

    3. Enhancement:
         Added 5752 A2 support.
    
    4. Enhancement:
         Enable ECD 13216 fix on 5714/5715 A2 SERDES devices.

    5. Enhancement:
         Enable ECD 13332 fix  on 5714/5715 CUPPER and SERDES devices.
    
    6. Enhancement:
         Set Bit 15 and clear Bit 14 on Reg 0x6C of 5714/5714 to maximize performance.t.
    
    
version 8.18:
    1. Enhancement:
          Enhanced the "-dids" command line option and the "dids"
          engineering mode command so that when they are run after
          a new device ID has been programmed to the NVRAM and the
          device has been reset the newly programmed ID of the
          device will be displayed via "dids".
    2. Enhancement:
          Added 5903M and 5903F support according to 8.3 MRD.

    3. Enhancement:
          Added NVRAM devices support for 5755 and 5787.

    4. Enhancement:
          Added new PHY ID support for 5755 and 5787.

    5. Enhancement:
         Added -K option in txpkt command to enable CRC-32 check on RX path.  It is part of the IPV6 support for 5787.
   
    6. Enhancement: (CQ #13546)
         Enhance display format of "seread" for LITTLE ENDIAN
       Fix:
         Added -l option in seread and sewrite commands to support LITTLE ENDIAN format.

    7. Enhancement:
         Added code to support NVRAM image which is larger than 128K byte in size.  NVRAM image with size larger
         than 128K can be program to NVRAM from both command line mode or engineering mode if the NVRAM is large enough.

    8. Enhancement:
         Added 5780 B0 support.
    
version 8.17:
    1. Problem: (CQ #13510)
          After upgrading pxe version, Diag sets incorrect pxe speed on 2nd port of dual port.
       Cause:
          The issue is due to diag incorrectly update secfg when programming PXE.  
          After programming PXE, diag will need to update Expansion ROM size in "secfg" for both port.  
           During the update, software has updated the wrong field.  
       Fix:
          Fixed the bug.
     
    2. Enhancement:
          Added UMP Firmware support.
          New added commands and option switches.
          umpcfg, seprg -u, -pump.

    3. Enhancement:
          Removed C8, CPU Fetch test from NICTEST for re-evaluation.

version 8.16:
    1. Problem: 
          Secfg menu upate phase 2.
          In secfg menu, some of the settings need to be applied independently to selected port in dual port devices.
          However, the current diag only apply the setting to the primary port.
         
       Fix:
          Modified code to correct just that.
     
       Impact: 
          It will have impact on 5704, 5714, 5715 and HTLE. 
          Commands get affected are:
          secfg, secfg2, secfg3, secfg4 and -meep.
        
          The settings get affected are:
          Item 33: Reversed Nway
          Item 37: Phy Auto Powerdown
          Item 44: SERDES TX Drvr Pre-Emp - ENABLE (5704 only)

    2. Enhancement:
          Updated Diagnostic User's Guide PDF file.
          
version 8.15:
    1. Problem: (CQ#13038) 
          After disabling MAC_A of dual port devices and then reboot the system, 
          the MAC_B no longer able to pass traffic.
       Cause:
          When user disable MAC_A with the current diag , only NVRAM offset 0xc8[11:10] has been set.  
          NVRAM offset 0xD8[11:10] remain unchange. Therefore 0xc8[11:10] and 0xd8[11:10] are NOT the same.  
          For bootcode to correctly disable MAC_A both 0xc8[11:10] and 0xd8[11:10] must be the same.
       Fix:
          Modified code to make sure that 0xc8[11:10] and 0xd8[11:10] have the same setting 
          when disabling any port.
     
       Impact:
          This issue is introduced in diag V8.02.  It will have impact on 5704, 5714, 5715 and HTLE. 

    2. Problem: 
          In secfg menu, some of the settings need to be applied the same to both ports for dual port devices.
          However, the current diag does not do that.
         
       Fix:
          Modified code to correct just that.
     
       Impact:
          This issue is introduced in diag V8.02.  
          It will have impact on 5704, 5714, 5715 and HTLE. 
          Commands get affected are:
          secfg, secfg2, secfg3, secfg4 and -meep.
        
          The settings get affected are:
          Item 19: Force PCI Mode
          Item 23: Max PCI Retry
          Item 25: Dual Mac Mode
          Item 29: Expansion ROM size
          Item 30: Design Type
          Item 33: Reversed Nway

version 8.14:
    1. Problem: (CQ#13415)
          DIAG does not display NVRAM settings correctly that have been set 
          by previous DIAG 
       Cause:
          Source code to access EEPROM has been corrupted when adding support to new nvram.
       Fix:
          Resolved issue by correcting corrupted source code.
     
version 8.13:
    1. Problem: (CQ#12718)
          A2 control Register failed on 5714, 5715 and HTLE.
          Read/write bit 1 did not get cleared after writing zero at offset 0x468.
       Cause:
          Phy detected False Carrier and cause Bit 1 to go high during the test and it stay high
          for a short amount of time.
       Fix:
          Modified diag to put the phy in ISOLATED Mode before A2 test and reset Phy 
          at the end of the A2 Test.  
    
    2. Enhancement:
          Updated Stanford Pin Strap Table for NVRAM
      
    3. Enhancement:
          Change SBD Hrdlen field from 8 bits long to 6 bits long for IPV6.
    
version 8.12:
    1. Problem: (CQ# 13077)
          According to B57Diag.pdf, tests B1 and B3 are enabled by default, but they are not 
          ran when executing B57diag.exe. 
          When using the command "-T" to include those tests, they still do not run.
       Cause:
          B1 test is skipped by mistake for Hamilton. B3 test will only test on device up to 5704.  
          Section of PDF file is outdated.
       Fix:
          Including B1 Test for Hamilton.  For test that is not applicable to target device will have N/A labeled.
          PDF file has been updated.
       
    2. Problem: 
          User is not able to edit firmware image using -meep if image only contain bootcode.
       Cause:
          When adding dual port IPMI support, bugs has been introduced.  User can only edit firmware image that contain 
          bootcode and IPMI code.
       Fix:
          This has been fixed.
 
    3. Enhancement:
          Added Register Test support for Stanford and Jade.
      
    4. Enhancement:
          Continue to add selfboot support.
       
    5. Enhancement:
          Continue to add IPV4 and IPV6 support for Stanford.
    
    6. Enhancement:
          Added IPV4 and IPV6 LSO support for Stanford.

    7. Enhancement:
          Added IPV4 and IPV6 new BD format support for Stanford and Jade.

    8. Enhancement:
          Added IPV4 and IPV6 IP/TCP/UDP checksum off load support for Stanford and Jade.

    9. Enhancement:
          Added RSS support for Stanford and Jade.

   10. Enhancement:
          Added new Flash device support for Stanford and Jade.

version 8.11:

    1. Problem: (CQ# 13028)
          In asfcfg command, user could configure the link to speed to a invalid 
          configuration.
       Cause:
          There is no such configuration: Force 10_100 speed or force all_speed.
          When force speed is selected, one of 10, 100, or 1000 speed must be used.
       Fix:
          When an invalid conbination is found, it will change to force 100 speed
          as default.             

    2. Problem: 
          D4 test failed on all good chips.
       Cause:
          This issue was introduced since V8.09. 
          D4 test failed was due to "SND_BD_FLAG_DONT_GEN_CRC" bit was not set.
          When modifying code to use small size packet in loop back,
          the "SND_BD_FLAG_DONT_GEN_CRC" bit was not set and it will let the device to pad zeros and generate CRC for the 
          packet.  However, not setting the "SND_BD_FLAG_DONT_GEN_CRC" bit causes D4 test to fail since it use the software 
          to generate CRC and the "SND_BD_FLAG_DONT_GEN_CRC" bit need to be set. 
       Fix:
          Modified the code to set "SND_BD_FLAG_DONT_GEN_CRC" bit in D4 test.            

    3. Problem: (CQ# 13027)
          In asfcfg command, user could not change the speed to 1000
       Cause:
          The code was erronously coded; when use try to force 1000, the code will
          configure to force to all_speed.
       Fix:
          Fixed the bug.

    4. Enhancement:
          Enhanced IPv6 extension headers support for Stanford.
          Hop-by-Hop and Destination header now supported.

    5. Enhancement:
          Modified memory test for the Stanford memory map.
          
    6. Enhancement:
          Modified to support new NVRAM pin strap tables for Stanford and Jade.

    7. Enhancement:
          Modified register test for Stanford and Jade with the new register spec.         
    
    

          
version 8.10 :

    1. Problem: (CQ# 12946)
          System under test would be hung when save secfg data via b57diag v8.08 and V8.09. 
       Cause:
          This issue was introduce during adding IPMI support for dual-port devices in diag v8.08.  
          The cause is a flag used for detecting if IPMI firmware checksum was corrupted had not been set correctly
          when IPMI firmware was not loaded.
       Fix:
          Modified code such that the flag will be set correctly.

    2. Enhancement: (CQ12909)
          Enabled HTLE (5780) support by default and added bin files for HTLE (5780) to the b57diag release directory.



version 8.09 :

    1. Problem: 
          Diag failed to filter out chips that did not pad small size packet (< 60 bytes) to 60 bytes with zeros.
       Cause:
          Diag loopback test did not test with packet that has less than 60 bytes in length.  The start_packet_size
          in loopback test is 60.
       Fix:
          Changed the start_packet_size to 22 bytes in loopback test.  With packet size less than 60 bytes, the chip
          should pad it to 60 bytes.  For those devices that fail to do so will be filter out.

    2. Enhancement:
          Finished coding first take of IPv6 for Stanford.
          No extension headers at supported at present.

    3. Enhancement:
          Added support to PCI and PCI-E PXE firmware programming.
          Impacted commands and option switches:
          pxeprg, pxeprga, upgfrm, -pxe, -ppxe.


version 8.08 :

    1. Problem: 
          When NVRAM is corrupted or is blank, diag will warn user to
          reprogram NVRAM and Mac address.  

          "Warnung: NVRAM content corrupted"
          "Reprogrammning NVRAM and Mac Addr may correct this problem"
       
          When user only try to program the blank NVRAM without 
          programming the MAC address.  Diag will issue the same warning message. 
          However, user usually ignore the warning.
       Fixed:
          Improved the warning messages when the NVRAM is corrupted or is blank.
          *******************************************************************************
	  *WARNING: NVRAM content is corrupted or NVRAM is blank.                       *
	  *         Please reprogram the following:                                     *
	  *         1. NVRAM by using -f option.                                        *
	  *         2. MAC ADDRESS by using -m, -mac (for single port) or -fmac options *
	  *******************************************************************************
   
          Improved the warning messages when user only progame the corrupted/blank NVRAM 
          without programming the MAC address.
          *******************************************************************************
	  *WARNING: NVRAM content is corrupted or NVRAM is blank.                       *
	  *         Please reprogram the following:                                     *
	  *         1. MAC ADDRESS by using -m, -mac (for single port) or -fmac options *
	  ******************************************************************************* 

    2. Problem: (CQ # 12887)
          sedump with '-a' option fails
          OEM reported that when using the command "sedump" with the '-a' option, it will fail 
          the Checksum test.
       Cause:
          A checksum test has been added in "sedump" command to check the data being read back from NVRAM.  
          Before NVRAM data being dump to a file without using “-a” option, the start address of the 
          firmware will be changed.  Then the checksum test function will take care of the change and 
          calculate the checksum correctly.  However, in case of using “-a” option, there is no start 
          address modification.  That is why the checksum function failed.  
       Fix:
          Diag will perform the checksum test to a duplicate of the NVRAM data buffer.  
          If the test pass, diag will either perform the start address modification depends on 
          if the “-a” option present.

    3. Problem: (CQ # 12570)
          If a flash image is created with the wrong length the image still can be programmed 
          using the b57diag command line without failure.
       Cause:
          Normally, diag will only check the magic value before programming the NVRAM.
       Fix:
          Diag will test the checksum of the NVRAM image before programming to NVRAM 
          to make sure the NVRAM image is in good condition.

    4. Enhancement:
          The "-exe" option was enhanced so that when multiple devices
          are present and the "-exe" option is used then the "@" symbol
          can be used to execute a tests on multiple devices.
    
    5. Enhancement:
          Continued adding code for Stanford IPv6 support.
    
    6. Enhancement: 
          Added Smbus address programming support for IPMI on dual-port devices. 
          In case of IPMI firmware on dual-port devices, SMBUS Address can be configurated 
          via "secfg" command, item 51 and 52.
          User can only configurate SMBUS Address on the 1st port via "asfcfg" command. 

          In case of IPMI firmware and ASF firmware on single-port devices, SMBUS Address can be 
          configurated via both "asfcfg" command and "secfg" command, item 51.

version 8.07 :

    1. Problem:
          The -pnchk option checks that an entered part number matches
          the value stored in the image file that is to be programmed.
          If the entered string was longer than the string in the
          file image, then no error was flagged (incorrect action).
       Cause:
          The code has a bug that did not flag an error when the
          entered string was longer than the string in the image file.
       Fix:
          Fixed the code so that if the string length of the entered 
          value is longer than the expected value in the file then 
          the characters up to the expected string length are compared.
          
    2. Enhancement:
          Decreased the flash arbitration time out value because the 
          delay on failure was too long.

    3. Enhancement: (Hamilton)
          - Read the PCI bus speed value from PCI register 0x74 for 
            revision A3-on instead of using the fixed speed of 133 MHz.
          - "seprg" now does not over write the second MAC address
          - "umpecho" command added to put the ump firmware in loopback 
             mode so that every thing seen on the input is echo'ed to
             the output (supported on A1 and newer devices)
             / ump14b.bin is updated (version 1.3)
          
    4. Enhancement:
          Added the following changes for Stanford:
          - added support for variable ATMEL NVRAM sizes
          - fixed a number NVRAM access bug
          - disabled FastBoot
          - disabled VPD test (not supported)
          - disable voltage variation because it is fixed
          - added multiple ring support
          - added device ID for the mobile version
          - IPv6 implementation started

version 8.06 :

    1. Enhancement:
          Modified "regtest" so that it runs on the Stanford FPGA when
          the -fpga55 option is used.

    2. Enhancement:
          Added SelfBoot Support to Diag (Phase 3).
          Impacted the following option switches and Commands.
          
          -w -asf -x -fmac -m -mac -mba -mbas -pxe -pipmi 
          -dids -pasf -pxes -pupdateasfcfg -firm -firmall 
          -updatesecfg -updateumpcfg -chksecfg -ppxe -smbaddr -vpxe -f -u

          nictest dids setwol

    3. Enhancement:
          Started adding Stanford support for multiple rings.

    4. Enhancement:
          Added the "pciwr" command and improved the "pcird" command's
          help.

    5. Enhancement: (PCDR)
          Added 5714 support to PCDR.  New Bin files need to be added as well.

version 8.05 :

    1. Enhancement:
          Removed "Hot Plug" secfg options for Baxter family of chips
          because the chip family does not support those options.

    2. Enhancement:
          Modified Jade device ID to 0x7f7f.

    3. Enhancement:
          Added engineering mode commands txcrcip, txcrcport, txdstip,
          txdstport, txtype, txprot and txipprot which set up the Tx
          packet information without using the txcfg command.

    4. Enhancement:
          The blast engineering mode command can now specify an
          absolute timeout value after which the blast command
          automatically returns to the command prompt via -Q<value>.

    5. Enhancement: (CQ #12619)
          The "nvsize" commands allows entry and display of data in
          hex and decimal.

    6. Enhancement: (CQ #12620)
          The "tpm" size was misinterpreted due to a bug in the 
          "nvsize" command which was fixed above in CQ #12619.

    7. Enhancement:
          Added SelfBoot Support to Diag (Phase 2).
          Impacted the following Commands.
          
          seprg upgfrm pxeprg asfprg setpxe setwol 
          setump setasf dir dirw erase semap secfg setipmi 
          sechksum sedump sever semap 
          secfg secfg1 secfg2 secfg3 secfg4 secfg5
          asf asfcfg umpcfg binchksum vpdwrite vpdinfo userblock tpm.

    8. Problem: (CQ #12545)
          A use did not like the display when programming at ST NVRAM
          on the Shasta chip family.
       Cause:
          Too much intermediate status send to screen.
       Fix:
          Modified code to remove verbose output.
      

version 8.04 :

    1. Enhancement:
          For Stanford support:
          - Modified the msi_test according to new register locations
          - Added Stanford register definitions for the PCI cfg reg
          - Memory testing now uses the Stanford memory map.
    2. Enhancement:
          Added initial Jade support.

    3. Enhancement:
          Added Shasta C1 support.

    4. Enhancement:
          Replaced CPU14.BIN with CPU14A.BIN and CPU14B.BIN.
          CPU14A.BIN will have no-op workaround.
          CPU14B.BIN will NOT have no-op workaround.
          Hamilton A0, HTLE A0-A3 will need to use CPU14A.BIN.
          Hamilton A1 will need to use CPU14B.BIN

    5. Enhancement:
          Replaced FLSHDG14.BIN with FLSHD14A.BIN and FLSHD14B.BIN.
          FLSHD14A.BIN will have no-op workaround.
          FLSHD14B.BIN will NOT have no-op workaround.
          Hamilton A0, HTLE A0-A3 will need to use FLSHD14A.BIN.
          Hamilton A1 will need to use FLSHD14B.BIN

    6. Enhancement:
          Replaced UMP14.BIN with UMP14A.BIN and UMP14B.BIN.
          UMP14A.BIN will have no-op workaround.
          UMP14B.BIN will NOT have no-op workaround.
          Hamilton A0, HTLE A0-A3 will need to use UMP14A.BIN.
          Hamilton A1 will need to use UMP14B.BIN

version 8.03 :

    1. Problem: (CQ #12424).
          Baxter displays voltage variation on test B7 and C8, even 
          though the voltage of the chip is fixed. 
       Cause:
          Oversight.
       Fix:
          Voltage variation for test B7 and C8 removed.

    2. Enhancement:
          Run the Open/Short Test (E1) only at 1000 Mbits/s.
          Experimental data shows no advantage to running at 10/100.

    3. Enhancement:
          Baxter support enable by default.

    4. Enhancement:
          Modified to ban bin-bang interface to NVRAM.


version 8.02 :

    1. Enhancement:
          Performed changing in device ids for HT-LE Copper and Serdes devices so that it will be different 
          than the device ID for Hamilton.  The new device IDs for the 5780 (aka HT-LE) are:
          5780 (HT-LE) copper:  0x166A
          5780 (HT-LE) serdes:      0x166B

    2. Enhancement:
          Added code in "binchksum" command to handle invalid input file.  Function will return "Invalid Magic Value"
          message if invalid file has been used.

    3. Enhancement:
        -chksecfg <file_p> | <file_s>  Check Boot code configuration.
        
        -chksecfg will enable the NVRAM Secfg Test.
    Boot code configuration will be checked against input files.  
        The input files are in the same format as EEPROM.TXT.  
        <file_p> is for the primary port and <file_s> is for the secondary port.  
        Software will read command from input files and compare with the boot code 
        configuration and return “Passed” or “Failed” accordingly.


    Example:
        b57diag –chksecfg file_p.txt                  (for single port devices)
                b57diag –chksecfg file_p.txt file_s.txt       (for dual port devices)


    4. Enhancement:
          Added "vpdinfo" command in engineering mode to Show VPD Information.
          
          vpdinfo
          cmd: vpdinfo
          Description:  Show VPD Information. 

          Syntax:  vpdinfo 

version 8.01 : 

    1. Enhancement:
          Added the engineering mode command "dmashasta" that tests
          basic DMA functionality (valid for the Shasta family only).
    
    2. Enhancement:
          Baxter A1 bond ID test and seprg device identification 
          enhanced/fixed.
    
    3. Enhancement:
          Added "binchksum" command in Diag engineering mode.
          The "binchksum" command will take a firmware file and test the checksum of each piece of firmware 
          stored in the file.  It is simular to the "sechksum" command which is testing the 
          checksum of each piece of firmware stored in nvram.

          syntax: 0:>binchksum -f<name>

    4. Enhancement:
          Added code to the "sedump" command to verify the firmware checksum of the extracted data from nvram 
          to ensure the qulity of the output image of the "sedump" command.

version 8.00 : 

    1. Enhancement:
          Modified diagnostics to not touch register 0x2018 for chips
          that belong to the Shasta family.
    
    2. Enhancement:
          Added back the Open/Short test that was removed in release
          v7.01 of diagnostics, with some algorithm improvements.
          The test is available under the new "Group E" tests. Group E
          is used for tests under development.
          
    3. Enhancement: (CQ# 12180)
          Allow enable of IPMI on both ports for the dual-port chips.
       Fix:
          Modified diag to let user to enable IPMI firmware in both ports of the dual port devices.  
          However, user will be able to enable ASF firmware only in one port of the dual port devices.
       Impact:
          Impacted commands and option switches are list below.
          1. secfg   2. secfg3 -a   3. setasf   4. setipmi   5. setwol   6. setpxe   7. setmba
          8. -asf    9. -mba       10. -mbap   11. -mbas    12. -pxes   13. -w      14. -x
         15. -ipmi  16. -meep 

    4. Enhancement: (CQ# 12323)
          Enhancement request to display the slot type in Diag engineering mode.
       Fix:
          Modified diag to show slot type and speed in the following format.
          For PCI-E Devices display changed from:
           PCI = E 2
               Spd = 500

          to:
           PCI = Ex1 (for pci-e x1 slot type)
           Spd = 250 (2.5G)


version 7.60 :
    1. Problem: (CQ# 12252)
          System would lock up when testing b57diag v7.59 on adapters with EEPROM
       Cause:
          Diag write to reg 0x7020 when devices do not support memory arbitration. 
       Fix:
          To fix this, diag will check if devices support memory arbitration before writing to Reg 0x7020.

    2. Problem: (CQ# 12176)
          B57diag did not get NvRAM grant before issuing GRC_RESET.
       Fix:
          B57diag will get NvRAM grant before issuing GRC_RESET.

    3. Problem: (CQ# 12179)
          b57diag C2 & D1 test fails
       Cause:
          C2 test fails has been fixed in v7.59.(CQ# 12143)
          The cause of D1 fails is due to diag did not wait long enough after resetting the RX Engine.
          Diag continued to its rx setup when the rx engine was still in reset mode.  
          This only happened to the two CIOBE ports.
       Fix:
          Diag will increase the wait after resetting the RX engine.  

    4. Enhancement:
          Remove support for Baxter device.

version 7.59 :
    1. Problem: (CQ# 12184)
          DOS DIAG: Not able to use 'Reset -c' command. System return error message 
          "Cannot gain access to flash".
       Cause:
           The issue is due to nvram arbitration lock up. Firware was granted arbitration
           to access nvram after cpu was halted by diag.
       Fix:
          diag cleared firware arbitration after halting CPU.

    2. Problem: (CQ# 12143)
          Diag C2. Fails on 5704, 5703, 5702 cards.
       Cause:
           Tx cpu test time out loop has been shorted when debuging other issue and did not
           get restored.
       Fix:
           Restored tx cpu test waiting time and issue got fixed.

version 7.58 :
    1. Enhancement:
          Modified MSI test for Hamilton.
          After each MSI the mailbox register is written to clear the
          interrupt.
    2. Enhancement:
          Added an option to setup hot plug power values for Baxter
          chips and for Shasta C0 devices and newer.
          The engineering mode command "secfg" or "secfg5" and the DOS
          command "-meep" now support this feature.

    3. Enhancement:
          Modified "-firm" and "-firmall" option switches and "upgfrm" command
          to support new functions of hot plug power values for Baxter.

version 7.57 :
    1. Problem:
          The VPD test failed on a system (CQ #12013).
       Cause:
          Static function are handled incorrectly by the compiler.
       Fix:
          Removed static function calls and recompiled the following
          binary images (release 3.0)
            cpu05.bin, cpu.bin, cpudg05.bin, cpudiag.bin,
            flshdg05.bin, flshdg5x.bin, and flshdiag.bin.
    2. Problem:
          The same system send/receive test fails.
       Cause:
          The interrupt fix (CQ# 11107) of point 1 of release v7.47
          below introduced an error which caused the above failure.
          The error is that on some interrupts an EOI was not sent.
       Fix:
          Modified the code to send an EOI for all interrupts 
          destined for the BRCM controller.
    3. Problem:
          The embedded CPU test (cputest or nictest c2) fails when the
          host CPU is throttled.
       Cause:
          The modification in version 7.53 point 5 caused this problem
          and additional delay is required in order for the embedded 
          CPU to return the pass indication to the host CPU.
       Fix:
          Increased the time out amount the host CPU waits for the
          embedded CPU before a failure is declared.

version 7.56 :
    1. Problem:
          PCI cfg reg test failed on Shasta C0 at reg 0x6000.
       Cause:
          For Shasta C0 the functionality of register 0x6000 (the MSI
          register) has changed.
       Fix:
          Modified code to correctly test register 0x6000.

    2. Problem: (CQ #11960)
          'Cannot gain access to flash' error on OEM 5751 A1 LOM
       Cause:
         The issue happened during diag unloading driver and 
         only when ASF was enabled.  When diag was tring to gain NVRAM 
         arbitration before stop CPU, CPU was still loading ASF firmware.  
         Since the LOM was using EEPROM instead of flash, it took longer 
         time to load ASF from NVRAM. As a result, daig failed to gain 
         access to NVRAM.  
       Fix:
         To resolve this issue, diag will wait until 
         CPU completed loading firmware from NVRAM before accessing NVRAM.
 
   3. Enhancement: (CQ 11902)
          Add Command Line Option for Programming ASF SMBus Address
       Fix:
          Added -smbaddr <hex1> | <hex2>…|<hex3> option switch to diag.
          -smbaddr can take mutiple parameters.
          Example:
          a. -smbaddr 45    (SMB Address = 0x45)
          b. -smbaddr 45 6c (SMB Address for 1st device=0x45 and 2nd device = 0x6c)

          -smbaddr must be used along with -c option.  
          Number of parameters for -smbaddr must be the same as number of devices 
          selected by -c.

          Example:
          b57diag -c 0 3 6 -smbaddr 6c 6e 70 -t abcd.
          b57diag –c 0 –e b57kia –pasf asf.bin –smbaddr 66 –t abcd

version 7.55 :
    1. Problem: (CQ #11944)
          An EEPROM 5721 LOM chip fails the NVRAM test (nictest C1).
       Cause:
          During modification of the NVRAM (Baxter) code a bug was
          introduced.
       Fix:
          Modified code to remove above bug.
    2. Problem:
          The 5701 chip family fails the bond ID test.
       Cause:
          Fixing the issue in version 7.53 point 1 caused this issue
          because the default case in the bond ID test which allows 
          all zero bond ID devices to pass was allowing the 5701
          family of chips to pass the bond ID test.
       Fix:
          Added a case to the code to specifically test the bond ID 
          for the 5701 family of chips.
    3. Enhancement:
          Added support for Shasta C0.

    4. Enhancement:
          Added new revision ID support for Hamilton A1 and HTLE A2 on.
    5. Enhancement:
          Added new revision ID support for Baxter A1 on.
    6. Enhancement: (CQ 1159)
          Add support to diag manufacturing mode for user using PCI bus, dev and function 
          to select devices.
       Fix:
          Modified -bus option switch to accept dev and func input.
          e.g. 
          -bus 1 (select all Broadcom devices on bus #1)
          -bus 1:2 (select all Broadcom devices with bus #1 and dev #2)
          -bus 1:2:3 (select Broadcom device with bus #1, dev #2 and func #3)

          User can use either -c or -bus to select devices.
       
version 7.54 :
    1. Problem:
          The Baxter chip and the ST M45PE10/20/40 NVRAMs had the
          following issues
          . the NVRAM size displays incorrectly
          . the method used for programming was slow
          . NVRAMs with a zero value for the FLASH bit were treated as
            EEPROMs (the FLASH bit is a jumper option that is reflected
            in reg 7014)
          . failed the VPD write test
       Cause:
          The causes of the above issues were identified as:
          . diagnostics did not have a routine to size ST NVRAMs and
            hence displayed the incorrect size
          . the ST part was programmed as a un-buffered device and 
            should be handled as a buffered device
          . for Baxter flash devices with a zero FLASH bit can be
            flashes
          . VPD write are not supported for Baxter
       Fix:
          The fixes for the above issue are:
          . added a NVRAM sizing routine for ST parts
          . treated the ST parts as buffered devices
          . allow the FLASH bit to be zero for flashes
          . do not run the VPD write test on Baxter chips
    
    2. Problem:
          When FastBoot on the Baxter chip is enable and bootcode is
          updated the first and second phase of bootcode can get out
          of sync and can cause a number of issues.
       Cause:
          Problems are caused on FastBoot because in memory phase one
          can be out of sync with the NVRAM phase two bootcode.
       Fix:
          When bootcode is updated in NVRAM force the normal boot
          procedure.

version 7.53 :
    1. Problem: (CQ# 11401)
          The 5789-B1 passed the bond ID test in v7.34 unexpectedly.
       Cause:
          Diagnostic allows devices that have a bond ID of zero to
          pass the bond ID test (the bond ID of 5789-B1 is zero)
          even if the device is not supported by that particular 
          version of diagnostic.
       Fix:
          Modified diagnostics to always check for supported bond IDs
          even if the bond ID is zero.

    2. Problem: (CQ# 11737)
          DIAG C2 test failed (CPU Test) on Baxter in PCI-E X16 slot.
       Cause:
          Compiler has bug that it compiles 'static' routine incorrectly. 
       Fix:
          By replacing all static routine to public routine, it fixed the problem.
          CPU05.bin V2.1 will fixe the issue.
   
    3. Problem: (CQ# 11499)
          5751A1 NIC is not recgonized by DIAG in OEM system.
       Cause:
          Normally, diag detects devices by passing vendor ID and device ID to BIOS and 
          BIOS will return information about the device if the device is present.  
          In this system, BIOS did not return valid data to diag.  
          As a result, Diag could not see the device.  
       Fix:
          The "missing" device can only be found by scanning all PCI devices in the system.  
          So to working around the "missing" device issue, a new command line switch (-sc) has been added to diag.  
          It will change the way diag detect devices.  By entering "-sc" diag will scan all the PCI devices in the system 
          instead of let BIOS detecting the target devices.  
          e.g. b57diag -sc

    4. Enhancement:
          Update labels for year 2005.

    5. Enhancement:
          Modified the embedded CPU reset routine to only halt
          the CPU and not reset the CPU before the halt.
          Rename the function t3_reset_cpu() to t3_halt_cpu().
          

version 7.52 :
    
    1. Enhancement:
          Added the "-nosz" DOS command line option that will
          disable the storing of the TPM and NVRAM size in NVRAM
          when diagnostics is run from the DOS prompt.
    2. Enhancement:
          Replaced the following bin files with the latest version.
          File Name    Latest Version
          CPU.bin      V2.0
          CPU05.bin    V2.0
          FLSHDG5X.bin V2.6

version 7.51:
    1. Problem: 
          When user create TPM block in NVRAM, this block may overlap with other firmware and result in firmware corruption.
       Cause :
          "tpm" cmd allow user to specify the location of the TPM block.  However, diag did not check if the new TPM block will
           overlap with other firmware.  Beside, user is also able to specify a TPM block that is larger than the maximum 
           available space of the NVRAM.
       Fix:
          Diag will check for the location of the tpm block to make sure it is not overlapping with other firmware.  
          Diag will also make sure the size of the TPM block will not larger that the maximun available space of the NVRAM.

version 7.50 :
    1. Enhancement:
          The "nvsize" command now runs automatically when the
          following commands are run:
          - "-f", "-firm", "-firmall" in DOS command mode, and
          - "seprg", "upgfrm -b" in engineering mode.

version 7.49 :
    1. Problem: (CQ# 11542)
          The "-firmall" command fails with the SA25F020 flash chip.
       Cause:
          Diagnostics is code for maximum of 131Kbytes of NVRAM and 
          the above chip provides 256Kbytes.
       Fix:
          Updated maximum NVRAM constant size to allow for 1Mbyte.

    2. Problem:
          The "nvsize" command corrupts the checksum in NVRAM.
       Cause:
          A bug existed in the manner the checksum routine was called.
       Fix:
          Called the checksum routine with the correct values.



version 7.48 :
    1. Problem: (CQ# 11311)
          Missing carriage return when "sechksum -v0" is run.
       Cause:
          Oversight.
       Fix:
          Added carriage return.

    
    2. Enhancement: 
          Added an option to enable/disable L0s performance 
          enhancement for the Shasta devices.
          The engineering mode command "secfg" or "secfg5" and the DOS
          command "-meep" now support this en/dis feature.

    3. Enhancement: 
          Store the NVRAM and TPM size to NVRAM.
          The engineering mode command "nvsize" preforms this function.

version 7.47 :
    1. Problem: (CQ# 11107)
          Diagnostics crashes on certain systems.
       Cause:
          The interrupt handling fails on certain systems.
          Diagnostics EOI's all interrupts that it sees.
          This causes problems for some chained ISRs and produces the
          diagnostics crash observed.
       Fix:
         Modified diagnostic to only EOI interrupts destined for it. 
         Interrupts destined for chained ISRs are not EOIed.
    2. Problem: (CQ# 11256)
          Diagnostics ROM loader fails when the host CPU is throttled.
       Cause:
          There is a bug in the diagnostic code that tracks the ROM
          loader that is observable only during CPU throttling.
       Fix:
         Modified the ROM loader tracking code to allow for the case
         seen during CPU throttling.

version 7.46 :
    1. Enhancement:
          Add support to configure the 5704 SERDES TX Pre-Emphasis.
          The engineering mode "secfg" and "secfg4" commands, and the
          "-meep" DOS command line option now have options to enable
          the Pre-Emphasis and set the values for both ports.
       Fix:
          Added support as specified above.

    1. Problem: (CQ# 10966)
          b57diag -all option position dependent in command string
       Cause:
          "-firm" and "-firmall" are single task functions.
          They only take a few option switches which are entered after "-firm" and "-firmall" commands.  
          "-firm" will take: "-sil" and "-log" 
          "-firmall" will take: "-sil", "-log", "-updatesecfg" and "-updateasfcfg".
       Fix:
         "-all" has been added to "-firm" and "-firmall" option switches list. 

   
verson  7.45 :
    1. Enhancement:
          Enabled force VPD write in vpdtest command.
       Cause:
          By default, diag will do vpdwrite test when vpdtest command gets call the first time to presurve the life of the NVRAM.
          User cannot force diag to do vpdwrite test again.
       Fix:
          Enabled force VPD write in vpdtest command.  

    2. Enhancement:
          Update flshdg05.bin, flshdg5x.bin and flshdiag.bin from V2.24 to V2.25.


    1. Problem :
          Nictest C2 (cputest) failed with version 7.44 when run with
          the new NVRAMs that are supported as of version 7.44.
       Cause:
          Support for the programming of the new NVRAMs was added to 
          diagnostics but the support for running the NVRAM test (C1
          or setest) was not added which corrupted the NVRAM and
          caused the C2 (cputest) to fail.
       Fix:
          Added support for the C1 test or setest for the NVRAMs that
          support was added for in version 7.44.

version 7.44:
    

    1. Enhancement:
          Add support for following flash devices.
          - SaiFun SA25F0xx where xx=05/10/20 (512Kbit-2Mbit)
          - ST M45PEx0 where x=1/2/4/8 (1Mbit-8Mbit)
       Fix:
          Support for flash devices specified above added.

    2. Enhancement : 
          Remove the "-ctpm" command line option added in v7.42.
       Fix:
          Removed the "-ctpm" command line option.

    3. Enhancement :
          Enhance the engineering mode command "log <filename>" so that
          output is flushed often, so that if the system hangs a log
          file is still produced.
       Fix:
          Added the "-logfl" DOS command line startup option that enable
          frequent log file flushes (aka write do disk).

    4. Enhancement :
          Change the PXE programming code so that it also changes the Expansion ROM size parameter 
          in the NVRAM based on the PXE image size.
       Fix:
          Added code to do so.

    5. Problem: (CQ# 11130)
          Diags -firmall errors out if file size doesn't match device size
       Cause:
          The error in fact is because of mismatch in file size and device size.
          Diag checks file size and nvram size before checking device ID.
          
       Fix:
          Diag will be modified to move size checking after device ID check.

    6. Enhancement:
          Updated flshdiag.exe, flshdg05.exe and flshdg5x.exe to V2.24.

version 7.43.3
    1. Enhancement:
          Add support to run ump loop back test with random packet length and random mac address.
       Fix:
          Add -k and -r options to 'umplb' command to support random packet length and random mac address.
          -k will enable random packet length for each test packet.
          -r will use random mac address for each test packet.
          e.g.
          -r0 = random mac address.
          -r1 = random broadcast and multicast mac address
          -r2 = random unicast mac address.
 
version 7.43.2
    1. Enhancement :
          Enhance the engineering mode command "log <filename>" so that
          output is flushed often, so that if the system hangs a log
          file is still produced.
       Fix:
          Added the "-logfl" DOS command line startup option that enable
          frequent log file flushes (aka write do disk).

version 7.43
    1. Problem : (CQ# 11066)
          Shasta 12x12 device identification bug causes diagnostics
          to fail on nictest A5 and C7.
       Cause:
          Bug in device identification code added in v7.41 item 8.
       Fix:
          Added new device ID to device identification code.
version 7.42
    1. Enhancement : (CQ# 11045)
          Add a DOS command line option that will erase the data
          stored in the TPM NVRAM block and maintain the block
          directory entry.
       Fix:
          Added the "-ctpm" command option that erases the TPM data.
    2. Problem : 
          Shasta 12x12 device identification text was incorrect when
          added in v7.41 (item 8).
       Cause:
          Shasta 12x12 device identification text has been changed.
       Fix:
          Added support for the new text (names) for the devices.
    3. Problem : (CQ# 10988)
          Need diag command to update IPMI only if IPMI is present
       Cause:
          Need an option or a flag in the q57udiag command to update IPMI if and only if IPMI is already present.
          Currently, -pipmi will program IPMI code to all devices or all devices that are selected.
       Fix:
          Added -uipmi option switch to support IPMI firmware updata on devices that IPMI is already present.

version 7.41
    1. Problem : (CQ# 10905)
          Diagnostic fails the send/respond test when run on device 1
          and 2 and there is no link on device 0.
       Cause:
          Diagnostic incorrectly checks for link-up on all devices in
          the system.
       Fix:
          Modified diagnostic to check for link only devices being 
          tested.
    2. Problem : (CQ# 10888)
          The "dids" command BOND REV column values do not align
          correctly when a PXE version number is displayed.
       Cause:
          Diagnostic incorrectly aligns the BOND REV values.
       Fix:
          Modified diagnostic to correctly align the BOND REV value.
    3. Problem :
          When the help screen is displayed at the DOS command prompt
          some commands are not visible.
       Cause:
          The page breaks are set incorrectly.
       Fix:
          Modified/added page breaks so all diagnostic command's help 
          information can be seen when displayed at the command line.
    4. Problem :
          Immediately after starting diagnostics in the engineering mode
          when "memtest" is run the CPU GPR test is executed by default
          but on all following runs of "memtest" the CPU GPR test is
          not run and is disabled.
       Cause:
          During the execution of memtest the default setup is stored
          and all memory test are then enable and run; after the run
          the original memtest setup is restored but is done so
          incorrectly due to a typo in the code.
       Fix:
          Modified code so that now the restored values for memtest are
          the same as the defaults saved before running the test.
    5. Enhancement :  
          Started added skip on error functionality to engineering mode
          and manufacturing mode.
       Fix:
          Skip on error, skips the remaining part of the test when the
          test starts to fail.
          At present skip on error functionality present in the
          external loopback test.
          Skip on error functionality will be added to all test over
          time.
    6. Enhancement :  
          Added the "-fail2" DOS command line option that causes the 
          failed message to be offset from the present location by
          six characters (i.e. not aligned with pass messages). 
          This feature makes it easier to identify failures when 
          scanning through log file outputs.
       Fix:
          As specified above.
    7. Problem : (CQ# 10979)
          The cputest fails when the HOST cpu is throttled.
       Cause:
          The embedded cputest has a bug in the reset sequencing that
          is only visible when the host cpu is throttled.
       Fix:
          Modified reset sequencing order so it now works with host cpu
          throttling.
    8. Enhancement :  
          Added support for 12x12 mm Shasta devices.
       Fix:
          Added support for above.

version 7.40
    1. Problem : 
          Diagnostic would crash when the BIOS would not initialize the
          base address register (BAR).
       Cause:
          Diagnostic did not check to see if BIOS initialized the bar
          to a non-zero value.
       Fix:
          If diagnostic sees a device that has a zero BAR it will 
          ignore the device and present a message to the user noting
          the offending device.
    
    2. Enhancement :  
          Modify diagnostic so that engineering mode commands can be
          executed when there are NO Broadcom devices present.
       Fix:
          Added the command line startup option "-exe". When this flag
          is set any engineering mode diagnostic command will execute
          without a device present.
    3. Enhancement :  
          Improved error message when the cputest memory test fails.
       Fix:
          Now print out address, expected and read data.
          Initially on failure printed our address and expected.
          Version 1.9 or new is required for cpu.bin and cpu05.bin.

    4. Problem : (CQ10857)
          b57diag -firmall option requires 2 updates to get Checksum correct
       Cause:
          -firmall option will preserve the ASF CFG code from the NVRAM. 
          However the ASF CFG code offset of the NVRAM has been used, when preserving the ASF cfg block. 
          It causes the ASF CFG block being copied to a different location of the image buffer and damage the ASF 
          CPUB block which is below the ASF CFG block in the buffer.  
          This is the reason why ASF CFG and ASF CPUB failed the checksum check at the first 
          After the firmware being updated the first time, the ASF CFG code offsets of the NVRAM is the same as the buffer of the image. 
          In addition, a new checksum of the ASF CFG block has been re-calculated before updating the buffer and programming the NVRAM.  
          It cause ASF CFG checksum to pass.  
          However, even though the checksum is good, the content of the ASF CFG block is not.
       Fix:
          The whole issue is due to an incorrect code offset has been use. By selecting the right code offset, the issue has been resolved.

    5. Enhancement :  
          Add support for Shasta B1.
       Fix:
          As specified above.

version 7.39
    1. Problem : 
          When the "cpudiag" test is run mutliple time the floppy drive fails.
       Cause:
          In the diagnostis command prompt, command history code a index
          varible wrote in one location passed the allocated memory space.
          Allocate an array of size 20 and wrote to indexs 0-20 (i.e. 21)
       Fix:
          Now index goes from 0-20 and does not over-write other data.
    2. Problem : 
          When a "*.do" is executed the diagnostic error control value
          for the command prompt is not preserved but over written.
       Cause:
          Value not saved and restored in code.
       Fix:
          Code now save the command prompt error control value before
          executing the do script and restores it after.

    3. problem: (CQ10688)
    Diag allow IPMI enable on both ports of 5704
       Cause: 
        Diag did not check the current status of the IPMP enable setting before enabling IPMI firmware.
       Fix:
         Diag has been modified such that ASF/IPMI will not be enabled in both ports 
         of the dual ports devices. In case of no port is specified to enable ASF/IPMI, 
         Diag will enable ASF/IPMI in Primary port only.  In case of ASF/IPMI is enabled 
         in one port and user specified to enable ASF/IPMI in another port, Diag will 
         enable the specified port and disable the other port.

    4. problem: (CQ10689)
    Diag does not report error if features cannot be enabled.
      
       Fix:
         2 Error Level have been added.  In case of enabling PXE while there is no PXE present in NVRAM.  
         Diag will return ERR_MISS_PXE (160) Error Level.  In case of enabling ASF/IPMI while there is no 
         ASF/IPMI present in NVRAM.  Diag will return ERR_MISS_ASF (161) Error Level.  
         Diag will also has error messages print out on screen in both cases.

version 7.38
    1. Problem (CQ#10699): 
          System hangs when using -firmall feature of b57diag with a  bin file containing bootcode but no ASF.
       Cause:
          The issue is caused by a unbounded for loop which hangs the system
          This for loop is used for detecting if the input file for -firmall contain ASF firmware image.
       Fix:
          Keeping the for loop within boundary, system does not hang any more.

version 7.37 
    1. Problem : 
          When there are no devices in the system and diagnostic is 
          started up, diagnostics will hang.
       Cause:
          The ODI16 interrupt fix implemented between release 7.34 and
          7.35 did not check for the presence of a device before
          writing to the device which causes the hang.
       Fix:
          Only apply the above mentioned fix if a device is present.

    2. Problem: 
          The 5701 fiber fails nictest A1.
       Cause: 
          On the 5701 fiber the ASIC comes up with statistics enable.
          The ASIC updates the statistic in part of the chip while this
          test is trying to test the same part of the chip.
       Fix:
          Disable statistic gathering at the start of test A1 since
          the 5701 fiber comes up with statistics enabled.

    1. Enhancement (CQ#9395):  
           Modify b57diag to Allow Full NVRAM Configuration Without Requiring a 
           Card to be Installed
       Fix:
          New modified version of -meep command line option switch allows user to change the setting of the configuration of 
          the input bin file without requiring a card to be installed.  The input file can be a bootcode only file or a file that contains 
          mutiple firmwares. "-meep" will allow user to modify configuration of the primary port.  The configuration of the secondary port can also be modified 
          if the input file is for a dual port device.  Besides, user can also modify ASF/IMPI configuration of the input bin file if ASF/IPMI 
          firmware is detected in the file.

    2. Enhancement :  
           Modified -firmall to proserve secfg setting and asfcfg setting by default
       Fix:
          Also add -updatesecfg and -updateasfcfg to force secfg and asfcfg blocks to be updated with the input file for -firmall
          -updatesecfg will update the NVRAM with the Secfg setting in the input file.
          -updateasfcfg will update the NVRAM with the ASF Cfg setting in the input file.

    
 comes up with statistics enabled.

version 7.36 
    1. Problem : (CQ 10618) 
          -firmall will perform programming of the NVRAM even the NVRAM size is smaller than the file image size.
       Cause: per Duc Tran
          Diag did not check for NVRAM size vs the file image size.
       Fix:
          Added code to check NVRAM size VS file image size before program.  
          If NVRAM size is less than file image size, error code will be issued.
    1. Enhancement : 
           Improve ASF displayed error when the file is too big for 
           available NVRAM.
       Fix:
          Print out file to big, instead of invalid file.

version 7.35
    
    1. Problem : 
           VPD Test failed on 5704 when IPMI enabled.
       Cause: per Duc Tran
          When diag started, it will HALT the internal CPU.  Before running the VPDTEST, it will halt the internal 
          CPU and then proceed to download the "flshdiag.bin", and the kick-start the CPU to launch the "flshdiag.bin".  
          This "flasdiag.bin" is part of the b57diag vpd test component that runs inside the internal cpu that services VPD events.
          However when the b57diag supposed to halt the internal CPU, it only halts CPUA, and left the CPUB running.
          Furthermore, in the later IPMI PT firmware, there is a  WHILE loop that monitors the Expansion ROM and VPD event 
          bits was implemented in CPUB.  So when the b57diag started the VPDTEST, it load-n-starts the "flshdiag.bin" on CPUA, 
          while CPUB is continuously running, monitoring and servicing the VPD and Expansion ROM, 
          hence the conflict and leads to b57diag VPD test hung.

       Fix:
          Stop both CPUs before running vpdtest and also after GRC reset to avoid conflict with IPMI firware.


    2. Problem (CQ#10470): 
           Broadcom Manufacturing Diagnostics Hanging on Interrupt Tests.
           Step to reproduce:
           1. load ODI16 driver
           2. unload ODI16 driver
           3. load diag
           4. run interrupt test.
       Cause: 
          This issue can also be reproduce on 570x and without load and unload the ODI-16 driver: 
          in Diagnostic set BIT 9 of Miscellaneous Host Control Register (Reg 0x68) then run "intrtest"; system hangs. 
          On 570x, when issue a "reset" in Diagnostic, this bit gets cleared but for the PCI-E NICs it's still set. 
          Hence, causes the Interrupt to continuously to trigger because this bit is use to enable the Tag Status Mode 
          between the firmware and the driver. The reason for Bit 9 of reg 0x68 will not get clear in PCI-E device 
          is when implemented the ECO in A1, PCI-E block will not get reset to maintain hte link if there is a GRC reset.  
          Reg 0x68 is inside the PCI-E block.

       Fix:
          The ODI-16 driver clears BIT 9 when it's unloads.  Also, in diag, diag will clear Bit 9 of Reg 0x68 before enbale interrupt 
          and before running interrupt test.


    1. Enhancement (CQ# 9277): 
          Enhanced IRQ testing for 5705 and 575x devices.
       Fix:
          Details of the enhancement is provided in the CQ entry noted
          above. Basically bits 10 and 19 at PCI register offset 4 are 
          tested.

    2. Enhancement: 
           Diag did not show device which has IRQ greater than 15.
       Cause: 
          Diag skip devices which have IRQ greater than 15 to avoid user has access to these devices.
          Diag only support devices have IRQ less than 16. 
       Fix:
          Diag will issue warning to use if any device has invalid IRQ.


    3. Enhancement (CQ#10446):
          Extend the -firm option to update IPMI code also, in addition to update the boot code.
       Fix:
          Added -firmall option switch to download image which contain mutiple firmwares to NVRAM.  Diag will match  
          sid, vid, ssid and svid of the image to the those in NVRAM before updating NVRAM.  Diag will only preserve
          the Mac address.



version 7.34
    1. Problem (CQ#10409): 
           B57diag lock-up on OEM system when programming ASF.
       Cause: 
          The issue is due to a variable pointer not getting correctly initialized.
       Fix:
          After initialized the variable pointer, issue has been resolved.

    1. Enhancement (CQ10397):
          Need way to disable IPMI on Broadcom devices for LSO Functionality
       Fix:
      Added "setipmi" command in diag manufacturing mode and "-ipmi" as a command line option switch to enable or disable the IPMI firmware.
          It works the same way as "setasf" and "-asf" for ASF firmware.


    2. Enhancement (CQ10041):
          Add support for Capactive Coupling. The diagnostic software needs to support a new hardware configuration called Capactive Coupling (CC). 
          This feature is enabled/disabled using a new bit in the EEPROM, This bit is also exported by the bootcode to applications running on the 
          host processort using shared memory.

       Fix:
      Diag has added Capacitive Coupling feature support.  This support is added in "secfg" and "secfg4" commands in diag engineering mode.
          In manufacturing mode, "-geneep" option switch also have this support.

version 7.33
    
    1. Problem (CQ #10323): 
           When attempting to enable Wake On LAN via the b57diag utility with the -b57eng parameter, 
           using the setwol -e command, getting the following warning: "Boot Firmware version 2.6 or later 
           is required to support this command"

       Cause: 
          Diag uses the same function to enable and disable pxe, asf and wol.  
          This function will detect if pxe and asf code are loaded before changing the setting of pxe, 
          asf AND wol, even wol has nothing to do with bootcode version. In order to detect the present of 
          pxe and asf, the bootcode must be 2.6 and later.  Since it is using the same funciton, the same boot code 
          requirement will apply when changing wol setting.  In fact changing WOL setting does NOT require boot code 
          2.6 and later.  

       Fix:
          Diag has been modified to resolve this issue.  Diag will not check the present of 
          firmwares when changing the WOL setting.

    2. Problem (CQ #10256): 
           B57diag "write" Command Fails When Using "m" Address Modifier
       Cause: 
      "m" address modifier in "Write" Command has never been implemented.  
          In order to read from and write to mii registers, "mread" and "mwrite" will normally be used.
       Fix:
          Added code to support "m" address modifier in "write" command.


    1. Enhancement (CQ #10306): 
          Customer requests to have an option to invoke 'cpufetch' test from the command line in Manufacturing mode.  

       Fix:
          Added 'cpufetch' test to nictest (C8) and set the default to disable. 

    2. Enhancement:
          Enabled dword access on non-dword boundaries for Shasta B0
          and newer during the Expansion ROM test (romtest or test C7).
       Fix:
          Modified diagnostic to do the above.
          Shasta based devices now uses flshdg5x.bin as the image
          file for diagnostics ROM test and VPD test.
          With diagnostic v7.33 flshdg5x.bin version 2.3 or newer
          has to be used or a failure will be seen.
 
    3. Enhancement (CQ #10207):
          Need user diag feature to update IPMI the same as updating PXE.
          IPMI update will only be allowed when the NVRAM already contains IPMI.
       Fix:
          Added "-pipmi" to program ipmi firmware.  It works the same way as -pxe.

version 7.32

    1. Enhancement:
          Added support for the 5751F and 5789 Shasta variants.

    2. Problem (CQ# 10179, 10166):
          Diag will attempt to load ASF FW into insufficient EEPROM space
       Cause:
          Diag did not check for free NVRAM memory before load firmware to NVRAM from file.
       Fix:
          Check free NVRAM memory space before programming ASF firmware to avoid this issue.

    3. Problem:(CQ: 10099)
          b57diag secfg menu PXE enable option is not clear.
          The b57diag secfg menu item for enable/disable PXE is 
          not clear for applications that have the PXE code in the system ROM.
       Fix:
          Added "does not apply to PXE in system ROM" text to the following items in the secfg manual.
          Item 8.  pxe
          Item 29. Expansion ROM size

version 7.31
    1. Problem:
          5751M not supported by diagnostic.
       Cause:
          5751M WAS not supported due to lack of test systems.
          SQA now has 5751M based systems for testing.
       Fix:
          5751M supported added back into diagnostic.
    2. Problem (CQ# 9249):
          When executing the send/respond test via:
          b57diag -rf 0 -c 1 -t abcd -T d3
          with two cards in the same system the test sometimes failed.
       Cause:
          There is a race condition that occurs in the interrupt 
          handler with chained interrupts.
       Fix:
          Modified diagnostic to avoid the race condition.

    3. Problem:(CQ: 10099)
          b57diag secfg menu PXE enable option is not clear.
          The b57diag secfg menu item for enable/disable PXE is 
          not clear for applications that have the PXE code in the system ROM.
       Fix:
          Added "does not apply to PXE in system ROM" text to the following items in the secfg manual.
          Item 8.  pxe 
          Item 9.  pxe link speed
          Item 26. MBA Boot Protocol 
          Item 27. MBA Bootstrap Type
          Item 28. MBA Delay Time
          Item 29. Expansion ROM size
          Item 39. Hide MBA Setup Prompt
          Item 40. MBA Setup Hot Key
version 7.30
    1. Problem (CQ #10025): 
          The 5701 fiber fails the cputest.
       Cause: 
          In version 1.3 of cpu.bin the memory testing was expanded.
          On the 5701 fiber the ASIC comes up with statistics enable.
          The ASIC updates the statistic part of memory while the 
          memory testing is going on.
       Fix:
          Disable statistic gathering at the start of the cputest since
          the 5701 fiber comes up with statistics enabled.

    2. Problem (CQ #10006): 
          Upgrade bootcode cause TPM broadsafe to change.  This has not been fully fixed in V7.29.
       Cause: 
          The block size of the TPM block registered in the NVRAM directory is in byte count, 
          while other firmware sizes registered in NVRAM directory are in word count.  
          diag has got incorrect free NVRAM space and offset when try to program or update firmwares.  
          As a result some firmware may get corrected when updating firmware.  

       Fix:
          The TPM block is always located on the upper part of the NVRAM address. Diag is using the MAX NVRAM Size to calculate
          the block offset and free space in the NVAM.  When diag has detected the present of the TPM block, 
          it will reduct the MAX NVRAM Sizee from 128K to the starting address of the TPM block.  This way diag does not need 
          to due with the fact that the block size of the TPM black is registered in byte in the NVRAM directory.  

version 7.29
    1. Problem (CQ #10006): 
          Upgrade bootcode cause TPM broadsafe to change.
       Cause: 
      When diag updating or adding firmware to NVRAM, diag will move the firmware in NVRAM around in order
          to gain more space. Since TMP block is located in the top part of the NVRAM. Once diag try to update 
          the bootcode, TPM block will be moved to another location.
       Fix:
          Modified firmware programming tools in diag, such that TPM block will not be moved when programming or updating firmwares.
          Only "-f" option switch and command seprg will erase TPM block automatically.

          The following commands and option switches have been modified.
          erase
          sechk
          semap
          upgfrm -b
          upgfrm -p
          pxeprg
          asfprg
          seprg -a 
          -firm
          -pxe
          -ppxe
          -pasf
          
version 7.28
    1. Problem (CQ #9901): 
          Access to register 0x4c during register testing fails.
          This issue is Shasta specific.
       Cause: 
          A IC issue exists which has a work around for revision A3
          and newer.
       Fix:
          Inserted code that avoids the problem by enabling the fix by
          writing 0x300 to 0x7e2c.
          Also after register 0x4c is accessed a delay of 10us seconds
          is added before any other action is preformed.
    2. Problem:
          The "-mfct" option can fail.
       Cause: 
          If a user enters something other than the SSID and SVID
          in the input text file the CRC will be incorrect.
       Fix:
          Modified code so options other than the SSID and SVID are
          ignored when entered in the input text file.
    
    3. Problem (CQ #9984): 
          5704s EEPROM GPIO/WP issue, not able to write to NVRAM after single MAC enablement
       Cause: 
          This is due to Set GPIO funtion does not setup GPIO setting correctly.
       Fix:
          Modified Set GPIO function to correct the issue.

version 7.27
    1. Problem (CQ #9955):
          5751M part are supported by diagnostic and they should 
          not be.
       Cause: 
          Since SQA does not have any system with the 5751M part
          no SQA testing has been done on this part.
       Fix:
          Remove support for the M parts from diagnostic.
    2. Problem:
          Bond ID test fails on 5721 A3.
       Cause: 
          Code not programmed to recognize the above chip and rev.
       Fix:
          Modified code to recognize above chip and rev.
    3 Problem:
          Shasta B0 fails PCI config reg test and Expansion ROM Test
      Cause:
          Register 0x4c access during PCI register test is problematic.
          The "Expansion ROM Test" firmware has a bug, when accessing
          non-dword boundaries, which will be fix on the next
          diagnostic release.
       Fix:
          By-passed the above failing testing on revision B0.        
    4 Problem (CQ #9952):
          b57udiag support the -e option and should not.
      Cause:
          The -e option is not IFDEFed out for b57udiag in the code.
       Fix:
          Remove (IFDEFed out) the -e option for b57udiag.        

version 7.26
    1. Problem (CQ# 8989):
          Incorrect voltage values for A1 Shasta chips are produced
          during nictest B7 (CPU GPR Test)
       Cause:
          Voltage characterization data for A0 and A1 is different.
       Fix:
          Added code to setup voltages based on chip revision.
    2 Problem:
          Shasta A3 fails PCI config reg test and Expansion ROM Test
      Cause:
          Shasta A3 did not address the following issues:
          - Register 0x4c access during PCI register test (power reg)
          - Non-dword boundary access during "Expansion ROM Test".
       Fix:
          By-passed the above failing testing on revision A3.        
    3. Enhancement:
          Customer requests a quiet mode of operation for the "-firm"
          command.
       Fix:
          Added the "-sil" command to disable warning messages when
          the "-firm" command is used.
    4. Enhancement:
          Customer requests a new command to only program the SSID and
          SVID in the NVRAM (the CRC also gets updated).
       Fix:
          Added the "-mfct <filename>" command to accomplish the above.
          The file <filename> contains text strings describing the new
          SSID and SVID. The format for <filename> is specified in the 
          diagnostics user manual "EEPROM.TXT FORMAT" section.

version 7.25
    1. Problem :
          B4. Memory test takes 4 min longer to complete.
       Cause:
          Due to the debug code that was added delay the memory read process.
       Fixed:
          After cleaning up debug code, test time reduced to normal.

version 7.24
    1. Problem (CQ# 9281):
          When the "mdev" command is used to change the PHY's MII
          address in order to access SERDES (where available) and then
          the chip is reset via "reset" an error message is produced
          and the PHY is not reset.
       Cause:
          The "reset" routine uses the MII address to reset the PHY and
          when a user changes this address the reset routine can not 
          access the PHY and produces an error.
       Fixed:
          Since our PHY address is fixed, modified the code so that 
          the "mdev" command does not change this PHY address. Also
          modified the "mread" and "mwrite" user commands to access
          the device specified by the "mdev" variable.

     2. Problem (CQ# 9281):
          BCM95701A10 A3 FW:2.2 & FW: 2.04 Fails Diag PHY LoopBack 
       Cause:
          Phy type detection function returned incorrect phy type and as a result 
          failed the link test.
       Fixed:
          Modified Phy type detection function to return correct phy type.
          The issue has been resolved.
    
    3. Request (CQ# 9249):
          Create a same system Send/Response test.
       Fixed:
          Test D3 run against a reference card is the send/response
          test.
          - added the "-rf" option to identify a reference card
          - modified the "-lbspd" option so that the line speed of 
            reference card can be set during test d3 
          Documentation on using this feature was added the manual.
          Basic Usage: "b57diag -rf 0 -c 1 -t abcd -T d3"
    
    4. Request (CQ# 678):
          Add 5721 support to Qdiag
       Fixed:
          Added Shasta support to Qdiag.

    
    5. Enhancements
          Added the "-addref" option to append a reference to the
          refinfo.txt file.
          Added the "-blink" option to blink the LED of a specified
          device.

version 7.23
    1. Request:
           Add command to create a TPM directory in NVRAM.
       Fixed:
           Coded above request (created the "tpm" command).
    2. Problem: 
          "seprg" cmd cannot program IMPI ASF firmware.
       Cause:
           Diag function that detect the device type is not reliable.  As a result it fails the chip type check 
           when programming the firmware.
       Fixed:
           Modified the check device type function such that it can accurately detect the device type.

version 7.22
    1. Problem: 
          Voltages not set correctly for Shasta during test B7.
       Cause:
           Code for setting voltages is different for Shasta than the
           code that previous 57xx family of chips.
       Fixed:
           Modified code to setup required 1.1, 1.2 & 1.3 volts based
           on data gathered during chip characterization.

    1. Problem (CQ# 9580): 
          Invalid bond id on 5721A1
       Cause:
           ASIC Rev ID for 5721A1 has been added to diag, as a result, it failed bond id test.
       Fixed:
           Added 5721A1 support to diag.

version 7.21
    1. Problem: 
          The "asfprg" command fails in b57diag v7.20 with an "ASF firmware version
          error" and if you "Continue" or "Abort", then b57diag crashes out with a
          PMODE/W Exception.
          The same firmware binaries can be programmed just fine with b57diag v7.19 or
          earlier. I started seeing this problem after rev 116 of t3_asf.c, so you may
          want to double-check your changes.
       Cause:
           Invalid structure pointer had been passed to funtion and cause software to crash.
       Fixed:
           Instead of passing structure pointer, local Variable has been use.

    2. Program:
           -mf option switch cannot handle large file size.
       Cause:
           Diag is using a 16K byte size buffer to store the data from the input file.
           As a result, data get corrupted.
       Fixed:
           Enable buffer size up to 128K to handle input file with large size.

    1. Request:
           When diagcfg option is used to specify the test to be run
           do not revert back to the default tests after one run when
           using the nictest command.
       Fixed:
           Coded above request.

    2. Request:
           Reverse Shared Traffic Mode and Shasta Mac mode parameter of Item 21 (LED MODE) in secfg menu according to Shasta spec.
           User used to enter 3 to select Shared Traffic Mode and 4 to select Shasta Mac mode.
           Start from Diag version 7.21, user will need to enter 4 to select Shared Traffic Mode and 3 to select Shasta Mac mode.
          
          
version 7.20
    1. Request:
           Enable the -rsttm option for all PCI-E devices (not only A0).
       Fixed:
           Coded above request.
    2. Request:
           Modify reset for PCI-E Shasta devices POST A0.
           Used to be 6804<=1, now 6804<=20000000, then 6804<=20000001
      Fixed:
           Coded above request.
    3. Request:
           Disabled testing of register 0x4c during the PCICfg rg test
           for Shasta A1 (used to be only A0).
           A OEM system fails the PCICfg rg test with this enable.
           OEM is fine (looks like a OEM BIOS issue).
      Fixed:
           Coded above request.
    4. Request:
           Improve the memory test done during the cputest (test C2).
           Include walking 1's/0's and incrementing data.
      Fixed:
           Coded above request.

    5. Request:
           Added asf combined firmware programming via "seprg -a" command and "-pasf" option switch.
       Fixed:
           Coded above request. 

    6. Request: (CQ# 9421)
           b57diag: Need to add an additional test which will test CPU instruction fetch logic
       Fixed:
           Coded above request. 
    
    

version 7.19
    1. Problem: (CQ# 9419)
           NVRAM corruption when enabling ASF via b57diag.
           User got error message: ROM LOADER Failed With ffffffff.data =100000
           A reset of the fash is required to get out of thes state  

       Cause:
           When asf is enabled, diag will issue a GRC reset to put asf running in a loop and will not interrupt diag activities.
           The issue memtioned above is due to the 500ms delay after GRC reset has been skipped. 
           This 500 ms delay is need only if it is a PCIE device.  
           Normally diag will detect if this is a PCIE device. 
           However, in this particular case, the detection came in after the GRC reset.  
           As a result, the 500ms had been skipped.  
       Fixed:
           The fix is move the detection before GRC reset.

    1. Request:
           Expanded expansion ROM test for PCI-E devices.
           Access dwords on byte and word boundaries.
      Fixed:
           Coded above request.
    
   2. Request:
           Expanded reset sequence to support Shasta post A0.
           Change the write to GRC register 6804 to a read/modify/write.
      Fixed:
           Coded above request.

    

version 7.18
    1. Problem: (CQ# 9221)
           Cannot upgarde ASF 1.0 with 7.15 Diag. 
           Diag v7.15 when trying to upgrade gives the following message 
           when user upgrades ASF1.0 firmware to v2.04 (for 5702-5704) and v5.05 (for 5705): 
           "Please use B57diag v7.12 or earlier to program ASF v2.01-v5.x.  Abort?"
       Cause:
           The old diag code structure only support the lastest ASF platform (ASF 2.0).
       Fixed:
           Modified diag to support both ASF 1.0 and ASF 2.0 platform.
    2. Problem: 
           During Shasta A1 emulation found that diagnostics made access to
           registers that are invalid for the 5705 and Shasta which caused
           a number of emulation errors.
       Cause:
           When an invalid register is accessed the IC goes through a
           timeout period. Because emulation is slow the time out period
           is long and the following chip accesses return with invalid
           data.
       Fixed:
           Eliminated access to invalid registers in the code.

    New Addition: 
    ========
    1. Request:(CQ#9076)
           Add ability to script secfg commands
      Fixed:
           Added 4 more engineering mode commands (secfg1, secfg2, secfg3, secfg4) to the diag.
           Each command will take care 10 secfg fields.
           Each command will have 10 parameters for user to input.
           Users can write their own scrip to program all secfg fields.

           The example below will program the mac address and the vendor id.
           0:> secfg1 -m=00:10:18:12:34:56 -v=14e4

           

version 7.17
    1. Problem: (CQ# 9252)
           The "-rsttm " option does not work in b57udiag. 
       Cause:
           The "-rsttm " option was not include in the udiag #ifdef.
       Fixed:
           Add the "-rsttm " into the udiag #ifdef statement.
    2. Problem: 
           The romtest was failing on Shasta A1 emulation. 
       Cause:
           There was a timing emulation issue caused by either a faster
           host CPU or slower emulation embedded cpu (note we have new
           emulation machines that were not used on A0).
       Fixed:
           Add a delay when running during emulation mode and also fixed
           a printf bug in the error printing routine.
    3. Problem: 
           The cputest was failing on Shasta A1 emulation on a PCI E bus. 
       Cause:
           On a PCI E bus the emulation environment can not be run with 
           a GRC reset so the GRC reset is disable via the "rsttm 0" option.
           The problem is that the  code following the GRC reset waits for 
           a hand shake from IC before proceeding and this code will produce
           an error because the hand shaking only occurs when the GRC reset
           is executed.
       Fixed:
           When the "rsttm 0" option is specified make sure that the 
           diagnostic code does not wait for handshaking from the IC.
    4. Problem: 
           The blast commands failed on Shasta A1 emulation on a PCI E bus. 
       Cause:
           For PCI E emulation environment the PCI-PCIE bridge chip did not 
           operate correctly when read DMA optimization is enable.
       Fixed:
           During emulation do not enable read DMA optimization.
    5. Request:
           Remove the "-shasta" option and use "-rsttm 500" as the default
           for the "-rsttm ..." option.
      Fixed:
           Coded above request.
    

version 7.16
    1. Problem: (CQ# 9146)
           RX DMA error text swaps the expected and got (observed) value. 
       Cause:
           Same printf is used for Tx and Rx errors where source and
           destination are switched.
       Fixed:
           Added a printf for RX DMA error so that the expected and got
           values are not swapped.
    
    2. Added new support for Shasta LED modes
  
       Problem:
           Wireless combo mode was not supported
      
       Enhancement:
           New mode; Wireless combo mode, Shasta Mac mode, and Mac mode were added
    
       Node:
           Chip revision A0 has problem with wireless mode, should be fixed in A1.  
      
    3. Problem: 
           Target write accesses to Shasta didn't always seem to work correctly 
          (i.e. that the certain register write operations sometimes failed in that we read back a different value than the one that we just wrote).  
          This led to a variety of down-stream failures.  
       Cause:
           This is a classified as HW issue.  Workaround has been issue and added to Diag.
       Fixed:
           If the chip is running in PCI-E mode and it is A0 step chip, apply workaround.  The workaround is issue a read after a write to target.
          
    4. Problem: (CQ# 9165)
           b57udiag: Cannot upgrade firmware on specific adapter using "b57udiag -c 1 -firm a:\ee5702c2.28" from command line.
       Cause:
           -c command line option is not implemented to work with -firm command line option.
       Fixed:
           Added -c command line option to work with -firm command line option.  User can specify card to be updated.
 
    5. Problem: 
           Diag is not able to program ASF+IPMI firmware.
       Cause:
           Diag is not aware of ASF+IPMI firmware. Diag will take ASF+IPMI firmware as basic ASF firmware and failed config table check. 
       Fixed:
           Added support to ASF+IPMI firmware and config table check.


version 7.15
    1. Problem: 
           Diag fail A5 PCI Reg Test. 
       Cause:
           This is a classified as HW issue.  Workaround has been issue and added to Diag.
       Fixed:
           If the chip is running in PCI-E mode and it is A0 step chip, apply workaround.  The workaround is to skip test PCI Reg offset 0x4c 
          (PCI_PM_STATUS_CTRL_REG).

    2.  Updated 2003 labels to 2004.

versjon 7.14
    1. Request:
           Added a new test to perform Sequential register and memory writes and reads.
      Fixed:
           Added a "wseq" command in engineering mode in Diag.  This test will cover Mac Registers, Mail Box Registers
           and internal memory.
            
           A.  Sequential Register Write and Read Test.
               Selected Register for read write: 0x414, 0x41c, 0x424 and 0x42c
               Data Pattern: Increment.
               Iteration (loop count): 0x2000

           B.  Sequential Mail Box Register Write and Read Test.
               Selected Mail Box Register for read write: 0x200, 0x268, 0x280, 0x300 and 0x380
               Data Pattern: Increment.
               Iteration (loop count): 0x2000

           C. Sequential Memory Write and Read Test.
               Selected Internal Memory for read write: 0x8000 to 0x8020
               Data Pattern: Increment.
               Iteration (loop count): 0x2000


version 7.13.2
    1. Problem: (CQ#9088)
           Diag doesn't recognize 5721 LOM when upgrading firmware and issue device type unmatch error message.

       Cause:
           Diag does not recognize 5720/5721 bootcode image is due to 5720/5721 device id is not in the boot 
           code look up table.  

       Fixed:
           Once these 2 device id added to the boot code look up table the issue has been resolved.

version 7.13.1
    1. Request:
           On a Shasta PCI Express system allow the reset to take a variable 
           amount of time (not fixed as in -rsttm) based on receiving a
           correct value by polling a know register after the reset.
      Fixed:
            Added a "-rstpl <x> <y>" command option.
            <x> is time in ms
            <y> is loop count
            Before a GRC reset note the DEVID, then after a GRC reset, wait
            the time specified via "-rsttm <u>", then loop checking for the
            present DEVID to equal the pre-reset DEVID. Loop for <y> time
            before timing out and wait for <x> ms after each check and 
            before the loop.
            Use the newly added "-rstpld" options to display the number of
            times the DEVID is polled before a match was found.
     
version 7.12.5
    1. Problem:
           When program 5703A3 NIC with boot code version 2.36, diag issue chip family type mismatched with boot code image. 
      Cause:
           Since the latest boot code is using a new device id (0x16C7) and diag is not aware that new device id has been use.
           As a result, diag issue family type mismatch error message.

      Fixed:
           Diag will allow boot code with new device id be programmed.
      
version 7.12.4
    New Addition: 
    ========
    1. Request:(CQ#8983)
           Need support added in B57DIAG for Atmel 512k Flash.     
           Current DOS diagnostic does not support Atmel 512k Flash. Need support added to test new flash device supprt.
      Fixed:
           Atmel 512Kb Flash support has been added to b57diag V7.13.
           It requires bootcode v3.03 and above to work right.  
           VPD test will be skipped due to test firmware not supporting 512Kb Flash.  
           NVRAM test will take a while to complete due to the nature of non-buffered 
           flash and the fact that diag write one data at a time during the test.  
           Diag can read, write data to flash and program bootcode via "seread", 
           "sewrite", "seprg" and "upgfrm" cmds.  All 512Kb flash access has been done in auto mode.  

    2. Request:
           Skip NvRAM test and VPD write test from b57diag.pde (PC-doctor).
      Cause:
           Running b57diag.pde from PC-Doctor shell program multiple times will 
           cause NVRAM test and VPD write test running multiple times as well.
           As a result, it will shorten the life of the nvram.

      Fixed:
           Skip NvRAM test and VPD write test from b57diag.pde (PC-doctor). 

    3. Enhencement:
           Added ASF 2.0 support.

version 7.12.3
   1. Problem: (CQ# 9048)
           NC7722 to NC1020 product string conversion.
      Fixed:
           Renamed NC 7722 label to NC 1020.
           Renamed Software Manu name from NC67xx-NC77XX to NC10xx/NC67xx-NC77XX.
           

    2. Request:
           Skip NvRAM test and VPD write test from b57diag.pde (PC-doctor).
      Cause:
           Running b57diag.pde from PC-Doctor shell program multiple times will 
           cause NVRAM test and VPD write test running multiple times as well.
           As a result, it will shorten the life of the nvram.

      Fixed:
           Skip NvRAM test and VPD write test from b57diag.pde (PC-doctor).
      
version 7.12.02
    Bug Fix: 
    ========
    1. Problem: 
           For PCI register 0x4c00 has to be 0x3fe according to question
           15 in "Shasta Software Migration QA V1.0.doc".
       Cause:
           Code was initially coded incorrect and no side effects were
           seen but Peter Yang wanted the change.
       Fix: 
           Did not set BIT_10 of register 0x4c00.
       Impact:
           As described above.

version 7.12.01
    Bug Fix: 
    ========
    1. Problem: (CQ 9019 & 9020)
           The PCI type and speed for PCI Express Shasta displayed
           incorrectly.
       Cause:
           PCI Express identification code did not return after the 
           identification was done which caused the following to 
           incorrectly identify the device.
       Fix: 
           Added return after PCI Express identification code .
       Impact:
           As described above.

version 7.11.04
    Bug Fix: 
    ========
    1. Problem: (CQ 8988)
           The PCI type and speed for PCI Express Shasta displayed
           incorrectly.
       Cause:
           PCI Express identification was not code in the display routine.
       Fix: 
           Added code to display routines for PCI Express.
       Impact:
           As described above.

    2. Problem:
           The log file generate when the cpu test is run had a line greater
           than 80 characters and was messy, due to the newly added 
           "cpu reset" message.
       Cause:
           Stated above.
       Fix: 
           Display "cpu reset" message on screen but do not include it
           in the log file.
       Impact:
           As described above.

    3. Fix: 
           Removed fix #3 of release 7.11.
           Customer fixed their issue with a BIOS fix.
       Impact:
           As described above.


version 7.11.01
    Bug Fix: 
    ========
    1. Problem: (CQ 8969)
           B57DIAG allows upgrading 5750 with other adapter's bootcode with "upgfrm" cmd
       Cause:
           Command "upgfrm" was defaulted to skip Device ID checking, such that diag will allow other adapter's
           boot code image to be programmed to 5750 card.

       Fix: 
           The new code will not skip the Device ID check.  Device ID check will be performed to avoid programming boot code to mismached devices.
       Impact:
           As described above.


version 7.11
    New Addition: 
    ========
    1. Enhencement:
           Added changes to make sure that diag will download the correct bin files, such as flash.bin, cpu.bin and cpu05.bin, when doing tests.
           b57diag will display bin file versions when loading. New bin files also modified to support version string. 
           Those new files are included in this release.  
    
    2. Problem: 
           b57udiag did not accept -shasta option switch.
       
       Cause:
           -shasta was not enabled in any udiag.

       Fix: 
           Enabled -shasta option switch in udiag to support shasta chips.

       Impact:
           As described above.

    3. Problem: 
           5751M fails the configuration register test sometimes.
           The failure was noticed at OEM.
       Cause:
           Access to 0x4c during the test runs into a H/W bug (CQ#8856),
           that causes the test to fail.
       Fix: 
           For 5751M A0 like devices, disabled testing this register.
       Impact:
           As described above.


version 7.10.02
    Bug Fix: 
    ========
    1. Problem: (CQ 8932)
           phyctrl command not setting speed/duplex settings correctly
       Cause:
           The issue is due to incorrect bits in MII offset 0x00 defined in diag.
       Fix: 
           Correction has been made to the diag code.
           Was:
           Auto Neg Enbled = Bit 9.
           Speed Selection MSB = Bit 13
           Speed Selection LSB = Bit 6

           Should be:
           Auto Neg Enbled = Bit 12.
           Speed Selection MSB = Bit 6
           Speed Selection LSB = Bit 13
       
       Impact:
           As described above.

version 7.10.01
    Bug Fix: 
    ========
    1. Problem: (CQ 8926)
           Cannot update NVRAM image w/ b57diag when ASF is enabled. User getting NVRAM image not matching with
           chip type error.
       
       Cause:
           When ASF code is enabled, it will block diag to access Phy MII registers.
           Without the access to PHY MII Register,  diag will see the phy as a fiber phy running in TBI mode.
           As a result, diag will think the bin file for copper phy does not match with the phy type of the chip 
           and issue an error.

       Fix: 
           If ASF is enabled, Diag will put ASF running in a loop before diag getting the type of the Phy by writing
           DEVICE_RESET_MAGIC to offset 0xb50 and 0 to the last_driver_state of the NIC_SHARED_DATA in SRAM.  
           This way, ASF code will not block the Phy access and diag will not see the copper phy as fibler phy.
       
       Impact:
           As described above.

version 7.10
    Bug Fix:
    ========
    1. Problem: 
           Diagnostic will not run from a CD ROM.
       Cause:
           At startup the DIAGCFG.BIN file is automatically rewritten.
       Fix: 
           At startup do not re-write the DIAGCFG.BIN file.
           A user HAS to use the "diagcfg" command to write the file.
       Impact:
           As described above.

version 7.09.02/03
    Bug Fix:
    ========
    1. Problem: 
           Diagnostic does not recognize 5750M, 5751M, 5721, 5720.
       Cause:
           Above device IDs not in code.   
       Fix: 
           Above device IDs added to code.
       Impact:
           As described above.

    2. Problem: 
         User try to program flash/eeprom via the command listed below get error message.
         "b57diag -c 0 -e b57kia -f ee5751c3.03a -shasta"
         "Error #67 Invalid Magic Value"
         "Warning:  NVRAM content corrupted.  Reprogramming NVRAM and Mac Addr may correct this problem."
 
       Cause:
         Before diag program the flash, it will check to see if the flash is blank or corrupted.
         It case of the flash is blank or corrupted and user is not going to program both flash and mac 
         address, diag will give out the error messages listed above. 
         "b57diag -c 0 -e b57kia -f ee5751c3.03a -shasta" is only asked diag to program the flash only.  
         Therefore diag issue error message.
       
    3. Problem: 
         Current diag will only accept -f and -m options when user try to program both flash and mac for 
         a blank or corrupted flash.
         If user use other options such as -mac and -fmac along with -f option to program the blank flash
         It will so get error messages same as those listed in problem #1
 
       Fixed:
         Diag v7.09.3 and above will also let user to use -mac and -fmac along with -f option to program
         blank and corrupted flash.

    4. Problem: 
         When user update mac address via mac address text file for the 2nd time, user may get 
         "In valid mac address" error message.
 
       Cause:
         When user update mac address via mac address text file, the mac address text file will be updated
         with a new mac start address.  However, there is an issue that the mac address fiel is not updated
         correctly due to data conversion within diag.
 
       Fixed:
         Diag will check the data before updating the mac address text file.

version 7.09
    New Addition: 
    ========
    1. Request: (CQ 8832)
           the 'rxcfg' and 'txcfg' commands in the diag allow the user to 
           specify receiver and transmit parameters/properties for various 
           testing, but they are both interactive; i.e., user has to select 
           an option and flag, then exit.

           for automation/scripting purposes, we'd like to have the 
           capability to set the parameters at the diag command prompt; 
           i.e., for example, instead of having to enter 'txcfg, then 
           enter '12=1' (to enable ip checksum offload), then enter '0' 
           (to exit), we'd like to have the option to just set this option 
           at the command prompt like this: 'txcfg 12=1'.


       Enhencement:
           2 option switches (-txcfg & -rxcfg) have been added.  User can set
           receive and transmit parameters/properties for various testing via command
           line.  user can enter these options multiple times to set different parameters.

           eg: b57diag -b57eng -txcfg 12=1 -txcfg 1=00:11:22:33:44:55 -rxcfg 5=1518 -rxcfg 1=1
           
           The parameter format for both options is item=data. No space needed.  User will
           enter the parameter in the same format as they will enter when running the command "txcfg" 
           and "rxcfg" in engineering mode with a minor exception.
           
           In case of rxcfg option, if user want to set RX Mask (item 11), user need to enter 
           the data in HEX. Below is how to construct the data.
           
           data = LM_ACCEPT_UNICAST | LM_ACCEPT_MULTICAST | LM_ACCEPT_ALL_MULTICAST | LM_ACCEPT_BROADCAST | 
                  LM_ACCEPT_ERROR_PACKET | LM_PROMISCUOUS_MODE
            
           LM_ACCEPT_UNICAST               Bit 0
           LM_ACCEPT_MULTICAST             Bit 1
           LM_ACCEPT_ALL_MULTICAST         Bit 2
           LM_ACCEPT_BROADCAST             Bit 3
           LM_ACCEPT_ERROR_PACKET          Bit 4
           LM_PROMISCUOUS_MODE             Bit 16  
   
           eg: b57diag -b57eng -rxcfg 11=1001E    (Enabled all except LM_ACCEPT_UNICAST)

             
           In addition to these 2 option switches, both commands (txcfg and rxcfg) in engineering mode 
           have also been modified.  In engineering mode, user can enter the follow to enable ip checksum offload.

           0:>txcfg 12=1
           
           It will be more useful in automation/scripting purposes.

    2. Request: (CQ 8831)
           Need test to do looping of reset test to screen intermittent chip errors at users discretion.
       Enhencement:
           From command line, "-cpurstlp" option switch has been added.  It will set the limit how 
           many times boot test within cpu test will perform.
           "boot test" will reset the chip and wait for the completion of bootcode loading. 
            eg: b57diag -cpurstlp 10 (It will running boot test 10 times as part of the cpu test)
 
           Form engineering mode, user is able to do the same with the following command.
           0:>cputest -r10

   3.  Request: (CQ 8818)
           Please enhance secfg so that the "Shared Traffic/Link LED Mode" 
           can be easily set using secfg.  OEM is going to use this mode.

       Enhencement:
           In secfg, Shared Traffic/Link LED Mode option has been added under
           LED Mode (item 21).
 
version 7.08
    Bug Fix:
    ========
    1. Problem: 
           Q57diag was setup to program and test multiple 5705 cards using hot swap.
           Q57diag hung after testing a few cards.
       Cause:
           Before Q57diag writing the new boot code + PXE image to NVRAM, it allocated a 128KB buffer to store
           the image for it to check the image version.  
           Q57diag did not free this buffer at the end of the process.
           Eventually, system hung up.   
       Fix: 
           Free the buffer after writing to NVRAM.
       Impact:
           As described above.

    New Addition: 
    ========
    1. Problem: 
           When CPU test (test C2) fails it displays "CPU test failed" only.
       Enhencement:
           1. Changed cpu.bin/cpu05.bin to encode the error
           2. Changed b57diag to decode the error message to text format.

       New possible error messages:
           1. %cx CPU failed on %s bit access to address %08X
           2. %cx CPU failed on memory pattern %08X at address %08X
           3. %cx CPU Instruction test failed

       Impact:
           This requires new cpu.bin/cpu05.bin firmware 

    2. Request: 
        Added follow Shasta PCI Express support
        - added bond ID's for 5751M, 5750M, 5720, 5721
        - RDMA, WDMA optimization
        - fix bond id failure
        - fix pci cfg register test failures
        - added fix for PCI Express 1.0 link issue
       Fix: 
        - added support indicated above

        
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

    Bug Fix:
    ========
    1. Problem:
           Shasta failed bond ID test and loopback test.
       Cause:
           The ICs bond ID was different than what was in the code which caused
           the bond ID test to fail.
           The ICs PHY ID was different than what was in the code which caused
           the loopback test to fail due to the misconfigured PHY.
       Fix: 
           Updated the bond and PHY ID in the code and both test now pass.
       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.
    
    New Addition: 
    =============
    1. Request:
              Add new pci id for OEM.
       
       Change: 
              Added the following PCI ID to Q57diag and Q57udiag
              VID:  14E4
              DID:  1654
              SVID: 103C
              SSID: 3100

    2. Request:
              Customer requests to added NVRAM programming command line supports in udiag.

       Change:
             Enabled "-f", "-pasf" and "-ppxe" option switchs to support NVRAM programming from command line.
             These switch work the same way as b57diag.
 
    


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.2
    New Addition: 
    =============
    1. Request:
              Added a command line parameter to activate new test to catch MAC Address Registers 
              contain a zero mac address or mac address that is different from the mac address stored in NVRAM.


       Change:
              Added -zmac option switch for cmd line to activate new test to catch MAC Address Registers 
              contain a zero mac address or mac address that is different from the mac address stored in NVRAM.


version 7.00.1
    New Addition: 
    =============
    1. Request:
              Added new test to catch MAC Address Registers contain a zero mac address or mac
              address that is different from the mac address stored in NVRAM.


       Change:
              This new test will read MAC Address Registers (0x410 and 0x414).
              It will catch if MAC Address Registers contain a zero mac address or mac
              address that is different from the mac address stored in NVRAM.
              This test will be executed when diag is running in manufacturing mode or
              running nictest in engineering mode.
              This test is part of the standard tests such that it requires no additional
              switch from command line.


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.

    3. Problem (CQ#8426): 
           1. Failed to Test the BCM95703SA31U with B0 Silicon at D1 on 
              both of the b57diag V6.28, and 6.29.
              BCM95704SA42 disn't have this problems.
   
              B57diag V6.27 worked fine without any problems.

           2. If a test failed on the D3 loopback of the first port when running in Manufacturing mode,
              the b57diag didn't stop the program.  It still pop up the second Mac Address windows, 
              the test will continue and passed if the second port worked. 

           3. The third bug is only happened after it read back the 
              wrong information of the PXE Version "29.0.0" when testing
              the BCM95704CA40 or BCM95703SA42 boards. (Dual Ports only) 

              C Brd:Rv  VID  DID  SVID SDID      MAC         Fmw     PXE PXESpd WOL ASF  MBA
              - ------- ---- ---- ---- ---- ------------ ----------- --- ------ --- --- -----
              0 5704PB0 14e4 16a8 0e11 00c7 001018044FF2 5704s-v3.17 yes auto   no  no  pxe  
              1 5704SB0 14e4 16a8 0e11 00c7 001018044FF3 5704s-v3.17 no         no  no  none

              C Brd:Rv  VID  DID  SVID SDID  MBA  PXE PXESpd PXE VERSION
              - ------- ---- ---- ---- ---- ----- --- ------ -----------
              0 5704PB0 14e4 16a8 0e11 00c7 pxe   yes auto   6.2.11
              1 5704SB0 14e4 16a8 0e11 00c7 none  no         29.0.0
       Cause:
           1. Diag has overwritten part of the bootcode initialization after GRC reset during load driver.
              It may cause boot code to malfunction and affect normal data test activites.
           
           2. Diag is sensitve to this issue and it will test out both port before asking user to 
              change a new card.        
      
           3. This is due to a pointer that point to incorrect location of the NVRAM when diag try to get PXE version.

       Fix: 
           1. Let diag take over the initialization after GRC reset. 
           2. In case of testing 5704, if the first port has failed any test, Diag will skip the secondary port.
           3. This has been fixed by correcting the point.

       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(CQ#8285): 
           q57diag with -bus option ignores bus specification
       Cause:
           -bus option switch was not applied in Q57diag.  
       Fix: 
           Include -bus option switch in Q57diag such that user can run tests on the all BRCM devices on the same bus.
       Impact:
           As described above.
    
    2. 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.

    3. Problem: (CQ #8356) EFI diag
           EFI Diag will randomly reboot system w/ various adapters when running in loop.
       Cause:
           In EFI diag, a time event has been set up to poll for interrupts since efi system
           does not interrupt.  In this event, diag will constantly pooling PCI Stat register (0x70) 
           through memory access.  

           In version V6.28, there is a 1ms delay added after GRC reset for engineering use.  
           During this period, any access to the register through the memory will cause system 
           to stop and reboot since the bus master and memory access is not enabled.

       Fix: 
           The fixed is adding a flag to enable and disable the interrupt polling during this delay period.
       Impact:
           As described above.

version 6.28
    Bug Fix:
    ========
    1. Problem: 
           After a reset with Shasta on the IKOS emulation platform NVRAM
           access fails and generates an error for a period of time .
       Cause:
           After a reset with Shasta on the IKOS emulation platform the boot
           ROM takes a long time to complete and also locks the NVRAM access,
           which causes diagnostics NVRAM access to fail. Once the boot ROM
           is finished it unlock the NVRAM access and diagnostics can use
           the NVRAM.
       Fix: 
           After a reset on Shasta wait for the boot ROM to finish
           before proceeding with diagnostic NVRAM access.
       Impact:
           Reset time takes a bit longer waiting for boot ROM completion.

    2. Problem(CQ#8282): 
           A2- Control Register Test fail with ASF enable and programmed in NVRAM.
           This issue also occur on CIOB-E with 5704A2 silicon.
           This issue is not detected if ASF f/w is not loaded and ASF is enabled in option 24 in 'SECFG'.
           After a number of continuous test, issue is no longer detected, but occur again after rebooting the system.

       Cause:
           The bug was introduced by adding a unneeded GRC reset in v6.27.  When ASF was enabled, 
           diag will try to put asf running in a loop after reset such that it will not 
           interfere with diag's activities.  However, after the newly added reset, 
           diag did not put asf running in a loop such that asf did interfere with 
           diag and causing register tests and data tests (loopback) to fail.  

       Fix: 
            New diag will have this unneeded GRC reset removed.
       Impact:
           As described above.


    3. 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.


    4. 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.

    5. 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.

    New Addition:
    =============
    1. Request: (Shasta)
           Shasta chip support is disable by default.
       Change: 
           Added -shasta command line option to enable Shasta support.

    2. Request:(CQ#8261): 
           A PXE upgrade using q57udiag -pxe <filename> will upgrade all NICs with the specified PXE version.
       OEM request to added -cname option switch in Q57Udiag such that user can enter chip name to select what chip 
           to program with the pxe file.
       Change: 
         Added code to achieve the 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.
           Shasta debug code wrote 0x12345678 to *b50.
       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: (Shasta) 
           Concurrent access to the NVRAM from the bootcode and diags failed.
       Cause:
           The NVRAM bit was not set correctly on arbitration wins.
       Fix: 
           Modified code as specified above.
       Impact:
           As described above.

    4. 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.


    5. 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.

   6. 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.

    New Addition:
    =============
    1. Request: (Shasta)
           New PCI Express blast option "-M<number>" requested
                  Reg 0x4800   Rev 0xd8   Payload Size Selected
                   bit 17-16    bit 7-5
           - M0       00          000     128 bytes
           - M1       01          001     256 bytes
           - M2       10          010     512 bytes
           - M3       11          010     512 bytes, long burst
           
       Change: 
           Added code to achieve the above.

version 6.25.3
   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 5300 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.2
    New Addition:
    =============
    1.  Added support for Shasta (aka 5705G & 5750  & 5751)

version 6.25.1
    New Addition:
    =============
    1.  In case of external loopback test against ref. card, diag will only check link on target side. 
        The diag v6.25.1 will also check on ref. card to make sure link is stabled before tx data.

  
version 6.24.4
   Bug Fix:
   ========
    1. Added ECD 321, 353, 357, 429 to b57diag V6.24.4.
       Bit 26, 27,28,29 of 0x64 of both ports will be set 
       after GRC reset and util_hw_init if 5704 B0 detected.

       ECD: 321
       PCI Latency Timer is not spec compliant:
       Software Impact:  Register 0x64 bit 29 will enable this fix.  This bit is
       write-only. It will return ‘0’ when read.
       Performance Impact: If this change is made, there might be a very small
       performance decrease in some systems.

       ECD:353
       FRAME and IRDY deasserted same cycle of master abort
       Software Impact: Register 0x64 bit 28 will enable this fix.  This bit is
       write-only. It will return ‘0’ when read.

       ECD:357
       Too many idle cycle before asserting retry in PCI-X
       Software impact: Set Configuration register 0x64 bit 27 will enable this
       fix.  This bit is write-only. It will return ‘0’ when read.

       ECD: 429
       Data corruption on PCI-X Memory Write Block command to non qword-aligned address
       Software impact: BCM5704 will have to be placed into 32-bit target mode in
       systems that can potentially generate this command. Set configuration
       register 0x64 bit 26 will enable this fix. This bit is write-only. It will
       return ‘0’ when read.

version 6.24.3
   Bug Fix:
   ========
    1. Correction of  version 6.24.2. According to PCI2.3, Bit 10 of reg 0x4 is defined as Read/Write bit.
       Bit 10 of Reg 0x4 will be test as Read/Write Bit. Also Bit 3 of Reg 0x6 is also added.  This bit is R/O.

version 6.24.2
   Bug Fix:
   ========
    1. Mask out bit 10 of PCI config reg 0x4 from PCI Reg Test.
       Bit 10 is reserved bit and it can get changed during the test.

version 6.24.1
   Bug Fix:
   ========
    1. Added new Rev ID for 5704 B0 to pass bond ID test.
       ECD: 526
       Revision ID updated to reflect B0
       Software Impact: Software will have to recognize the B0 revision. The B0
       revision ID is 0x2100.  The bond ID remains the same, “01XX”

version 6.24
   No changes from version 6.23.2

version 6.23.2
   Bug Fix:
   ========
    1. Problem:
           D3 external loop back test file when running with ref card.  No link error message has been displayed,
           but link led showes there is link
                     
       Cause:
           Diag time out too soon when polling for link status.  Diag only polls the link status for only 1s max.
       Fix: 
           Increase maximum wait time from 1s to 3s.  
       Impact:
           As described above.
    
    New Addition:
    =============
    1.  Added DMA1Test and DMA2Test to diag.  These tests are used for the OEM dma issue.
    These 2 tests are based on dmatest.  They allow testing the whole mbuf area with different patterns.
        DMA2Test incluses voltage adjustments.
  
    
version 6.23.1
   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:
           Delay 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: 
           When ASF was enabled, diag will stop the CPU after GRC reset.
           CPU will remain stopped after exit from diag.  
       Cause:
           Diag did not start CPU when exit.
       Fix: 
           Diag will restart CPU when exit.
       Impact:
           As described above.

version 6.22.2
    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.1
   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.

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.5
    New Addition:
    =============
    1. 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.
    2. Request: (CQ #8041)
         The '-did' command now also displays the PXE version.
       Change: 
         Added code to achieve the above.
    3. 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.4
   Bug Fix:
   ========
    1. Problem:
          cputest failed on the IKOS system.
       Cause:
          Since the IKOS system runs slower than actual hardware delays are
          added for the slower operation when configured for the IKOS.
       Fix: 
          Wait time for the CPU to come up after a reset was increased.
          Wait time for the CPU self test to complete was increased.
       Impact:
           As described above.

version 6.21.3
    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.

version 6.21.2
   Bug Fix:
   ========
    1. Problem: (7970)
           Using the command line options of B57diag to upgrade a B5703B0 changes the VID to 16A7.
       Cause:
           The command "b57diag -c <n> -e b57kia -f ee5703c2.33 -t abcd" is equivlent to "seprg 
           ee5703c2.33" in engineering prompt. It will override any configuration that previously 
           changed and will roll back to the default value. 
       Fix: 
           When programming bootcode by entering seprg in engineering mode or -f, 
           -firm, -fa option from command line, when the chip is 5703 and chip revision 
           is A3 or later (A3, B0, B1,...) and the programming DID is 0x16A7 in the image, 
           change the DID to 0x16C7. per tak.

       Impact:
           As described above.



version 6.21.1
   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.


version 6.20.2
      Bug Fix:
   ========
    1. Problem: (7821)
           q57diag displays error message when upgrading PXE image of q57pxe.bin to q57mmba.nic
       Cause:
           Q57diag support upgrade/downgrade version message. Diag will detect the version of the currect 
           loaded PXE vs PXE file image.  If both image types are different, diag will return v0.0.0 as the version
           of the file image.  As a result, user will get error message state that user is downgrading PXE from
           the current version to v0.0.0.

       Fix: 
           Once v0.0.0 returned, it indicates the both image types are different.  New warning will be displace.
           User will be asked to continue to program the selected image or to abort.
       
       Impact:
           This will only happened if user try to program an image with a different type than the one being currently
           loaded.

version 6.20.1

Problem Statement:
==================
1. In all of the current "bootcode" for all 57xx chips, it contains
following instructions:
    if (seeprom_secfg_setting_option_18 == 1.8volt)
    {
        mii_write ( 0x1c, 0x8c23)
        mii_write ( 0x1c, 0x8ca3)
        mii_write ( 0x1c, 0x8c23)
    }

2. This setting of 1.8 volt is the "default" in the b57diag.exe.  So the
above 3 PHY register writes will get executed.

3. These sequences exist since June 2001, and was intended for some 5701
workaround, does not apply to newer chips any more.

4. According to Sang Bui and Gary Huff, the "mii_write( 0x1c, 0x8ca3)" will
cause a glitch in the PHY clock on the 5702, 03, 04, 05 family chips, and
could cause PHY to lock-up.  These sequences must be removed from the
bootcode and any other software components.

5. On the b57diag, "secfg" command, option 18, the user can choose 1.3 volt
or 1.8 volt.  No one seems to remember why these two options, and to date,
seems like this option always got set as default (1.8 volt).

6. From talking to David Fischer, he confirmed that we didn't offer any
"voltage setting" for the internal PHY core on any of our 57xx chips.
Therefore, I think this option can be removed from the b57diag.exe "secfg"
command for the newer generation chips.

Work to be done:
================
A. The bootcode will remove these PHY write sequences for 5702, 03, 04 and
05 chip families.  But keep these sequences for 5701 for backward
compatibility.

B. The b57diag.exe, "secfg" command will be modified to allow user to change
option 18, if and only if the chip is 5701.  If user wants to change the
voltage on any other chips, the b57diag will put out a warning and reject
the change.

C. The software team will examine all other software components to make sure
there are no "mii_write( 0x1c, 0x8ca3)" exist in the code path, remove it if
such mii_write is found.

D. The SQA team will need to test all the affected bootcode.  Pay special
attention on the LINK area (advertisement, link drop, link re-connect with
different switch/speed/mode, etc.)


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.19 (Q57diag only)
   
    
    New Addition:
    =============
    1. Problem: 
           Added two new PCI IDs to Q57diag.
       Change: 
       Added two new PCI IDs to Q57diag.
           (5703    Copper) OEM NC7771 Gigabit Server Adapter    14e4    16c7    0e11    00ca
       (5703    Copper) OEM NC7781 Gigabit Server Adapter    14e4    16c7    0e11    00cb


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.
    
    New Addition:
    =============
    1. Problem: (CQ 7762)
           Q57diag is not able to program PXE to 0x16C7 (5703) Device.
       Change: 
           SInce Q57diag check for valid NIC device ID when programming PXE, added 0x16C7 as a valid NIC
           will allow PXE programming to 0x16C7 device.


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 chips.
   
    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.
           
Internal Changes:
=================
1. Request: (CQ #7113)
            Add a database that contains all the supported chips. The
            supported chips in the data base should contain only chips
            that have been qualified by SQA. Diagnostics could reconize
            other chips but should state that they are unsupported and
            limit the access to unsupported chips.
   Change:  Added a table based method for verifing supported chips.
            "-newbond"  DOS command line options was added 
               . checks for supported devices 
               . if all boards is in a system are unsupported boards
                 then diagnostics exits to DOS
               . if at least one board is a system is a supported board
                 an 'x' is placed after the board number for non-
                 supported boards and diagnostics defaults to the first
                 supported board
               . does not allow the "dev" engineering mode command to 
                 switch to unsupported devices
            "-devsprt"  DOS command line options was added
               . used with the "-newbond" options to support new revs
                 of a chip
               . used by engineering so that new revs of a chip can be
                 supported without recompiling diagnostics
               . this option could:
                  ' be hidden for customers, so diags only works with
                    supported chips that have been tested by SQA
                  ' be provided to the customers with a big warning
                    saying that you should not really use this option
                    and get an updated version of diagnostics that
                    supports new chips (SQAed)

   Impace:  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 OEM 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.  OEM 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 OEM 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 OEM 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

