               QLogic 570x/571x Gigabit Ethernet Driver
                      For Solaris 10 for i386 platform

              Copyright 2014 QLogic Corporation
                         All rights reserved.

Version 7.10.4 (Oct 27, 2014)
=============================
Supports: S10u10, S10u11, S11, S11u1

1. Change:      Adjusted rebranding changes as per marketing requirements


Version 7.10.3 (May 30, 2014)
=============================
Supports: S10u10, S10u11, S11, S11u1

1. Change:      Rebranding changes as per marketing requirements
                from Broadcom to QLogic.

2. Problem:	Case 74850  - NICDRV stress load/unload test failed. 
                System panics when MAXQ UDP traffic and plumb/unplumb 
                is run as part of test.
   Cause:       Driver not flushing transmit waitQ properly during 
                unplumb operation.
   Change:	Driver is flushing the transmit waitQ properly during 
                interface unplumb operation.

2. Problem:	Case 73782 - System panics when interface is set 
                with Jumbo MTU and running network traffic.
   Cause:       Driver not setting MTU value consistently.
   Change:      Driver sets MTU value consistently. 

3. Problem:     Case 73781 - The transfer-speed option in bnx.conf not working.
   Change:      The transfer-speed option in bnx.conf is deprecated. 
                Please see manpage of bnx for details. 
   

Version 7.10.1 (Oct 10, 2013)
=============================
Supports: S10u10, S10u11, S11, S11u1

Enhancements:
-------------
 1. Request:    Initial T7.10 release.


Version 7.8.2 (Oct 30, 2012)
============================
Supports: S10u10, S11, S11u1

Fixes:
------
 1. Problem:    Case 575966 - Bug in Solaris installation check script

    Change:     The PKG_INSTALL_ROOT environment variable is now used
                instead of BASEDIR.

    Introduced: Day 1.

    Relevance:  Package installation scripts.

Enhancements
------------
 1. Request:    Installation packages are no longer specific to a Solaris
                Update. The are now only specific to the Solaris version and
                architecture.


Version 7.8.1 (Oct 4, 2012)
===========================

Enhancements:
-------------
 1. Request:    Initial T7.8 release.


Version 7.4.1 (May 03, 2012)
============================

Enhancements:
-------------
 1. Request:    Initial T7.4 release.


Version 7.2.3 (Feb 24, 2012)
============================

Enhancements:
-------------
 1. Request:    Removed 32-bit drivers from Solaris 11 x86 package.

 2. Request:    Added documentation to the readme.txt file on how to remove
                the inbox driver from a fresh install of Solaris.


Version 7.2.2 (Feb 6, 2012)
===========================

Fixes:
------
 1. Problem:    CQ61350 - 5709S link failed with 2.5G speed enabled in Solaris

    Change:     PHY speed capabilities and auto-negotiation was not being set
                properly and advertised.

    Introduced: 7.0.1

    Relevance:  5709S


Version 7.2.1 (14 Nov, 2011)
============================

    Enhancements
    ------------
        1) Change  : Added support for Solaris 11 (x86 and SPARC).


Version 7.0.4 (06 Oct, 2011)
============================

    Enhancements
    ------------
        1) Change  : Added support for Solaris 10 Update 10 (x86 and SPARC).


Version 7.0.3 (12 Jul, 2011)
============================

    Fixes
    -----
        1) Problem : The host page size was not set correctly in the ctx
                     command register.
           Cause :   A 4K page size was hardcoded.
           Change :  The LM_PAGE_BITS define is now used to set the proper
                     page size value in the register.


Version 7.0.2 (11 Jul, 2011)
============================

    Enhancements
    ------------
        1) Change  : Added a new MDB debug module.

    Fixes
    -----
        1) Problem : Rx and Tx traffic not working on SPARC.
           Cause :   Traffic could not be passed on 5708 or 5709(C0). The
                     incorrect structure formats for context memory were
                     not being used. Original SPARC development effort was
                     done on 5709(B2) which somehow worked as the mis-writes
                     still triggered the rx and tx data paths.
           Change :  The proper structure formats for context memory are now
                     used for the SPARC port.


Version 7.0.1 (20 May, 2011)
============================

    Enhancements
    ------------
        1) Change  : Initial 7.0 release.
        2) Change  : Added support for the Brussels GLD property framework.
        2) Change  : Added support for SPARC.


Version 6.4.2 (05 May, 2011)
============================

    Fixes
    -----
        1) Problem : Cont00054932 - [Solaris] bnx: Unable to get Port1 link up
                     when issue "ifconfig -a plumb" 
           Cause :   The forced delay of one second between bringing down and
                     up an interface was not long enough.
           Change :  The delay is now two seconds.


Version 6.4.1 (18 Apr, 2011)
============================

    Enhancements
    ------------
        1) Change  : Initial 6.4 release.


Version 6.0.3 (30 Aug, 2010)
============================

    Fixes
    -----
        1) Problem : Cont00049154 - Solaris10 : Incorrect NIC status
           Cause :   There was a race condition in the code that
                     reports the link status to the stack
        2) Problem : Cont00049322 - Solaris: Some NIC ports doesn't link up on
                     DL360G7+NC373T+NC373F on update8
           Cause :   6.0.2 did not entirely fix the issue.  It was found
                     that under some conditions interrupts were not received.
           Change :  Had to add a short delay after a call to ddi_intr_enable.
                     When "ifconfig -a plumb up" is called the system
                     ultimately does a up/down/up/down/up sequence for each
                     interface and when ddi_intr_disable is called immediately
                     after ddi_intr_enable it can result in interrupts to no
                     longer fire on the interface and requires a reboot to
                     fix the state.
        3) Problem : Cont00049582 - Incorrect numbering in readme.txt
           Change:   updated the text

    Enhancements
    ------------
        1) Change  : Use the ddi_getXX() and ddi_putXX() routines when
                     accessing hardware registers to ensure a consistent view
                     the host and device.


Version 6.0.2 (17 Aug, 2010)
============================

    Fixes
    -----
        1) Problem : CQ49322 - Some NIC ports doesn't link up on
                     DL360G7+NC373T+NC373F on update8 
           Cause :   There was a race condition in the code that
                     reports the link status to the stack.


Version 6.0.1 (21 May, 2010)
============================

    Fixes
    -----
        1) Problem : default MTU now set to 1500, fixed jumboframe
                     and vlan issues.
           Cause :   buffer sizes weren't being allocated properly
                     to account for MAC header overhead w/ vlan tags
           Change :  allocations are now correct
        2) Problem : when MSIX interrupt allocation failed driver
                     fails to attach
           Cause :   code didn't exist to revert down to Fixed
           Change :  driver now reverts to Fixed when MSIX interrupt
                     allocation fails


Version 5.2.3 (23 March, 2010)
==============================

    Enhancements
    ------------
        1) Change  : Reworked interrupt code to no longer use deprecated
                     Solaris interrupt APIs.
        2) Change  : Added support for MSI-X interrupts. MSI-X is now used
                     by default and can be turned off via "disable_msix"
                     inside bnx.conf.  When MSI-X is disabled then Fixed
                     level interrupts are used.
        2) Change  : Added a new "statistics" group to kstat which contains
                     driver version and interrupt information.


Version 5.2.2 (14 December, 2009)
=================================

    Fixes
    -----
        1) Problem : Kernel Panic in the send routine:
                     assertion failed: umpacket->mp == NULL,
           Cause   : The umpacket->mp was not scrubbed properly because
                     the umpacket never went through the
                     bnx_xmit_ring_reclaim() function.
           Change  : After recycling the packet in the TX routine,
                     the packet is now reclaimed before it is being used.


Version 5.2.1 (1 December, 2009)
==================================

    Enhancements
    ------------
        1) Change  : Added support for jumboframes.


Version 4.6.2 (1 December, 2008)
=================================

    Fixes
    -----
        1) Problem : Management firmware could not communicate to the BMC
                     when VLAN are used.  The most common scenario seen
                     is when loading the bnx driver; SoL connections
                     could not be established or are dropped when using
                     VLANs to communicate with the BMC.
           Cause   : Because the driver always kept the VLAN tag in the
                     packet, older firmware could not parse VLAN tagged
                     packets correctly.  Therefore, communication with
                     the BMC could not occur.
           Change  : The driver will strip the VLAN tag if management
                     firmware is running and reinsert when necessary.
                     Only if the firmware advertises that it is capable
                     of handling VLAN tag will the driver enable this
                     feature.

    Enhancements
    ------------
        1) Change  : Added 5716S support


Version 4.6.1 (29 September, 2008)
=================================

    Fixes
    -----
        1) Problem : When the bnx driver is loaded, it is using incorrect
                     values from the bnx.conf file during initialization.
           Cause   : The System software properties are stored as an array of
                     integers, the bnx driver was reading it as an array of
                     bytes.
           Change  : Instead of reading the properties as a byte array,
                     it is now read and interpreted as an array of integers.
    Enhancements
    ------------
        1) Change  : Added 5716 support


Version 4.6.0 (10 September, 2008)
=================================

    Fixes
    -----
        1) Problem : When the bnx driver is loaded, it is using incorrect
                     values from the bnx.conf file during initialization.
           Cause   : The System software properties are stored as an array of
                     integers, the bnx driver was reading it as an array of
                     bytes.
           Change  : Instead of reading the properties as a byte array,
                     it is now read and interpreted as an array of integers.


Version 4.4.5 (28 August, 2008)
=================================

    Fixes
    -----
        1) Problem : The performance of the v4.0 series of the bnx driver
                     was not on par with the v3.5.10 driver.
           Cause   : The driver moved from using GLDv2 to the GLDv3
                     infrastructure.
           Change  : Now utilizing a larger TX double copy threshold.
                     Reworked the TX path so that now we are more
                     aggressive when sending packets: when TX resources
                     are freed, we will send immediately in the same routine.
                     Tighten timer routine by eliminating unnecessary code.


Version 4.4.4 (25 July, 2008)
=================================

    Fixes
    -----
        1) Problem : (CQ35828) Unable to install driver using the DU image
           Cause   : The 5709 PCI ID's were not added to the
                     /etc/driver_aliases files because update_drv was not
                     being called.
           Change  : Updated postinstall scripts to use update_drv to add
                     the new PCI ID's
        2) Problem : (CQ35685) ndd reports incorrect link_duplex status
           Cause   : The meaning of the link_duplex status values were
                     changed with the 4.4.0 driver.
           Change  : Updated readme.txt and release.txt to define the
                     changed values.
        3) Problem : (CQ35937) 5709 is not mentioned in README.txt for
                     BRCMbnx 4.4.2 driver
           Change  : Updated readme to reflect the newly supported hardware.
        4) Problem : (CQ36209) PSTAMP shown as "unknown"
           Cause   : Switch to a new build machine.
           Change  : Assigned a hostname to the new build machine
           Impact  : This will now properly display the package information.

    Enhancements
    ------------
        1) Change  : Eliminated the need for vlan tag stripping.


Version 4.4.3 (26 June, 2008)
=================================

    Fixes
    -----
        1) Problem : Panic seen on Solaris 10 (32-bit)
           Cause   : Out of memory condition
           Change  : Add code to replace the call to a allocb()
                     with a ddi_dma_alloc_handle() and does a double
                     copy in the rx path.
           Impact  : This bug only all QLogic 570x/571x Gigabit
                     Ethernet adapters

        2) Problem : Version 4.4.2 of the Disk Update Diskette is bad
           Cause   : Image was misconfigured
           Change  : Reimage Disk Update Diskette with different media
           Impact  : On Solaris 10 Update 5 runing the update disk



Version 4.4.2 (8 April, 2008)
=================================

    Fixes
    -----
        1) Problem : (CQ34181) Driver fails to get some link events.
           Cause   : Hardware bug.
           Change  : Add code to the driver to check a bit in an
                     alternate phy location to qualify the current link
                     state.
           Impact  : This bug only affects 5706S devices being used in
                     server blades.

    Enhancements:
    -------------
        1) Change  : Added vendor specific branding for the NC382i,
                     NC382T, and NC382m.


Version 4.4.1 (9 January, 2008)
=================================

    Fixes
    -----
        1) Problem : Device intermittently fails to transmit or receive
                     after initialization.  Driver crashes servicing rx
                     packets that do not exist.
           Cause   : The driver did not zero physical memory
                     allocations before handing them over for use.
           Change  : Zero physical memory allocations.
           Impact  : This change only seems to affect the 5709.  All
                     previous devices had no visible problems.

    Enhancements
    ------------
        1) Change  : Implemented tx double copying to close a minimum
                     ethernet frame size security hole.


Version 4.4.0 (7 January, 2008)
=================================

    Enhancements
    ------------
        1) Change  : Added 5709 support.


Version 4.0.4 (11 December, 2007)
=================================

    Fixes
    -----
        1) Problem : (CQ33018) MCTEST Multicast test fails.
           Cause   : The test loads the driver full of multicast
                     addresses to accept and then deletes them all.
                     This process flushed out a bug where the address
                     was being deleted even if its reference count was
                     greater than zero.
           Change  : Only delete multicast table entries if their
                     reference count is zero.
           Impact  : Multicast address accounting works correctly.


Version 4.0.3 (7 December, 2007)
=================================

    Fixes
    -----
        1) Problem : (CQ32960) Driver unable to receive jumbo frames.
           Cause   : Options being set by the hardware configuration
                     were being discarded when the lm_get_dev_info()
                     function initializes its data structures.
           Change  : Move hardware configuration file option assignment
                     to mm_get_user_info() instead.
           Impact  : Hardware configuration options are taken as
                     expected.  This bug only affects MAC level
                     options.  There is no effect to PHY options.

        2) Problem : Running netperf with jumbo frames enabled causes
                     the network device to no longer pass traffic.
           Cause   : Jumbo frames support is a new feature as part of
                     Solaris's GLDv3 API.  The driver will require a
                     special version of firmware for jumbo frames to
                     work correctly, which was unobtainable at the
                     time of this release.
           Change  : Restrict the MTU size to 1500.  Future driver
                     versions will relax this restriction.
           Impact  : Driver will not support jumbo frames.


Version 4.0.2 (5 December, 2007)
=================================

    Fixes
    -----
        1) Problem : IPV6 packets have bad checksums.
           Cause   : The GLD reaches into the driver to determine the
                     offloading capabilities through the
                     bnx_m_getcapab() function.  The driver should set
                     the flags of all the capabilities it supports.
                     Unfortunately, the flags pointer was not
                     initialized before being passed to the driver.
                     The result could be a flags field filled with
                     unwanted settings.
           Change  : Zero out the flags variable before populating it.
           Impact  : IPv6 traffic behaves as expected.

        2) Problem : (CQ30002) Solaris installer stops at 16% when
                     using the DU diskette on Solaris 10 Update 4.
           Cause   : Solaris 10 Update 4 contains a dummy placeholder
                     package for the bnx driver.  Unfortunately, this
                     dummy package prevents the real BRCMbnx package
                     from installing correctly.  The installer behavior
                     noted above is one of the things the administrator
                     will see.
           Change  : Add script to install.sh to detect the dummy
                     package and force the driver disk to overwrite it.
           Impact  : Installer completes as expected.


Version 4.0.1 (29 November, 2007)
=================================

    Fixes
    -----
        1) Problem : Running netperf crashes the machine when setting
                     the message size to 9000.
           Cause   : NULL pointer dereference in the transmit routine.
           Change  : Change the code to check for NULL pointer before
                     dereferencing.
           Impact  : None.

        2) Problem : Changing NDD parameters changes the next lower
                     option instead.
           Cause   : Code that sets up the NDD transactions had an
                     off by one bug.
           Change  : Change the NDD transaction setup routines so that
                     the correct value gets modified.
           Impact  : None.


Version 4.0.0 (27 November, 2007)
=================================

    Fixes
    -----
        1) Problem : (CQ32546 and CQ32374) Link status displays show
                     incorrect link status.
           Cause   : Link status accounting was not as accurate as it
                     should have been.
           Change  : The accounting code has been largely rewritten for
                     the 4.0.0 release.
           Impact  : Link status should now be presented correctly.

        2) Problem : (CQ31773) modinfo command shows incorrect driver
                     version number.
           Cause   : The string presenting the driver banner and version
                     number was truncated.
           Change  : Shorten the banner so that the version number can
                     be fully displayed.
           Impact  : Cosmetic.  The version number shows correctly.

        3) Problem : (CQ30722) ifOperStatus.2 - status is always "down"
                     in IF-MIB.
           Cause   : This is a bug in GLDv2.
           Change  : The driver has been ported to the GLDv3.
           Impact  : The status should now be reported correctly.

        4) Problem : (CQ32494) Some options in the bnx.conf file are
                     not being honored.
           Cause   : Spelling errors in bnx.conf file.  Incorrect
                     spelling of options renders them invisible to the
                     driver.
           Change  : The "Speed" and "Full-duplex" options have been
                     removed. In general, an effort has been made to 
                     convert all to lower case.
           Impact  : All options should be recognized.

    Enhancements
    ------------
        1) Change  : To make the setting 'link_duplex' more intuitive,
                     the meaning of ﻿'link_duplex' value has been changed:

                     Previous meaning:     New meaning:
                       half-duplex: 1        half-duplex: 0
                       full-duplex: 2        full-duplex: 1


Version 3.5.10 (27 August, 2007)
===============================

    Fixes
    -----
        1) Problem : Multiple driver threads could corrupt each other's
                     indirect device accesses.
           Cause   : Accessing the device indirectly is a two register
                     operation process.  It is possible for one driver
                     thread to step on or corrupt the other's accesses
                     by performing it's own accesses in between the
                     other's two register operation.
           Change  : Surround indirect register accesses with a
                     protective mutex.
           Impact  : Indirect register accesses should be corruption
                     free.

        2) Problem : Transmit code locks up on remote end (running bnx
                     driver) when attempting to run ls on a directory
                     with a large file count.
           Cause   : The transmit code makes one attempt to perform
                     scatter gather setup and sets an error flag in
                     the driver if it fails.  The problem is, the
                     failure condition will never be corrected, so any
                     reattempt at transmits will also fail.  This
                     creates an infinite transmit loop that the driver
                     will never recover from.
           Change  : If scatter gather operations fail, call pullupmsg()
                     to bring all the transmit buffers under one
                     virtually contiguous buffer.
           Impact  : Chances of transmit hangs should be drastically
                     reduced.

    Enhancements
    ------------
        1) Change  : The driver version has been increased so that
                     customers know that this driver supercedes any
                     driver SUN might release.


Version 3.5.3 (22 August, 2007)
===============================

    Fixes
    -----
        1) Problem : System "mutex not owned" panics after 350 load /
                     unload iterations.
           Cause   : The system will mutex reenter panic somewhere in
                     the GLD code if the driver attempts to report link
                     while inside the bnx_start() function.  To prevent
                     this, the driver will attempt to acquire its own
                     private gld_mutex when attempting to send a link
                     update.  If this operation fails, the driver
                     "knows" that the problem condition exists and
                     returns early.  The timer will send the link
                     update later.  The code that accomplishes this
                     had a bug where the driver would attempt to
                     release a mutex that it did not own.
           Change  : Fix code so that the driver doesn't release locks
                     it does not own.
           Impact  : The driver should withstand any amount of loading
                     and unloading.


Version 3.5.2 (16 August, 2007)
===============================

    Fixes
    -----
        1) Problem : (CQ30698) System fails to find devices after 1500
                     iterations of load / unload testing.
           Cause   : Multiple memory leaks.
           Change  : Fix or rewrote the code paths that caused the
                     memory leaks.
           Impact  : The driver should withstand any amount of loading
                     and unloading.

    Enhancements
    ------------
        1) Change  : Brought the code up to date with the latest LM
                     code.


Version 3.5.1 (28 June, 2007)
============================
  Fixes
  =====
    1. Problem: Cont00029402 - System crashes when filesystem is filled completely
                and cleared
       Cause:   Durning system boot if the device is not configured, OS will
                call attach and detach() routines. detach() routine releases all
                the resources including the statistic block memory but the
                DMA address of the statistic block is still programmed in the chip.
                So NX2 device continues to DMA the statistic block corrupting the
                memory area which might already been allocated to a different module.
       Change:  In attach() routine, driver just allocates resources without
                initializing the hardware. Hardware will be initialized in
                driver's reset() callback.
       Impact:  none

    2. Problem: Cont00030092 - Solaris: Link up messages are only displayed
                whrn in half duplex
       Cause:   one set of link-up messages was logged to system log and another
                one to console.
       Change:  changes code to log everything in system log
       Impact:  none

    3. Problem: Cont00029104 - Upgrading the Driver from 2.8.5 to 3.0.0
       Cause:   Documentation changes
       Change:  Documentation changes
       Impact:  none

    4. Problem: Cont00029106 - Steps for installing the BNX - II drivers on
                Solaris 10 not oulined
       Cause:   Documentation changes
       Change:  Documentation changes
       Impact:  none

    5. Problem: Cont00029504 - Two different versions for the same DU image
       Cause:   one build script was using package version instead of driver version
       Change:  updated script to include driver version
       Impact:  none

  Enhancements
  ============
        None.

Version 3.5.0 (12 May, 2007)
============================
  Fixes
  =====
    1. Problem: Cont00029374: DL360 G5 (NC373i) has multicast addr limit of
                64 under Solaris attempted on Solaris 10 update 1
       Cause:   Driver was enforcing a limit of 64 multicast entries
       Change:  UM driver module was modified to remove 64 entries limit and
                to manage hashed buckets of active multicast addresses
       Impact:  none

  Enhancements
  ============
        None.

Version 3.4.1 (29 Apr, 2007)
============================
  Fixes
  =====
    1. Problem: customer reported system crash when 3 instances of 'rsync' is
                attempted on Solaris 10 update 1
       Cause:   dma handle was incorrectly freed in um_prepare_send_desc() instead
                of just returning it to free list. In the design dma handles are
                allocated during driver load and freed when the driver in unloaded.
       Change:  removed call to ddi_dma_free_handle()
       Impact:  should resolve system crash when multiple 'rsync' sessions are run
                in parallel

    2. Problem: Cont00029102 : Corrections in Readme.txt file
       Cause:   Readme.txt was incorrectly refering to bnx as bnx2
       Change:  changed BRCMbnx2 to BRCMbnx and 'bnx2[instance number]' to
                'bnx[instance number]'
       Impact:  None

  Enhancements
  ============
        None.

Version 3.4.0 (03 Apr, 2007)
============================
  Fixes
  =====
    1. Problem:
                1. panic during system reboot after doing "pkgadd -d /BRCMbnx.pkg"
                2. bnx 32bit driver can't recieve data (SUN ID #6470556)
                3. bge: doesn't work with the bnx driver on the LS41 in the
                        IBM BladeCenter (SUN ID #6495236)
                4. System panic in bx2_intr on bnx 32-bit driver (SUN ID #6520594)
                5. kernel heap corruption detected on debug kernel on LS41 (SUN ID #6532772)
       Cause:   TX BD and RX BD queue was not flushed to memory before the doorbell
                is rung.
       Change:  Added two api call from LM to MM module to flush cache for TX BD and
                RX BD queue memory

    2. Problem: Assertion failed in mutex_init while bnx driver attached on
                snv version (SUN bug ID #6409544)
       Cause:   when calling mutex_init(), we should pass the 4th parameter with the
                value of the ddi_iblock_cookie instead of the address of the cookie.
       Change:  changed code to reflect this

    3. Problem: Found wrong ifspeed value from kstat output (SUN Id #6458851)
       Cause:   In drive speed is represented in units of mbps (mega bits per second)
                while Sun expects it to be bps (bits per second).
       Change:  changed code to reflect this

    4. Problem: bnx driver cannot receive packets from multiple multicast groups
       Cause:   Bug in LM module while updating the address table when an entry which
                is not the last one is deleted. Instead of coping the last entry into
                newly created hole, one entry next to last was copied
       Change:  changed code to take care of this

  Enhancements
  ============
        None.

Version 3.0.0 (12 Dec, 2006)
============================
  Fixes
  =====
    1. Problem: bnx port rx hung while running small packet network traffic (SUN bug Id #6458372)
       Cause:   This was a synchonization issue showing up in 4 processor systems. A DMA handle
                was allocated twice and was causing system to crash
       Change:  Fixed synchonization issue

    2. Problem: System paniced in bx2_detach (SUN id #6458773)
       Cause:   was not able reproduce, even in Sun PQA labs
       Change:  NA

    3. Problem: Found wrong ifspeed value from kstat output (SUN Id #6458851)
       Cause:   In drive speed is represented in units of mbps (mega bits per second)
                while Sun expects it to be bps (bits per second).
       Change:  return


  Enhancements
  ============
        None.


Version 2.8.5 (26 July, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00026026 - Flow control is off on fiber interface when connected
                        to forced or auto switch ports
       Cause:   This is not a bug. As the link partner is not advertising flow control
                capabilites, flow control is turned off. Mean while during code reviews
                found some issue with usage of user configurable propery 'adv_pause_cap'
                and device struct member 'param_adv_tx_rx_pause' and is taken care now.
       Change:  massaged code to handle 'param_adv_tx_rx_pause' and 'adv_pause_cap' correctly

  Enhancements
  ============
        Changed user configurable parameter 'adv_pause_cap' description, this parameter
        was expanded from boolean variable to numberical to support 5 different modes i.e.
        None, Tx only, Rx only, both Tx & RX and auto modes

Version 2.8.4 (21 July, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00025962 - 5706S will not fall back when configured as autoneg and
                connected to forced switch port.
       Cause:   feature was not supported
       Change:  Added support for link fallback

    2. Problem: Cont00025940 - Notice "_fini(): mod_remove() failed rc=16" is seen after
                adding the 2.8.3 BRCMbnx.pkg
       Cause:   Driver unload is expected to fail if an interface (bnx#) is active (plumbed).
                So this debug message is not required.
       Change:  Removed this unwanted debug message


  Enhancements
  ============
        Removed some stray debug messages when driver hits low transit or receive resources.
        These temporary condition can happen time to time under heavy traffic conditions.

Version 2.8.3 (06 July, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00025692 - SOL10 system with 2.8.2 driver failed to attach second NIC
       Cause:   Per-device instance structure was not freed in detach() routine. This caused
                ddi_soft_state_zalloc() to fail in subsequent attach() call.
       Change:  Per-device instance structure is freed back to the system control by calling
                ddi_soft_state_free().

  Enhancements
  ============
        None.


Version 2.8.2 (June 30, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00025640 - Solaris 10 system will panic and reboot when using
                ndd command to set speed.
       Cause:   Forced PHY interrupt processing after reconfiguring speed caused
                deadlock read/write lock (nested) in GLD. This lock is held by GLD
                when it called driver's IOCTL routine to change speed.
       Change:  Moved lm_service_phy_int() from um_setup_phy() routines and it's up to
                caller now to issue forced phy interrupt or not. In case of speed
                re-configure, driver will not force phy intr process in IOCTL thread
                but let the chip generate an interrupt

  Enhancements
  ============
        None.


Version 2.8.1 (June 29, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00025616 - Solaris system stopped load and unload driver
                after 275 iterations
       Cause:   memory leak, receive buffers not freed in the detach thread
       Change:  This bug was introduced while adding support for
                DRV_MSG_CODE_UNLOAD_LNK_DN message. Earlier posted RX buffer were
                reclaimed when the driver is unloaded and this used to work fine.
                But with the new requirement to power down link when the last active
                interface is unplumbed, partial clean-up and chip reset is done in
                driver's stop() routine. In this process all the RX buffers are
                reclaimed form the chip, 'active_descq' and moved to 'free_descq'.
                This works fine if the interface is re-plumbed, start() call will
                reset the chip and calls lm_post_buffers() to post buffers in 'free_descq'
                to asic and move them to 'active_descq'. But on the other hand when the
                driver is unloaded, detach() routine will free all receive buffers in
                'active_descq', where as this queue was earlier emptied out by the stop()
                routine. so non of the receive buffers are freed.
                The fix is to look at both the queues and free all receive buffers.

    1. Problem: Cont00025612 - Solaris system rebooted with new 2.8.0 sol driver if
                received heavy data while unloading driver
       Cause:   race condition b/w interrupt thread and the driver shutdown ioctl thread
       change:  Issue is a typical case where thousands of packets are received while the
                driver is unloaded. Driver unload thread itself being in bh context (ioctl)
                could be running in parallel with the driver ISR. While the interrupt thread
                is consuming these received packets one by one and notifying the net stack,
                detach thread moved all the receive buffers from 'active_descq' to 'free_descq'.
                This caused the crash. Fix is to implement synchronization b/w isr and
                the shutdown thread. Shutdown thread will set in_shutdown' flags and waits for
                ISR to complete (if the isr is pending or processing). On the other hand isr
                will probe 'in_shutdown' flags and immediately bails out if it is '1'.

  Enhancements
  ============
        None.

Version 2.8.0 (June 28, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00025510 - Need new driver to deposit a new code
                        DRV_MSG_CODE_UNLOAD_LNK_DN to shut down link
       Cause:   Enhancement request
       Change:  Added support to deposit this newly created message code
                if driver finds firmware with revision > 1.9.3. Driver
                will continue to deposit SHUTDOWM message for older f/w

  Enhancements
  ============
        Merged LM files to bring in changes made to support Xinan and
        the bug fixes.


Version 1.18.0 (June 23, 2006)
============================
  Fixes
  =====
        Fixed Solaris 9 crash issue with 1.17

  Enhancements
  ============
        None

Version 1.17.0 (June 22, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00025060 - modinfo command does not show version of installed bnx driver.
       Cause:   driver product banner was too long and 'modinfo' was displaying only first
                32 bytes.
       Change:  Separated module info message from product banner and kept newly defined
                module info message short so that driver version string falls within
                first 32 bytes.

    2. Problem: Cont00025234 - Similar of 22728 , error messages popped up when running
                chariot with 50 pairs against SOL10 driver ver 1.16
       Cause:   There are just warning messages and inappropriate words raised the alarm
       Change:  removed the assert condition and the message

    3. Problem: Cont00025201 - No NIC info were displayed after driver was loaded with
                BNX driver on SOL system
       Cause:   feature not supported
       Change:  Added support to display following NIC info -
                1) device instance
                2) device type (BCM5706, BCM5708, etc')
                3) Firmware revision Id

    4. Problem: Cont00025196 - SOL system will reboot if received data while loading and
                        unloading driver.
       Cause:   Race condition under following condition was causing system to crash -
                our interrupt line is shared with other device and shared intr line
                is asserted after driver reclaims Rx buffers in shutdown routine.
       Change:  Driver now sets 'in_shutdown' flag before starting the driver cleanup
                process and isr will not claim any more interrupts if it sees this
                flag set. For sure this interrupt is not generated by our device as the OS
                invokes driver's stop() routine to disable device interrupts before calling
                the shutdown routine. Please refer to changes.txt for further details


  Enhancements
  ============
        Added VLAN tagging support GLDv2 based driver and also suppressed flow control
        info when link is configured to operate in half duplex mode.


Version 1.16.0 (May 05, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00023572 - No ndd command instruction in readme text for Teton
       Cause:   Description related to parameters configurable using 'ndd' command
                was missing.
       Change:  Added this section in readme.txt file

  Enhancements
  ============
        None.


Version 1.15.0 (May 04, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00024371 : Starting with SOLbnx ver12 installation into
                SOL9 system will be successful but driver failed to attach
       Cause:   For binary backward compatibility with Solaris 9, certain function
                added in later version need to be guarded with '#pragma weak', but
                as the implementation was not complete, driver failed with system
                crash on one old 32-bit HP (previously Compaq) server.
       Change:  Driver code was changed to handle functions which are not defined
                in Solaris 9 such as memmove(), hcksum_retrieve(), hcksum_assoc(),
                gld_recv_tagged() and gld_linkstate() properly.

  Enhancements
  ============
        None.

Version 1.14.0 (April 03, 2006)
============================
  Fixes
  =====
        Fixed a issue related to transmit packet resulting in more that 16 fragments.
        LM driver is tested to work fine up to 16 chained transmit BD's. Once this condition
        is detected, driver will copy packet contents to a bounce buffer before transmitting
        it out.

  Enhancements
  ============
        None.

Version 1.13.0 (Mar 30, 2006)
============================
  Fixes
  =====
        None.

  Enhancements
  ============
        9KB jumbo supported added. This required driver and firmware changes to
        handle multiple BD per receive packet buffer.

Version 1.12.0 (Mar 24, 2006)
============================
  Fixes
  =====
        None.

  Enhancements
  ============
        64-bit and 32-it binaries are packaged in a single BRCMbnx.pkg file

Version 1.11.0 (Mar 21, 2006)
============================
  Fixes
  =====
        None.

  Enhancements
  ============
        Flow control was always disabled with earlier drivers, so added code to
        process configuration property, "Flow"  and correspondingly update
        LM module data structures.

Version 1.10.0 (Mar 21, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00023957 : When link is up please provide duplex and flowcontrol
                statuses along with link up message
       Cause:   Link status change notification message was only giving out information
                regarding link status, i.e. UP or DOWN
       Change:  Changed Link DOWM/UP messages to include more informantion such as
                media type (Copper or Fiber), speed (10/100/1000/2500 Mbps),
                duplex mode (Full or Half) and flow control type (TX & RX).

  Enhancements
  ============
        None.


Version 1.09.0 (Mar 20, 2006)
============================
  Fixes
  =====
        None.

  Enhancements
  ============
        Ported driver to support GLDv3. With GLDv3 interface, driver is able to saturate 2.5G pipe
        in both Tx as well Rx directions. Also was able to validate VLAN feature with this GLDv3 driver
        on Solaris 10 update1 operating system. Jumbo frame code was validated and currently maximum
        of 3800 byte jumbo frame is supported.

Version 1.8.0 (Mar 06, 2006)
============================
  Fixes
  =====
        None.

  Enhancements
  ============
        Performance optimizations was made to mrch towards 2.5G goal. Current numbers using
        'netperf' is 2.1G for transmits and 1.55G for receive. Also one another bug related
        to soft interrupt handler race codition was fixed.

Version 1.7.0 (Feb 15, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00023292 : ifconfig -a caused system to generate error message
                then core dumped with SOL driver 1.6.0 64bit
       Cause:   unsupported IOCTL was not correctly responded with miocack() instead
                of miocnak(). This caused application to think IOCTL completed successfully,
                and an assert case triggered while parsing the reponse.
       Change:  Unhandled ioctls are properly returned with type 'M_IOCNAK' and additional
                error code by calling miocnak().

  Enhancements
  ============
        Added code to support VLAN, but it is untested.

Version 1.6.0 (Feb 08, 2006)
============================
  Fixes
  =====
        None.

  Enhancements
  ============
        Added provision for admin to enable selective auto negotiation by specifying
        'adv_autoneg_cap' and one of 'adv_10???dx_cap' parameters.


Version 1.5.0 (Feb 07, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00022723 : Ndd -set command is not supported with SOL 1.1.0
       Cause:   'ndd' command processing was not supported.
       Change:  'ndd' command support was added based on bge driver specifications.
                The parameter set is different than the ones in bcme driver, please
                check bnx.conf and readme.txt for the updated parameter list and usage.

  Enhancements
  ============
        None

Version 1.4.0 (Jan 24, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00022780 : Ping packet has source Mac addr =zero with SOL 1.2.0 64bit
       Cause:   64 bit address was not handled properly.
       Change:  issue was fixed by proper handling of transmit buffer address and couple
                of issues in receive path were also identified and fixed.

  Enhancements
  ============
        None


Version 1.3.0 (Jan 13, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00022728 : Error message popped up after 1/2 hour of stress
                test with Chariot
       Cause:   Resource leak was causing system hang after a while.
       Change:  Cleaned up Tx DMA handle allocation and freeing module.

  Enhancements
  ============
        TCP/IP checksum offload is enabled in this driver release.

Version 1.2.0 (Jan 12, 2006)
============================
  Fixes
  =====
    1. Problem: Cont00022722 : System hung after driver load unload ~200 iterations.
       Cause:   There was caused because of resource leak, certain memory and dma handles
                were not freed properly.
       Change:  During driver unload all resouces are freed. Instrumentation code to
                track each allocation and freeing is also added for future use.

  Enhancements
  ============
        This release also includes 64 bit driver.

Version 1.1.0 (Jan 09, 2006)
============================
    1. Problem: Cont00022713 : Unable to  plumb bnx port after a reboot with driver
                already installed
       Cause:   There was a syntax error in postinstall script which was causing
                driver install package to wrongly update /etc/driver_aliases file.
       Change:  postinstall script was updated to include necessary change

    2. Problem: Cont00022715 : SOL driver ver 1.0.0 does not recognize 5708 Nic
       Cause:   5708 device ID was not commented out from the list of supported device
       Change:  5708 ID is included in the supported device ID list



Version 1.0.0 (Jan 09, 2006)
============================
                Initial release. Following are not currently supported -
        jumbo frame, checksum offload & vlan tagging. Also man pages needs
        to be updated with relevant information on QLogic 570x/571x driver.
