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

                                  Release Notes
                Broadcom Gigabit Ethernet EFI Driver for IA-32 and IA-64
                                  June 27, 2006
  
Revision History
================

Version 9.4.4 July 27, 2006
---------------------------
   Fixes:
   =====
   1.  Problem : Application failed to update permanent MAC address or 
       firmware images (EFI driver or bootcode) on the LOM device which
       uses GPIO as write-protect control.

       Cause: Driver doesn't assert GPIO1 correctly when write-protect 
       is enabled.

       Change: Fixed NVRAM write enable routine to assert GPIO1 correctly.

Version 9.4.3 June 1, 2006
--------------------------
   Fixes:
   =====
   1.  Problem: BCM5704s cannot establish link with Marvell media conversion 
       module.

       Cause: Marvell serdes may take up 3 seconds or longer to start AUTONEG 
       process when PCS and SYNC are up. It doesn't start it until the copper
       interface side is up.  When Autoneg fails, it doesn't perform fallback
       mechanism correctly.  It later brings down the link again.  It causes 
       link up/down continuously.

      Change: Changed to BCM5704 AUTONEG logic to handle fallback mechanism 
      correctly.

Version 9.4.2 May 24, 2006
-------------------------
   Enhancements:
   =============
   1. Enhanced Configuration Protocol to allow users to force fiber link speed 
      per customer's request.

Version 9.4.1 May 17, 2006
-------------------------
   Enhancements:
   =============
   1. Added support for BCM5786 family devices.

Version 9.4.0 May 3, 2006
-------------------------
   Enhancements:
   =============
   1. Enhanced EFI UNDI STATION_ADDRESS API to allow upper layer to change
      and restore permanent MAC address. (CQ24519)

Version 9.0.0 December 22, 2005
--------------------------------
   Enhancements:
   =============
   1. Request: Added support for BCM5752/BCM5755/BCM5787/BCM5714S/
      BCM5715S/BCM5780/BCM5780S/BCM5754 family devices.

Version 8.1.3 October 26, 2005
--------------------------------
   Enhancements:
   =============
   1. Updated readme.txt to use native EFI driver instead of EBC driver
      in the example of ROM. (CQ#14469)

Version 8.1.2 September 22, 2005
--------------------------------
   Fixes:
   =====
   1.  Problem: EFI Update Protocol fails to update boot code on the device
       that has invalid checksum of manufacturing block.

       Cause: When driver is requested to update boot code, updating 
       protocol routine validates many other parameters 
       (magic number, checksum of manufacturing block, etc...) before
       programming of boot code is initiated.  Some of the OEM NICs with 
       Broadcom devices have been released with invalid manufacturing 
       checksum.  This causes updating boot code image to fail. 

      Change: Per customer's requests, changed EFI update image protocol 
      routine to not validate the checksum of manufacturing block.

Version 8.1.1 March 15, 2005
----------------------------
   Fixes:
   =====
   1. Problem: EFI driver doesn't work in some EFI environment 
      where virtual address is not the same as physical address.

      Cause : There is some limitation in mapping function interface 
      passed by SNP module where it only allows 100 mapping.  Older
      driver cannot call this interface to map every preallocated 
      Rx buffers, etc...  

      Change: Changed UNDI driver to call mapping function provided
      by SNP module one time during initialization.  Driver then 
      manages the buffer pool.

      Impact:
               None.

Version 8.1.0 January 31, 2005
------------------------------
   Enhancements:
   =============
   1. Enhance EFI Image Update Protocol to have the capability to 
      upgrade the boot code firmware. (CQ#11673)

      Change: Change Image Update Protocol handler to look at content
      of the image being passed to see if it's an Expansion ROM image (
      0x55 0xaa ...) or boot code (0x66 0x99 0x55 0xaa....) and also  
      add logic to program boot code image.

Version 7.7.4 December 8, 2004
------------------------------
   Fixes:
   =====
   1. Problem: Updating EFI driver via EFI Update Image protocol is 
      slow.

      Change: Changed to set NVRAM control bits correctly in NVRAM 
      write routine.

      Impact:
               None.

Version 7.7.3 December 7, 2004
------------------------------
   Fixes:
   =====
   1. Problem: EFI Drvcfg doesn't configure speed correctly. (CQ#11534)

      Cause  : Parameters are not stored correctly.

      Change: Fixed the configuration routine to store parameters
      correctly.

      Impact:
               None.

Version 7.7.2 December 6, 2004
------------------------------
   Fixes:
   =====
   1. Problem: Diagnostics fails on BCM5701 LOM devices. (CQ#11362)

      Cause  : RequestedMediaType field of the device structure was not set to 
      MAC or PHY loopback during MAC or PHY loopback.  If a link change occurs,
      PHY initialization routine can change the loopback setting.

      Change: Change diagnostics code to set RequestedMediaType field with
      correct values during loopback testing.      

      Impact:
               None.

Version 7.7.1 December 2, 2004
------------------------------
   Fixes:
   =====
   1. Problem: Diagnostics fails on the Shasta family devices.

      Cause  : Incorrect memory and register information is used.

      Change: Change diagnostics code to use correct memory and register
      information for Shasta family devices.

      Impact:
               None.


Version 7.7.0 November 16, 2004
------------------------------

   Enhancements:
   =============
   1. Request: Preserve content of lower 14-bit of Serdes control 
      register which includes parameters of Predriver current, 
      Tx driver current, and pre-emphasis coefficient.
      
      Change : Changed PXE firmware to preserve content of lower 14-bit 
      of Serdes control when TX Serdes overwrite feature is enabled.

   2. Request: Added ST M45PExxx/Saifun SA25Fxxx/AT25F512N support for 
      Shasta family devices.

        The following is the supported NVRAM summary:
    
       SO   :   Bit 25, Flash Size,     internal pull-up 
       SI   :   Bit 24, Protected Mode, internal pull-down
       SCLK :   Bit 1,  Buffered Mode,  internal pull-down
       CS   :   Bit 0,  Flash Mode,     internal pull-down

    [SO,SI,SCLK,CS] Device          Description
    --------------- ------------  ----------------------
     1000         AT24C512      SEEPROM, AT24Cxxx, any size              
     0111         SA25F0xx      Saifun SA25F005/010/020 (512KB/1MB/2MB)
     1011         AT45DB011B    Atmel Buffered 1MB Flash
     1101         ST M45PEx0    ST M45PE80/M45PE40/M45PE20/M45PE10
                                8/4/2/1MB Flash
      Change : Modified Flash driver to support above devices.  

   3. Request : Added support for BCM5751 devices in 12x12 packages.

      Change : Changed PXE code to recognize devices with PCI vendor ID/device
      ID of 0x14e4/0x16f7,0x14e4/0x16fd,0x14e4/0x16fe, and 0x14e4/0x16dd.

Version 7.5.1 October 19, 2004
------------------------------

   Enhancements:
   =============
   1. Request:  Enhance Driver Unload feature so that issuing explicit 
      disconnect command is not necessary when "unload" command is
      used to unload a driver.

      Change: EFI Image Unload command is supposed to disconnect all 
      components that are attaching to the image being unloaded.  
      However, this command might not disconnect all components due 
      to a bug in SNP in some core firmware environments. 
      Changed driver unloading routine to disconnect all components 
      that are attaching to the image handle of the UNDI driver.

      Impact:
             None.
   
Version 7.5.0 October 18, 2004
-----------------------------

   Enhancements:
   =============
   1. Request:  Add support for BCM575x-based NICs/LOMs.

      Change: Changed PXE code to recognize and support BCM575x-based 
             NICs/LOMS.

      Impact:
             None.
   
   2. Request: Make enhancement so that EFI driver and ASF/IPMI can run 
      concurrently.

      Change: Changed EFI UNDI code to handshake with ASF/IPMI firmware
      during initialization/shutdown sequence.

Version 7.0.4 October 7, 2004
-----------------------------

   Enhancements:
   =============
   1. Request:  Add EFI Driver Image Update Protocol.  This allows user 
      application to interface with the driver for programming the EFI ROM 
      on the NIC's NVRAM. (CQ#10977)

      The GUID and protocol interface are shown as follows:
        {0xC07B8D1F,0xF359,0x4C84,0xBF,0xCA,0xB1,0xE5,0x36,0xE0,0x14,0x26} 

        (EFIAPI *EFI_FC_DRIVER_IMAGE_UPDATE_PROTOCOL_UPDATE_DRIVER) (
               IN       EFI_HANDLE              ControllerHandle,
               IN       UINT8                   *FwImagePtr,
               IN       UINT32                  FwImageSize
        );


      Change: Implemented logic to program EFI image on the NIC's NVRAM,
      program Expansion ROM size parameters based on the size of the driver
      image, and finally administratively enable PXE parameter.

      Impact:
               None.

Version 7.0.3 May 26, 2004
----------------------------

   Fixes:
   =====
   1. Problem: System might crash during ExitBootService if driver is stopped 
      and started again (e.g reconnect -r) before ExitBootService is called.

      Cause  : UNDI driver maintains a list of devices that it controls.  There
      is a bug in DriverStop where it doesn't remove the control block from 
      this list of devices even the memory block of that control block is freed.  
      During ExitBootService, driver refers to memory block that has been 
      freed which causes system to crash.

      Change: Fixed the DriverStop routine so that it removes the control block
      from the list of managed devices.

      Impact:
               None.

Version 7.0.2 March 30, 2004
----------------------------

   Fixes:
   =====
   1. Problem: BCM5701-based NIC/LOM PXE might use zero MAC address 
               when it's used with older version of boot code.

      Cause  : UNDI driver assumes that MAC address are programmed by the 
               bootcode.  However, older version of boot code doesn't 
               program MAC address correctly in a certain scenario. UNDI 
               driver v6.8.0 should have fixed this problem. However, 
               serial EEPROM driver has a bug which causes MAC address in 
               the serial EEPROM cannot be read correctly.

      Change: Fixed serial EEPROM driver so that MAC address can be read
              correctly.

      Impact:
               None.

Version 7.0.1 March 11, 2004
----------------------------
   Fixes:
   ========
   1. Problem: EFI core firmware doesn't shutdown EFI driver before it 
      transfers control to the O/S.  Linux driver doesn't bring up the
      chip properly if it's not in unintialized state.

      Change: Added an ExitBootServices event hook so that it issues GRC
      reset to the devices that it's managing.

      Impact: None.

   Enhancements:
   =============
   1. Request:
             Increase support for maximum up to 64 NICs or LOMs.

      Impact:
             None.

Version 7.0.0 August 18, 2003
-----------------------------
   Enhancements:
   =============
   1. Request:
             Improve bit error performance of 5703AX and 5704AX when used
             with long cable lengths.
      Change:
             Program the phy's ADC and Gamma registers to more optimum 
             settings.
      Impact:
             None.

   2. Request:
             Improve Serdes drive levels on 5704s.
      Change:
             Programed the serdes config registers so that SerDes' drive 
             transmission level is 1.2V.

      Impact:
             None. 

Version 6.8.1 July 29, 2003
----------------------------
   Fixes:
   ========
   1. Problem: UNDI driver might indicate a few packets with invalid length
               to upper layer right after second and subsequent driver 
               init/shutdown.
  
      Cause  : After second init, driver indices are not reinitialized.  

      Change: UNDI driver is changed to reinitialize indices.

      Impact:
               None.

Version 6.8.0 July 21, 2003
----------------------------
   Fixes:
   ========
   1. Problem: UNDI driver might use zero MAC address when it's used with 
               older version of boot code.  This will cause UNDI driver to
               fail in network boot.  This should only happen on a certain 
               LOM  applications where WoL is disabled.
  
      Cause  : UNDI driver assumes that MAC address are programmed by the 
               bootcode. However, older version of boot code doesn't program 
               MAC address correctly in a certain scenario.

      Change: If MAC registers contain zero MAC address, UNDI driver will 
              retrieve MAC address from the NVRAM directly.

      Impact:
               None.

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

      Impact:
               None.

Version 6.1.2 May 12, 2003
----------------------------
   Fixes:
   ========
   1. Problem: Driver doesn't pass traffic if the fiber interface is 
               connected to a port that has AUTONEG turned off. (CQ#7781)

      Cause: Fallback mechanism doesn't work when autonegotiation fails 
             and interface doesn't receive configuration change from 
             the link partner.

      Change: Fixed the PHY setup routine so that fallback mechanism 
              works correctly.

      Impact: None.

Version 6.1.1 May 08, 2003
----------------------------
   Fixes:
   ========
   1. Problem: DHCP process intermittently doesn't completely successfully. 

      Cause: This issue is caused by the following reasons:
               * Status block is not updated in a certain race condition. 
               * Link might be completely before base code starts sending 
                 out DHCP request packets.  This causes packets not being
                 sent to DHCP server.

      Change: Changed the UNDI_Initialize API call so that it checks for 
              link up before returning back to the callers when Cable Check 
              is requested.  
              Changed so that UNDI doesn't dynamically turn on and off
              host coalescing block. 

      Impact: None.

   2. Problem: Multicast packets are not filtered correctly.  If 
               RECEIVE_FILTER UNDI API is called with
               PXE_RECEIVE_FILTER_DISABLE is called, the controller
               is mistakenly programmed to operate in promiscuous 
               mode.
 
      Cause  : If RECEIVE_FILTER API is called with PXE_RECEIVE_DISABLE, 
               the driver will receive unwanted packets from the network.  
               This can cause lower performance and packet drops.

      Change:  Changed so that correct filtering is disabled when this 
               API is called.

      Impact:
               None.


   Enhancements:
   =============
   1. Request: Provide proper indication of media presence after UNDI 
               INIITIALIZE calls.  This allows base code to abort PXE
               boot if no cable is attached.

      Change:  Changed the UNDI Initialize API so that it polls for
               link status.

      Impact:
               None.

   2. Request: "Revision Level of Code/Data" in PCI ROM header should 
               contain version of EFI UNDI driver.

      Change:  Enhanced EFIROM.EXE utility to initialize the mentioned
               field with correct UNDI version number.

      Impact:
               None.


Version 6.1.0 May 04, 2003
----------------------------
   Fixes:
   ========
   1. Problem: In some extremely rare situations, 5702/03/04 Copper NICs
               may not link up after a PHY reset.

      Cause: On some 5702/03/04 PHY cores, there is a small probability of
             lock up after a PHY reset.

      Change: Added code to detect PHY lock up after a PHY reset and
              reset again if lock up is detected.

      Impact: The added lock up detection and recovery code affects
              driver reset and link down events where PHY resets are
              performed.

   Enhancements:
   =============
   2. Request: Enhanced to allow users to start diagnostics without specifying
               the child handle.

      Change:  Changed diagnostics upper layer interface to retrieve child handle
               from internal data structure with given controller handler.

      Impact:
               None.

   Enhancements:
   =============
   3. Request: Enhanced to take advantage DUAL ADDRESS that is supported in 
               EFI 1.10.14.61.

      Change:  Changed initializing code to enable DUAL_ADDRESS feature for
               PCI/IO of devices.

      Impact:
               None.


v6.0.2 (03/05/03) - Fixed a problem where register test fails on BCM5705 when
                    no cable is connected. (CQ7153)
                  - Added an interface to export UNDI driver version to 
                    external management software entity. 
                  - Enhanced EFIROM application so that it extracts UNDI driver
                    version from EFI UNDI driver and to put UNDI version 
                    information into EFI ROM header.

v6.0.1 (02/27/03) - Added MAC and PHY loopback feature in addition to 
                    current memory and register test.  Driver transmits 
                    2000 packets with incremental length (from 64 bytes to 
                    1518 bytes) and verifies it can receive all packets 
                    back correctly. (CQ6692)
                 -  Fixed a typo in product description string. (CQ 7085)

v6.0.0 (02/13/03) - Added support for newer version of BCM5705 family.
                  - 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.

v5.0.5 (12/17/02) - Added EBC (EFI Byte Code) support.  See section 
                    "Integration driver with Option ROM" for details.
                  - Fixed a problem where generic banner is displayed 
                    for newer version of BCM5703-based NICs.
                   
v5.0.4 (12/11/02) - Added support for new PCI devices (0x14e4/0x16c7,0x14e4/0x16c6,
                    0x14e4/0x1696).

v5.0.3 (11/26/02) - Enhanced so that version in drivers command now contains
                    UNDI driver version.
                  - Fixed a problem where link monitoring timer is not stopped
                    when driver is shut down.

v5.0.2 (10/03/02) - Second channel of BCM5704 fiber NIC is not detected  
                    in core firmware v1.02. (CQ5627)

v5.0.1 (09/17/02) - Fixed a problem where FTP file download hangs when B5700B2 
                    is used. (CQ5501)
                  - Added BCM5704 Fiber support.

v5.0.0 (09/12/02) - Fixed a problem where MTFTP download fails. (CQ5444)

v3.0.4 (08/28/02) - Added EFI Driver Diagnostics Protocol Support.
                  - Added NII driver version 3.1 support.
                  - Removed support for BCM5705 and BCM5901.

v3.0.3 (08/27/02) - Fixed a problem where link comes up at 100Mbps when WOL
                    is enabled on a certain NICs. (CQ5292)
                  - Fixed a problem where system hangs if the content of 
                    NVRAM is blank or corrupted.

v3.0.2 (08/13/02) - Added support for BCM5705 and BCM5901.
                  - Fixed a problem where driver failes to negotiate link to
                    highest denominitor when it's set from 10/100 to Auto. (CQ5058)

v3.0.1 (07/23/02) - Added EFI Component Name Protocol support.
                  - Added EFI Configuration Protocol support.
                  - Enhanced to comply with EFI 1.1 v0.95.

v3.0.0 (06/19/02) - Fixed a problem where only one channel of BCM5704-based NIC
                    is detected. (CQ4377)
                  - Fixed a problem where PCI-X command register is overwritten.

v2.1.6 (06/07/02) - Fixed a problem where base-code fails to transmit packets if 
                    there is a lot of broadcast background traffic.  

v2.1.5 (04/22/02) - Fixed a problem where driver doesn't work in some PCI-X systems.

v2.1.4 (03/21/02) - Fixed a problem where BCM5700C2 NIC does not work at 
                    if connection is changed from 100Mbps to 1Gbps. (CQ3711)
                  - Added support for different LED configurations.

v2.1.3 (03/20/02) - Fixed a problem where BCM5700C2 NIC does not work at 
                    100Mbps. (CQ3605)
                  - Fixed a problem where no device path found for BCM5700B2.
                    (CQ3586)

v2.1.2 (02/24/02) - Added support for Ethernet WireSpeed feature for 
                    BCM5702/BCM5703 NICs/LOMs.
                  - Added support for NICs with device ID 0x16a6 and 0x16a7.
                  - Added machanism to protect serial EEPROM corruption.

v2.1.1 (02/12/02) - Fixed a banner typo.

v2.1.0 (02/02/02) - Fixed a problem where driver doesn't work in EFI 1.10.54 
                    core firmware environment.

v2.0.5 (11/19/01) - Added description of what slot (PCI or PCI-X) the NIC/LOM is 
                    installed on when it's detected.
                  - Released EFI driver in library format for LOM application.

v2.0.4 (11/16/01) - Added support for EFI core firmware v1.1.
                  - Fixed a problem where performance of TCP/UDP traffic 
                    is intermittently slow.

v2.0.3 (10/29/01) - Built specificially for core firmware V1.02.12.32 and
                    older.  This version of driver doesn't raise/restore
                    priority level as done to work around an issue
                    in SNP module of core firmware v1.02.12.36 Or newer.

v2.0.2 (10/26/01) - Fixed a problem Bond ID is not checked correctly.

v2.0.1 (10/19/01) - Added support for BCM5702 and BCM5703 NICs/LOMs.

v2.0.0 (09/06/01) - Fixed a problem where application (pktsnoop) cannot
                    monitor packet with invalid 802.3 length fields.
                  - Fixed a problem where system intermittently crashes during
                    continous file transfer.
                  - Added Fiber NIC support.

v0.03 (08/31/01)  - Added support for BCM5701.
                  - Fixed problem with loading driver on IA-32 (CQ#2009).
                  - Fixed problem when assigning IP address on IA-32 (CQ#2300).
                  - Fixed pktxmit.efi crashing problem (CQ#2302).
                  - Added a workaround to minimize the race condition on SNP

v0.02 (08/18/01)  - Fixed problem with ping on IA-64 (CQ#1960).

v0.01 (05/14/01)  - First Release. 




