                                 Broadcom Corporation
                                 16215 Alton Parkway,
                                Irvine, CA 92619-7013

                                   Release Note 
                      Broadcom BCM570x Mutiple Boot Agent (MBA)
                             [ PXE,RPL, and BOOTP ]
                                 02/25/2003

******************************** IMPORTANT NOTE *******************************
*                                                                             *
* 1. All of the released binary images (except b57base.bin and b57mba.lom)    *
* have standard ROM header which has embeded Vendor ID/Device ID.  BIOS only  *
* loads MBA image if Vendor ID/Device ID matches the Vendor ID/Device ID of   *
* the controller.  The default Vendor ID/Device ID in the released images are *
* for BCM5701 controller (0x14e4/0x1645). If this image is programmed to NIC  *
* without using Broadcom's flashing utilities such as b57util.exe or upgfrm   *
* command in b57diag.exe, then the provided romhdr.exe must be used to update *
* ROM header with the Vendor ID/Device to match with intended controller.     *
* Similarily, in LOM application where MBA image is integrated to BIOS, it's  *
* mandatory to use romhdr.exe to update image's ROM header to match with      *
* intended target controller's Vendor ID/Device ID.                           *
*                                                                             *
* 2. MBA v3.1.22 and newer requires b57diag v5.0.5 and newer for NIC upgrade. *
*                                                                             *
* 3. UNDI driver is not fully supported in EFI IA-64 environment.  It might   *
*    not work correctly some platforms/environments.                          *
*                                                                             *
* 4. The first bootstrap for BOOTP download has to be within the range of     *
*    640K - 32K - sizeof(UNDI)+sizeof(base code).  This is normally about     *
*    520K.  The first phase of BOOTP bootstrap can download the rest of       *
*    image by interfacing with PXE API which is still in conventional         *
*    memory.                                                                  *
*******************************************************************************

Introduction
============

This file describes the Broadcom Multiple Agent for Broadcom's BCM570X
10/100/1000 Mbps Ethernet Network Interface Controller.  Broadcom Multiple
Boot Agent (MBA) supports PXE,RPL, and BOOTP.  Multiple Agent driver is released 
in the following binaries:

b57pxe.bin: This is a monolithic image that consists of both 
            base-code (BC) and UNDI code. This image should be used 
            on the NIC application.
            However, an adapter programmed with this image is still 
            operational in the motherboard's BIOS with built-in BC; 
            the BC on the adapter will be used.  This image only
            supports PXE.

b57undi.bin: This is an UNDI image that consists of UNDI code only 
             (split implementation) which is intended for NIC 
             application.

b57base.bin: This is a BC image that consists of BC code only 
             (split implementation) which is intended for LOM application. 
             This module should be programmed on the motherboard's BIOS. 

b57undi.lom: This is an UNDI image that consists of UNDI code only 
             (split implementation) which is intended for LOM application.
             This module should be programmed on on the motherboard's BIOS.

b57pxe.lom : This is a monolithic image that consists of both 
             base-code (BC) and UNDI code. This image is intended for 
             LOM application.  This image only supports PXE.

b57umba.lom : This is an UNDI image that consists of UNDI code only 
             (split implementation) which is intended for LOM application.
             This UNDI driver supports PXE and RPL.
             This module should be programmed on on the motherboard's BIOS.

b57mmba.nic : This is a monolithic image that consists of both 
              base-code (BC) and UNDI code. This image should be used 
              on the NIC application. An adapter programmed with this image is 
              still operational in the motherboard's BIOS with built-in BC; 
              the BC on the adapter will be used.  This image supports
              both PXE and RPL.

b57mmba.lom : This is a monolithic image that consists of both 
              base-code (BC) and UNDI code. This image should be used 
              on the LOM application. This image supports both PXE and RPL.

romhdr.exe : This tool can be used to customize PXE image for different
             ASIC-based LOM applications.  It basically modifies the
             Vendor ID/Device ID in the ROM header of the image and
             then recalculates the checksum.  For instance, use b57undi.lom
             for BCM5700-based LOM.
               romhdr -v 0x14e4 -d 0x1644 -i b57undi.lom 

The following images are no longer released for PXE v3.1.17 or newer:

b57mba.lom: This is a BC image that consists of BC code only 
            (split implementation) which is intended for LOM application. 
             This module should be programmed on the motherboard's BIOS. 
             This base-code supports PXE and RPL.


b57mba.nic : This is a monolithic image that consists of both 
             base-code (BC) and UNDI code. This image is intended for 
             NIC application.  This image only supports PXE and RPL.


Application
===========

Some example applications are used to clarify the usage of these binary 
images.

1. BCM570X LOM with PXE and RPL support: b57base.lom and b57umba.lom
   should be integrated with system BIOS.

2. BCM570X LOM with PXE support ONLY: b57base.bin and b57undi.lom
   should be integrated with system BIOS.

3. BCM570X NIC with PXE and RPL support: b57mmba.nic should be programmed
   to NIC's NVRAM (serial EEPROM/FLASH).

4. BCM570X NIC with PXE ONLY support: b57pxe.bin should be programmed
   to NIC's NVRAM (serial EEPROM/FLASH).

Revision History
================
Version 6.1.2:
    1. Fixed a problem where PXE fails to work on BCM5701. (CQ7123)

Version 6.1.1:
    1. Fixed a problem where configuration doesn't take effect 
       immediately when boot protocol is changed from BOOTP to PXE or
       RPL to BOOTP. (CQ7074)
    2. Enhanced so that device description and device location (bus/
       device/function) are displayed in the banner and MBA configuration
       menu. (CQ7101)
    3. Enhanced so that users can blink LEDs of the device that is being
       configured in the MBA configuration Menu. (CQ4948)
    4. Fixed a problem where GPIO configuration is overwritten.  This 
       can cause a issue where preboot-WOL doesn't work in BCM5701-based 
       application. (CQ6904)
    5. Fixed a problem where system is locked up when parameters are 
       saved via F4 in MBA configuration menu.  This problem only occurs 
       in BCM5700 and BCM5701.
    6. Enhanced so that UNDI_GET_INFORMATION API call doesn't affect
       ASF and other firmware applications.  In some platforms, BIOS 
       loads UNDI and then issues UNDI_GET_INFORMATION API call to 
       retrieve adapter information without booting from the network
       with PXE.
    7. Enhanced romhdr.exe application so that it can handle image 
       size up to 128K.

Version 6.1.0:
    1. Added native BOOTP support. (CQ7005)

Version 6.0.3:
    1. Fixed a problem where Novell login after RPL download might
       cause system stack overflow in a certain systems. (CQ6534)
    2. Added support for family of BCM5705 A3 and newer.

Version 6.0.2:
    1. Fixed a problem where BCM5704 fails on multicast TFTP test when
       it's configured in half-duplex mode. There is a bug a in the base
       code where base code can drop packets.  If two packets are 
       received back-to-back, base-code will drop the second packet. 
       In this scenario, unicast and multicast TFTP packets are received 
       back-to-back.  UNDI indicates both packets to base code receive logic,
       but it drops the MTFTP packet. The fix is now implemented in the 
       base code (build 082f). (CQ6874)
    2. Fixed a problem where link failure is not detected in a timely
       manner if link is not configured to AUTONEG.  It might take up  
       to 30 seconds instead of 8 seconds. (CQ6877)
    3. Enhanced so that packet is always padded with 0's if the packet
       length is less than minimum ethernet packet size.  The padding
       is now padded by hardware ASICs instead of software.
    4. Fixed a problem where a PCI configuration parameter (cache line
       size and maximum latency timer) is not restored if PXE boot 
       is terminated due to user's abort or boot failure.
    5. Fixed a problem where RPL download might fail if other heavy 
       non-IPX traffic on the network. (CQ6844)

Version 6.0.1:
    1. Fixed a problem where system hangs at POST with b57pxe.bin 
       image. (CQ6802)

Version 6.0.0:
    1. Enhanced so that hot-key is configurable.  The choices for hot-keys 
       are Ctrl-S or Ctrl-B (default is Ctrl-S).
    2. Enhanced so that users can configure whether Setup Prompt is displayed
       or not.
    3. Fixed a typo in the copyright banner. (CQ6759)
    4. Added BCM5704 support.

Version 3.1.30:
    1. Enhanced so that users are still able to invoke MBA configuration 
       via Cltrl-S when timeout is set to 0 second. (CQ6598)
    2. Updated copyright banner to reflect year of 2003.

Version 3.1.29:
    1. Added software workaround for PCI clock-run issue in mobile 
       environment.

Version 3.1.28:
    1. Removed BCM5704 support.

Version 3.1.27:
    1. Fixed a problem where API test is slow when the link is configured 
       to half-duplex mode. (CQ6086)
    2. Fixed a problem where BCM5704 fiber link intermittently loses 
       link on a certain systems. (CQ6465)

Version 3.1.26:
    1. Added support for new PCI devices (0x14e4/0x16c7,0x14e4/0x16c6,
       0x14e4/0x1696).

Version 3.1.25:
    1. Fixed a problem where MBA configuration menu cannot be involked 
       via Ctrl-S on a certain rare systems. (CQ6050)
    2. Fixed a problem where cable presence is not correctly detected
       when cable is broken (EthernetWireSpeed mode) and WOL is 
       enabled. (CQ6147)
    3. Added Broadcom revision to base code banner so that changes made
       by Broadcom can be kept track of.

Version 3.1.24:
    1. Enhanced to provide a way for the BIOS to control MBA configuration
       setup time. (CQ6069)
       BIOS sets up the following registers before passing control
       to PXE initialization entry point:

        AX    : Contains PCI bus/device/function number.
        ES:DI : Pointer to System BIOS Plug and Play Installation Check 
                Structure.
        ECX   : 0x46415354 if register SI is valid.
        SI    : 1 - BIOS requests quiet boot (Not show PXE banner).
                0 - BIOS request to show PXE banner and delay time is in 
                    bit 4..1 of register SI.

Version 3.1.23:
    1. Fixed a problem where Fiber autonegotiation might fail on a  certain
       switches. (CQ5923)
    2. Fixed a problem where boot entry might not show up on a certain
       system that don't support BBS. (CQ6146)
    3. Fixed a problem where PXE doesn't work with BCM5704 A2 Fiber.

Version 3.1.22:
    1. Added support for Netware RPL.  This allows RPL clients connecting
       to Netware server for remote booting/installation.

Version 3.1.21:
    1. Added support for BCM5705MFE.

Version 3.1.20:
    1. Added support CIOBE Serdes.
    2. Fixed a problem where UNDI API test fails on some of the TYAN 
       systems.

Version 3.1.19: 
    1. Fixed a problem where link speed doesn't take effect immediately
       when it's configured in MBA configuration menu. (CQ5878)
    2. Fixed a problem where UNDI might not work properly if UNDI APIs
       are called in a mixed sequence of real mode and protected mode.

Version 3.1.18: 
    1. Fixed a problem where system fails to boot with multicast
       TFTP on a certain system.  This is definitely a base code 
       issue. If two packets are received back-to-back, base-code
       will drop the second packet. In this scenerio, unicast and
       multicast TFTP packets are received back-to-back.  UNDI
       indicates both packets to base code receive logic, but it
       drops the MTFTP packet.  Workaround is put into UNDI to
       minimize impact on other UNDI implementation which might 
       assume this base code behavior. (CQ5617)

Version 3.1.17: 
    1. Fixed a problem where RPL doesn't work in LOM application.
       RPL logic is now in the UNDI code instead of the base code.
    2. Enhanced so that 1000MBps Full/1000Mbps Half option is not
       selectable in MBA configuration menu. (CQ5794)
    3. Fixed a problem where RPL doesn't shutdown gratefully if 
       download is not successful.

Version 3.1.16: 
    1. Added hot-key configuration menu support.  Configuration Menu can
       be invoked with Ctrl-S.

Version 3.1.15: 
    1. Fixed a problem where PXE/RPL client waits for a long time if 
       cable is not attached. (CQ5653 & CQ5588)
    2. Enhanced so that Broadcom PXE PnP description will have 
       version and PCI slot number (CQ 5552).
    3. Enhanced to display unique string for images with RPL support. 
      (CQ5553)

Version 3.1.14: 
    1. Added BCM5704 Fiber support.

Version 3.1.13: 
    1. Fixed a problem where PXE cannot establish link when it's 
       connected to Gigabit-only switch and ASF is enabled. (CQ5530)

Version 3.1.12: 
    1. Fixed a problem where API test intermittently fails
       with BCM5705. (CQ5006).

Version 3.1.11: 
    1. Fixed a problem where PXE doesn't work with RIS.
    2. Fixed a problem where multicast packets are not filtered
       correctly.

Version 3.1.10: 
    1. Fixed a problem in the base code where UDP_READ API routine
       doesn't receive packets correctly if there is other UDP traffic
       on the network. (CQ5403)

Version 3.1.9: 
    1. Fixed a problem in the base code so that GUID/UUID is displayed in
       correct format (GUID in wire format).

Version 3.1.8: 
    1. Added BCM5705 support.
    2. Fixed a problem where PXE hangs up in BCM5704 XBAR mode. (CQ5035)

Version 3.1.7: 
    1. Removed BCM5705 support.
    2. Fixed a problem where link presence is not detected correctly on 
       a certain systems. (CQ 5153)
    3. Added PCI reset workaround for BCM5704 A1.

Version 3.1.6: 
    1. Added support for Mini-PCI NICs.

Version 3.1.5: 
    1. Added BCM5901 support.
    2. Fixed a problem where UNDI code doesn't work with base code build 83
       in DOSUNDI mode.
    3. Fixed a problem where PXE might hang up if NVRAM ARB is not released  
       by other entities (boot code or ROM code).  This happens when NVRAM
       content is corrupted. (CQ4942)

Version 3.1.4: 
    1. Added BCM5705 support.

Version 3.1.3: 
    1. Enhanced to support BCM5703/BCM5703S.

Version 3.1.2: 
    1. Enhanced so that PXE download is exited immediately if no link 
       is detected. (CQ3773)
    2. Fixed a problem where system hangs if F1 is hitted to retry
       when no flopy disk/harddisk (NIC only). (CQ4793)
    3. Fixed a problem where it fails to detect BBS capability when
       BBS version is newer than BBS v1.01.

Version 3.1.1: 
    1. Fixed a problem where PXE API test is slow on some IBM PCI-X systems.
       (CQ4734)
    2. Fixed a problem where some PCI-X systems reboots when running stress
       testing with BCM5701-based NICs. (CQ4714)

Version 3.1.0: 
    1. Enhanced so that memory footprint for UNDI driver is significantly 
       reduced.  (81K is down to 34K)
    2. Fixed a problem where 10/100 half duplex fails API test. (CQ3371)

Version 3.0.2: 
    1. Fixed a problem where BBS capability is not properly detected 
       if BIOS Information Type 0 is not the first entry of the SMBIOS
       database.

Version 3.0.1:
    1. Added BCM5704 support.
    2. Fixed a problem where PXE doesn't boot on the second port when
       the first port fails on BCM5704. (CQ3952)
    3. Fixed a problem where base code doesn't load correctly when
       BIOS doesn't support PMM (Post Memory Manager).
    4. Fixed a problem where PXE doesn't load correctly when NVRAM 
       is blank.

Version 2.2.8:
    1. Enhanced so that it can run concurrently with ASF.

Version 2.2.7:
    1. Fixed a problem where it fails to boot if on some PCI-X systems.

Version 2.2.6:
    1. Fixed a problem where it fails to operate with a certain model 
       of Cisco switches.  Whenever there is a link change, Cisco  
       switch doesn't forward packets after 5 to 10 seconds even spanning
       tree protocol is disabled.  It drops all packets during this 
       period of time.  Base-code is changed to retry more times.
       However, Cisco switch can be configure to work with previous
       versions of PXE.  The workaround is to configure Cisco port, where 
       PXE client is connected to, to portfast mode.  For instance,
  
             set spantree portfast 4/12 enable 

    2. Enhanced so that wait time for physical link stability is shortened.

Version 2.2.5:
    1. Optimized phase2 loader and minimized serial EEPROM corruption
       (This applies to NIC application ONLY).

Version 2.2.4:
    1. Added support for different LED configurations.

Version 2.2.3:
    1. Fixed a problem Dell PowerEdge7150 (Dual Processor IA-64) hangs up
       during EFI initialization if PXE-enabled NIC is installed.  This 
       problem is caused by a bug in EFI IA-64 core firmware where it 
       passes invalid PCI bus/device/function parameter to UNDI.  
       Workaround around is implemented by using initial parameter
       passed during UNDI init. (CQ3534)
    2. Fixed a problem where HPi2000 (IA-64 system) intermittently doesn't
       boot if PXE-enabled NIC is installed. 

Version 2.2.2:
    1. Fixed a problem where AutoNeg of Fiber NIC might not work on a 
       certain systems. (CQ3462)
    2. Rebooted system if RPL downloading fails. (CQ3606)

Version 2.2.1:
    1. Added software workaround for high bit error rate with 5703S fiber.

Version 2.2.0:
    1. Added Remote Program Load (RPL) support.  Since it's implemented
       based on IBM standard, it should interoperate with RPL service
       running on popular O/S such as Windows NT and IBM OS/2.  However,
       It will not work with Novell Netware yet since bootstrap (downloaded
       via RPL) requires ODI driver interface to download the rest of
       image with Netware protocol (Netware Core Protocol - NCP).
       This features should allow users to remote/boot/install DOS/Win95/
       Win98/OS2.
    2. Fixed PXE version banner. (CQ3435).

Version 2.1.8:
    1. Added support for Ethernet WireSpeed feature for BCM5702/
       BCM5703 NICs/LOMs.
    2. Added support for NICs with device ID 0x16a6 and 0x16a7.
    3. Fixed a problem where EFI UNDI core firmware detects
       UNDI16 with zero MAC address (CQ3337).

Version 2.1.7:
    1. Added support for BCM5702/BCM5703 (Rev. A0 silicon).

Version 2.1.6:
    1. Changed so that PXE cannot be loaded if ASF is enabled.
    2. Added scheme to prevent serial EEPROM corruption in BCM5702/BCM5703.

Version 2.1.5:
    1. Fixed a problem where DOSUNDI hangs up with BCM5703 NICs (CQ3113)
    2. Fixed a problem where PXE performance is slow on BCM5702/BCM5703 
       NICs (CQ3125).
    3. Fixed a problem where PXE is slow then BCM5701 NICs is on the 
       Dual AMD Tyan (CQ3165).
    4. Fixed a problem where UNDI performance is slow when it's in 
       some of OEM PCI-X systems. (CQ2800).

Version 2.1.4:
    1. Removed personized banner per OEM's request.
    2. Added features to allow user to configure delay time for banner,
       and boot strap type (BBS,INT18h, INT19h).

Version 2.1.3:
    1. Fixed a problem where PXE might lock up in some systems which implement
       "Fast Boot Initiative".  This only happens on NICs but not LOMs.  
       It's neccessary to have to use latest tools to upgrade PXE and latest 
       boot code firmware.

Version 2.1.2:
    1. Fixed a problem where UNDI speed is very slow when BCM5701 Fiber
       NICs/LOMs on a certain platform.

Version 2.1.0:
    1. Fixed a problem where PXE doesn't work with BCM5702/BCM5703 NICs.

Version 2.0.11:
    1. Fixed a problem where download with MTFTP fails. (CQ1793 & CQ2679)

Version 2.0.10:
    1. Added support for future BCM5702 and BCM5703 NICs/LOMs.

Version 2.0.9:
    1. Fixed a problem where PXE is not operatable if preboot WOL is 
       enabled.

Version 2.0.8:
    1. Improve performance.

Version 2.0.7:
    1. Fixed a problem where Tx or Rx can be hung when it's in PCI-X.

Version 2.0.6:
    1. Fixed a problem where PXE is not detected by BIOS when it's in 
       PCI-X slot.

Version 2.0.5:
    1. Fixed a problem where PXE might not boot in some systems which
       have SMBIOS database built at preboot but don't support BBS.

Version 2.0.4:
    1. Enhanced so that BIOS's BBS capability can be detected though SMBIOS.

Version 2.0.3:
    1. Added support for BCM95701A12 NIC.
    2. Enhanced to utilize shared memory interface for future compatibility.

Version 2.0.2:
    1. Added support for BCM95701A10 NIC.

Version 2.0.1:
    1. Added BCM5700 Fiber NIC support.
    2. Added BCM5701 Fiber NIC support.
    3. Added support for some OEM NICs.

Version 2.0.0:
    1. Added BCM5701 support.

Version 1.06:
    1. Added PCI-X workaround for B2 silicon.

Version 1.05:
    1. Changed to provide a scheme for users to boot via Int 18h, Int 19h, or 
       BBS.
       After the Broadcom banner is displayed, users have 4 seconds to select:
         * Ctrl F8    : Int 18h
         * Ctrl F9    : Int 19h
         * Ctrl F10   : BBS

   2. Changed to allow users to force PXE run at a certain speed.
     
Version 1.04:
    1. Changed due to changes in ASIC version format in B1 silicon.

Version 1.03:
    1. Eliminated unused code to save more memory so that it works fine with 
       IBM 300GL.
    2. Changed to accomodate different LED configurations based on System 
       Vendor ID.  

Version 1.02:
    1. Fixed a problem where client hangs up during setup phase of windows 2000
       installation with RIS.
    2. Fixed copyright banner string.

Version 1.01:
    1. Changed to accomodate different LED configurations.  

Version 1.0:
    1. Fixed a problem where base-code cannot be unloaded.
    2. Fixed a problem where Linux Universal Driver crashes when it binds to
       UNDI.  UNDI now can run in protected mode.

Version 0.10:
    1. Fixed a problem where some system might lock up if BIOS calls
       UNDI API SHUTDOWN before call UNDI API INITIALIZE.    IBM 300PL
       PC is one of them.  

    2. Changed so that Broadcom copyright banner is displayed during
       ROM initialization.

    This version should fix SAR Prod0000344,and SAR Prod0000283

Version 0.9:
    1. Fixed a problem where PXE is not recognized is some systems where
       BIOS don't support BBS (BIOS Boot Specification).  Logic is 
       added to PXE initialization code to detect if BIOS support BBS or
       not.  If not, then use Interrupt 18h for boot.  This should 
       fix SAR Prod0000225,SAR Prod0000604, SAR Prod0000606.
 
Version 0.8:
    1. Fixed a problem where APITEST failed. (SAR Prod0000426)

Version 0.7:
    1. Fixed a problem where mapping a network drive can intermittently lock 
       up the client system. (SAR Prod0000236)

Version 0.6:  
    1. Fixed a problem where PHY speed for Gigabit links are not displayed 
       correctly.

Version 0.5:  
    1. Added support for B0 Silicon.
    2. Fixed a problem where 10Mbps doesn't work.

Version 0.4:  
    1. Initial release.


Revision History of Base Code 
=============================
Intel developed base code and distributed it as a part of PXE SDK 
to the NIC hardware vendors who develop UNDI drivers for their 
NIC products.  During testing and development process, Broadcom has 
found various bugs and has provided appropriate fixes.  Details of
various fixes are listed as follows:

Build 082g  : 
    1. Modified so that it can support native BOOTP request.  Some 
       BOOTP servers don't send BOOTP reply if it's not native 
       BOOTP request.

Build 082f  : 
    1. Fixed a problem where base code can drop packets if packets
       are received back-to-back.  Specifically, if two packets are 
       received back-to-back, base-code will drop the second packet. 
       In a MTFTP test scenario, unicast and multicast TFTP packets 
       are received back-to-back.  UNDI indicates both packets to base
       code receive logic, but it drops the MTFTP packet. 

Build 082e  : 
    1. Added Broadcom revision to base code so that Broadcom can keep
       track changes in the base code.

Build 082 (shipped via MBA v3.1.10 and newer) :
    1. Fixed a problem in the base code where UDP_READ API routine
       doesn't receive packets correctly if there is other UDP traffic
       on the network. 

Build 082 (shipped via MBA v3.1.9 and newer) :
    1. Fixed a problem so that GUID is displayed in correct format.

Build 082 (shipped via MBA v3.0.1 and newer) :
    1. Fixed a problem in the base code where it doesn't load correctly
       when BIOS doesn't support PMM (Post Memory Manager).

Build 082 (shipped via MBA v2.2.6 and newer) :
    1. Changed DHCP timeout so that retry timeout is 2,4,8,16,32 seconds.




