                              Release Notes
                QLogic bnx2 Gigabit Ethernet driver For VMware ESX

                          QLogic Corporation

               Copyright (c) 2015 QLogic Corporation
                           All rights reserved

bnx2 2.2.6b.[v50,v55,v60].2 (Nov 24, 2016)
===========================
   Fixes
   -----
   Problem: Cont00085737 - BL460c G7 with NC382M PSOD after upgrading to ESXi 6.0 U1.

   Change: Don't revert BNX2_PORT_FEATURE_ASF_ENABLED setting and remove BNX2_CONDITION_PM_STATE_UNPREP
	   workaround. 

   Impact: Reboot/shutdown.

bnx2 2.2.6b.[v50,v55,v60].1 (Oct 21, 2016)
===========================

   1. Change:	Changed driver version to sync from other components.

bnx2 2.2.6a.[v50,v55,v60].4 (Feb 29, 2016)
===========================
   Fixes
   -----
   Reverting the last change related to spin lock as there are still corner case
   timing conditions that are not understood.

bnx2 2.2.6a.[v50,v55,v60].3 (Feb 08, 2016)
===========================
   Fixes
   -----
   Problem: Cont00085365-QLogic 5709 - Network Disconnects after driver/firmware 
			upgrade - Timeout free NetQ RX Queue

   Change: False invalid detection may happen due to race condition. Protect tx ring
		   with spinlock for proper synchronization.
  
   Impact: Tx path. 

   Enhancements
   ------------
   1. Add module parameter detect_tx_invalid_index & reset_if_invalid_index
      to control the invalid index workaround.

bnx2 2.2.6a.[v50,v55,v60].2 (Dec 09, 2015)
===========================
   Fixes
   -----
   Problem: Incorrect indices being printed in case of invalid index/NULL skb detection.

   Change: Use a copy of indices in local variable.

   Impact: Only when invalid index problem detected.

bnx2 2.2.6a.[v50,v55,v60].1 (Sep 28, 2015)
===========================
   Fixes
   -----
   1. Changed driver version from 5k to 6a for OEM Project.

bnx2 2.2.5k.[v50,v55,v60].1 (Jul 29, 2015)
===========================
   Fixes
   -----
   1. Changed driver version from 5j to 5k for OEM Project.

bnx2 2.2.5j.[v50,v55,v60].3 (Jul 17, 2015)
===========================
   Fixes
   -----
   1. Change:	Changed driver version to sync from other components.

bnx2 2.2.5j.[v50,v55,v60].2 (May 27, 2015)
===========================
   Fixes
   -----
   1. Problem:	Cont00078749 : down a port on nc382m, PSOD on shutdown of host. 

	  Change:	Fix for this issue was already present but not taking effect due to the
				check if (!bp->fw_last_msg). Removed this check.

	  Impact:	5709 devices Only.

bnx2 2.2.5j.[v50,v55,v60].1 (Apr 06, 2015)
===========================
   Fixes
   -----
   1. Change:	Changed driver version from 5i to 5j for OEM Project.

   2. Problem:	(PR1403038) : vmklnx_bnx2 heap, out of memory. 
	  Change:	Updated max heap size from 128 MB to 256 MB for ESXi 6.0 only.
	  Impact:	ESXi 6.0 Only.

bnx2 2.2.5i.[v50,v55].1 (Feb 24, 2015)
===========================
   Fixes
   -----
   1. Changed driver version from 5h to 5i for OEM Project.

   2. Problem:  (PR1360870) : PSOD due to invlaid hw tx cons index. 

      Change:   Added logic to check for Null skb and invalid indices which doesn't solve
                the actual problem but at least avoids the crash. 

bnx2 2.2.5h.[v50,v55].1 (Jan 12, 2015)
===========================
   Fixes
   -----
   1. Changed driver version from 5g to 5h for OEM Project.

bnx2 2.2.5g.[v50,v55].2 (Nov 21, 2014)
===========================
   Fixes
   -----
 1. Problem:    Cont00076357: Rebranding- Adapter device name show Broadcom name

    Change:     Corrected vendor name to get expected behavior.

 2. Problem:    Cont00076639: Rebranding- Driver modules namespace field shown "Broadcom" wording.

    Change:     Corrected the namespace.

bnx2 2.2.5g.[v50,v55].1 (Oct 28, 2014)
===========================
   Fixes
   -----
   1. Changed driver version 5f to 5g for OEM Project.

bnx2 2.2.5f.[v50,v55].9 (Oct 17, 2014)
===========================
   Fixes
   -----
   1. Rebranded from Broadcom to QLogic.

bnx2 2.2.5f.[v50,v55].8 (Oct 14, 2014)
===========================
   Fixes
   -----
   1. Problem: (CQ76037) : Excessive logging of bnx2 driver ioctl calls in VMware vmkernel.log.

        ESXi uses 'verbose' as default logging level which causes to print debug level
        logs even it is not requested.

      Solution: Added a new debug print DP which displays debug logs only if enabled.

bnx2 2.2.5f.[v50,v55].7 (Sept 17, 2014)
===========================
   Fixes
   -----
   1. Problem: (CQ74780) : Unable to Create iSCSI Session With Jumbo Frames Enabled.

		The net queue change made as part of the 2.2.4f release
		caused a regression which breaks iSCSI functionality when
		MTU set to 9000. This patch was reverted in the previous build.

      Solution: Reapply the net queue patch with fix for iscsi issue.

bnx2 2.2.5f.[v50,v55].6 (July 15, 2014)
===========================
   Fixes
   -----
   1. Problem: The net queue change made as part of the 2.2.4f release 
	caused a regression which breaks iSCSI functionality when 
	MTU set to 9000.

      Solution: Revert the net queue change.

bnx2 2.2.5x (June 23, 2014)
===========================
   Fixes
   -----
   1. Problem: (CQ73609): esx5.x:FW UPG: Failed to restore NVRAM image on 5709

      Cause: Missing break in the switch-case, which was causing the register read
			 values to be overwritten.

      Change: Added required "break" in switch case.

      Impact: Only the applications which make use of private ioctls. 
              No data path impact.

	2. Problem: VMware PR#1238347 - bnx2 out of heap memory

		Cause: The bnx2 driver heap is getting exhausted.

		Change: Changed Min heap size from 4MB to 8MB and max heap size from 64MB to 96MB.

		Impact: ESX only.

bnx2 2.2.5f (Apr. 10, 2014)
============================

    1. Problem: (PR1120499) - The Uplink Port (bnx2) on an ESXi 5.5 host
                flaps when connected to a NIOC configured VDS. If NIOC
                on VDs is disabled, link flap stops.

       Cause:   For a NIOC configured machine, the setting of the 
		coalecse settings are used to control the I/O traffic. 
		Everytime coalecse settings are applied the chip is reset.
		On a remote PHY configuration, if the chip is reset the 
		PHY is also reset causing the link to flap.

       Change:  Apply the coalescing settings, without resetting the 
		chip and PHY.

       Impact:  ESX only

cnic 2.5.19b (Mar 05, 2014)
============================
   Enhancements
   ------------
   1. Change: Add support for FCoE in UFP mode according to the UFP HSI.
              The support is transparent to bnx2fc.

      Impact: FCoE in UFP mode only.

package 2.710.10 (Feb 25, 2013)
===============================
   Fixes
   -----
   1. Problem: Package does not compile on newer kernels

      Cause: kernel compatibility issue.

      Change: Added new CFLAGS from bnx2x Makefile for bnx2x_compat.h.

      Impact: Newer distributions such as RHEL7.

bnx2 2.2.5f (Feb 20, 2014)
===========================
   Fixes
   -----
   1. Problem: (CQ72407) "shutdown -h now" causes NMI on 5709 in some scenarios.

      Cause: If the function has not been brought up (ifup), system shutdown
             will cause a WAIT3 and D3 sequence without prior chip reset.
             This may cause the firmware to power down the PHY which will
             cause the function to become unresponsive to MMIO reads.  The
             CPU will timeout and NMI as a result.

      Change: Added some logic to tell firmware to skip the PHY power down.

      Impact: 5709 only.  Only ifdown and system shutdown sequences are
              affected.  No run-time impact.

bnx2 2.2.5e (Feb 05, 2014)
===========================
   Enhancements
   ------------
   1. Change: Indication if the driver is beta or release in a printk
              upon firmware dump.

      Impact: ESX only.

cnic 2.5.18d (Feb 05, 2014)
============================
   Fixes
   -----
   1. Problem: (CQ72694) Crash in bnx2x_cnic_notify() when getting iSCSI
               statistics.

      Cause: Calling bnx2i_get_stats() after bnx2i has unregistered the device.

      Change: cnic should use the per device RCU protected cp->ulp_ops[] when
              making the upcall to get statistics.  It was incorrectly
              using the global cnic_ulp_tbl which is always valid even if
              individual devices have been unregistered.

      Impact: iSCSI and FCoE

bnx2 2.2.5d (Jan 14, 2014)
===========================
   Fixes
   -----
   1. Problem: (CQ71941) Kernel panic when loading bnx2 driver on RHEL6.5 with
               inbox cnic driver loaded.

      Cause: Incompatibility with inbox cnic driver.

      Change: Added padding in bnx2 structure so that the inbox cnic driver
              will always detect NULL in the cnic_probe field.

      Impact: RHEL6.5 and newer kernels (SLES11SP3 is not affected)

bnx2 2.2.5c (Jan 06, 2014)
===========================
   Enhancements
   ------------
   1. Change: Added ability to read PCI config registers and indirect memory
              via the ESX private IOCTL.

      Impact: bnx2 ESX only.

   2. Change: Add reporting of MDI/MDIX status to ethtool.

      Impact: Copper devices only.

bnx2 2.2.5b (Nov 18, 2013)
===========================
   Fixes
   -----
   1. Problem: (CQ71793) 5709 sometimes does not link up in 100Mbps forced
               speed.

      Cause: PHY advertisement register needs to be set to 0 when speed is
             forced.  The default advertisement register value is 10 Mbps
             and it will not link up when the speed is 100 Mbps.

      Change: Set advertisement register to 0 when speed is forced.

      Impact: 5709C forced speed.

bnx2 2.2.4g (Nov 07, 2013)
===========================
   Fixes
   -----
   1. Problem: PHY loopback test fails when set to 100Mbps on 5708 Copper.

      Cause: Regression caused by enabling auto-MDIX (PHY reg 0x18 shadow 7
             bit 9).

      Change: Disable it on 5708.

      Impact: 5708 only.

bnx2 2.2.4f (Oct 29, 2013)
===========================
   Fixes
   -----
   1. Problem: Netqueue didn't get stop and re-initialized properly during
               reset task, change coalece setting, and self test operations.

      Cause:   Normal Netqueue stop and re-initialized operations weren't
               executed while the device went through a full reset.

      change:  Added proper Netqueue stop/start operations in the above
               code paths.

      Impact:  ESX only.

cnic 2.5.18c (Oct 29, 2013)
============================
   Enhancements
   ------------
   1. Change: Add signature to the iSCSI TX doorbell to prevent iscsiuio
              from getting the wrong value when using older kernel
              drivers.

      Impact: bnx2x iSCSI only.

bnx2 2.2.4e (Oct 23, 2013)
============================
   Enhancements
   ------------
   1. Change: (CQ69514) Enable auto-MDIX when autoneg is disabled by
              setting copper PHY register 0x18 shadow 7 bit 9.

      Impact: All bnx2 copper devices.

   2. Change: Display driver version in vmkernel.log during ESX fw dump.

      Impact: ESX only.

package 2.78.33 (Sept 23, 2013)
===============================
   Fixes
   -----
   1. Problem: Package does not compile on Xen Server 6.2

      Cause: kernel compatibility issue.

      Change: Added new CFLAGS from bnx2x Makefile for bnx2x_compat.h.

      Impact: All distributions.  These fixes are only compatible with bnx2x
              1.78.56 and newer.

bnx2 2.2.4d (Sept 12, 2013)
============================
   Fixes
   -----
   1. Problem: cnic irq failed to run after esxcli network nic down/up
               event.

      Cause:   esxcli network nic down/up event causes bnx2 driver go
	       through bnx2_close and bnx2_open. The sequence of events
               will re-allocate status block memory and the new status
               block memory address is not communicated to cnic after
               bnx2_open.

      Impact:  bnx2 ESX only. 

cnic 2.5.18b (Sept 12, 2013)
============================
   Fixes
   -----
   1. Problem: iSCSI does not work with bnx2x 1.78.52.

      Cause: bnx2x doorbell change not compatible with existing iscsiuio.

      Change: Pass modified iSCSI CID to iscsiuio for backwards
              compatibility.

      Impact: bnx2x iSCSI.

   2. Problem: Panic in cnic after ifdown/ifup bnx2x iSCSI device.

      Cause: Accessing uninitialized FCoE EQ.  Bug introduced in 2.5.17c
             which started using bnx2x NO_FCOE macro.  cnic did not
             consistently use NO_FCOE, causing FCoE EQ to be accessed
             by mistake.

      Change: Use NO_FCOE macro consistently in cnic code.

      Impact: FCoE.

bnx2 2.2.4c (Aug 30, 2013)
============================
   Enhancements
   ------------
   1. Change: Fix compile errors see on ESX
              *  struct chip_core_dmp definition conflicts with bnx2x,
                 scoped this struct to have a bnx2 prefix
              *  Compiled FW dump for ESX5.5

      Impact: bnx2 ESX only.

cnic 2.5.17c (Aug 30, 2013)
============================
   Fixes
   -----
   1. Problem: cnic crash when shutting down 57811 device.

      Cause: 57811 Chip ID not reconized by cnic.

      Change: Re-structured code to use common bnx2x macros for Chip ID,
              port ID, pfid.

      Impact: iSCSI and FCoE on all bnx2x devices.

bnx2 2.2.4b (Aug 12, 2013)
============================
   Fixes
   -----
   1. Problem: CQ70286 IOVP: PSOD while executing NIC up/down command using
               esxcli.

      Cause:  New bnx2_free_irq() also disable MSIX/MSI on the device during
              bnx2_close.  When bnx2_open is called,  driver attempt to
              get INTA interrupt instead of MSIX/MSI interrupt.

      Change: Don't disable MSIX/MSI on the device upon close.

      Impact: ESX only.

   2. Problem: WoL does not work during suspend if device is not up.

      Cause: WoL setup skipped in bnx2_suspend() if device is not up.

      Change: Always setup WoL in bnx2_suspend().

      Impact: bnx2 suspend.

   Enhancements
   ------------
   1. Change: Update 5709 firmware to 6.2.1.c to include mechanism to
              flush the iscsi OOO ring to silence some error messages
              about stale hardware index.

      Impact: bnx2 iSCSI.

cnic 2.5.17b (Aug 12, 2013)
============================
   Enhancements
   ------------
   1. Change: Improved iSCSI license fix implemented in cnic 2.5.16j.

      Impact: iSCSI on these bnx2x devices where the iSCSI license can only be
              fully determined after firmware is loaded.

   2. Change: Changes to match the new 5709 6.2.1.c firmware to flush the
              iSCSI OOO ring.

      Impact: 5709 iSCSI.

bnx2 2.2.3t (July 23, 2013)
============================
   Fixes
   -----
   1. Problem: CQ70262 IVOP: PSOD HeavyIOChangeMTU test on 5709 card.
 
      Cause: During ring size change, bnx2_free_irq() was called without
             checking reset_irq flag. 

      Change: Don't call bnx2_free_irq() if reset_irq flag is false.

      Impact: ESX only.

   2. Problem: (CQ69619) ethtool NVRAM operations fail when device is down.

      Cause: Driver checks and prevents NVRAM operations when device is down.

      Change: Remove the check.  The driver now stays in D0 power state when
              the device is down and NVRAM operations are possible.

      Impact: ethtool -e|-E

cnic 2.5.16j (July 23, 2013)
=============================
   Fixes
   -----
   1. Problem: (RHEL BZ 759217) System hangs when attempting iSCSI connections
               on 57711E.

      Cause: iSCSI license changes from supported to unsupported between
             bnx2x probe and bnx2x open.  bnx2i is unaware that the device
             does not support iSCSI and attempts to do offload which never
             completes.  The recent change to eliminate symbol_get() to
             obtain bnx2x_cnic_probe() exposed the problem.

      Change: Check iSCSI license again during ->drv_register_cnic().  If
              there is no iSCSI license, skip ->ulp_start().

      Impact: iSCSI on these bnx2x devices where the iSCSI license can only be
              fully determined after firmware is loaded.

bnx2 2.2.3s (June 27, 2013)
============================
   Fixes
   -----
   1. Problem: PCI shutdown function does not work on ESX. 

      Cause: system_state and SYSTEM_POWER_OFF not defined.

      Change: Added compatibility code.

      Impact: ESX only.

bnx2 2.2.3r (June 27, 2013)
============================
   Enhancements
   ------------
   1. Change: (CQ68271, 68277) In order to support ethtool NVRAM operations
              when the device is down, the following changes were made:

                  - converted to use new WoL and PM kernel APIs
                  - removed power state changes during open and close
                  - added pci shutdown function to setup WoL during shutdown
                  - converted to new style suspend/resume driver APIs

      Impact: Everything related to WoL, shutdown, suspend, resume.  Because
              of the significant changes, the system should be rebooted after
              running "make install" for the new driver.  Without reboot,
              the new driver may not work as it is not aware that the older
              driver has put the device into D3hot state.

bnx2 2.2.3q (May 24, 2013)
============================
   Enhancements
   ------------
   1. Change: Simplified compatibility code for driver section macros,
              __devinit, __devexit, etc.

      Impact: None.

bnx2 2.2.3p (May 23, 2013)
============================
   Fixes
   -----
   1. Problem: Bootcode firmware may not detect new message from driver. 
               (VMWare reported issue)

      Cause: The initial sequence number may not be unique enough.

      Change: Read from the firmware mailbox and add one to it as the initial
              sequence number.

      Impact: All devices.

   Enhancements
   ------------
   1. Change: Made changes to compile on the latest 3.x kernels.

      Impact: All.

cnic 2.5.16i (May 23, 2013)
=============================
   Fixes
   -----
   1. Problem: (CQ69177) MTU change causes PSOD at bnx2x_drv_ctl

      Cause:  The OOO handler was falsely triggered to handle OOO tx
              completions even when bnx2x has failed to allocate resources
              for the OOO ring.  This has caused bnx2x to hit a NULL
              ptr dereference.

      Change: Fixed the cnic OOO handler.

      Impact: bnx2x iSCSI only.

cnic 2.5.16h (April 30, 2013)
=============================
   Enhancements
   ------------
   1. Change: Added max_fcoe_exchanges parameter so that bnx2fc can support
              multiple FCoE ports on a device.

      Impact: FcoE only.

bnx2 2.2.3o (April 30, 2013)
============================
   Fixes
   -----
   1. Problem: (BDKL225) __napi_schedule assertion when bnx2 switch from 
               MSI to INTx.
     
      Cause: NAPI was not disabled before IRQ is freed when switching from msi
             mode to INTA mode which prevents VMkernel from updating the stale 
             napi->intr_cookie value.

      Change: Disabled NAPI before free IRQ and then re-enable NAPI after
              chip is re-initialized. In addition, enabling of NAPI should
              always be done after chip_init(). 

      Impact: All.
 
bnx2 2.2.3n (Mar 11, 2013)
==========================
cnic 2.5.16g (Mar 11, 2013)
==========================
   Fixes
   -----
   1. Problem: cnic driver does not compile on XEN server.

      Cause: Shared bnx2x_compat.h relies on some CFLAGs to compile properly
             on XEN server.

      Change: Added the proper CFLAGs to the Makefile.

      Impact: None.

cnic 2.5.16f (Jan 31, 2013)
===========================
   Fixes
   -----
   1. Problem: (CQ67220) bnx2x firmware assert during "Random TCP errors" test.

      Cause: Firmware bug and cnic error handling bug for TCP_CLOSE ramrod.

      Change: Added check for iscsi completion error when receiving the
              TCP_CLOSE ramrod completion.

      Impact: bnx2x iSCSI only.

bnx2 2.2.3m (Jan 28, 2013)
==========================
cnic 2.5.16e (Jan 28, 2013)
===========================
   Fixes
   -----
   1. Problem: (CQ67528) cnic/bnx2 crash when both drivers are loaded on
               some kernels.

      Cause: Shared struct bnx2 compiled differently on bnx2 and cnic,
             causing cnic to reference the wrong field.

      Change: Added bnx2_compat0.h to define the common CFLAGs that affect
              structure sizes for both drivers to include.

      Impact: All (if cnic is loaded)

bnx2 2.2.3k (Jan 25, 2013)
==========================
   Fixes
   -----
   1. Problem: CNIC driver didn't get started after bnx2_open().

      Cause: CNIC driver is stopped when bnx2_close() is invoked.
             However, there is no equivalent turn on mechanism when
             bnx2_open() is called. The issue prevent bnx2i to offload
             iscsi connections during session recovery. 
      
      Change: Added equivalent cnic start procedure in bnx2_open().

      Impact: ESX only. 

cnic 2.5.16d (Jan 25, 2013)
===========================
   Fixes
   -----
   1. Problem: (CQ67375) Unable to turn iSCSI TCP delayed ACK on after it's
               been turned off.

      Cause: tcp_flags in cnic's socket structure not cleared between destroy
             and create calls.

      Change: Clear tcp_flags during socket create call.

      Impact: iSCSI only.

   2. Problem: (CQ67306) iSCSI TCP delayed ACK not working.

      Cause: Firmware HSI change.

      Change: Adapted to new firmware HSI which is now defining delayed ACK
              globally for the HBA.

      Impact: iSCSI only.

cnic 2.5.16c (Jan 15, 2013)
===========================
   Fixes
   -----
   1. Problem: cnic does not compile on SLES11SP2.

      Cause: bnx2x_compat.h conflicts with SLES11SP2 header files.

      Change: Modilfed Makefile to detect SLES distribution so that the
              proper CFLAG can be defined for bnx2x_compat.h

      Impact: SLES distributions only.

cnic 2.5.16b (Dec 12, 2012)
===========================
bnx2 2.2.3j (Dec 12, 2012)
==========================
   Enhancements
   ------------
   1. Change: (CQ60429, 66302) Simplify cnic probing by not using symbol_get().
              symbol_get() is unreliable as it fails while the network driver
              is still initializing.

      Impact: iSCSI and FCoE (driver loading and unloading).

cnic 2.5.14d (Nov 13, 2012)
===========================
   Fixes
   -----
   1. Problem: (CQ64479) bnx2x assert running iSCSI async logout test.
               bnx2fc.

      Cause: Race condition during simultaneous remote reset and local
             TCP close/reset.  This may be a partial fix and additional
             fixes in other areas/drivers may be necessary to completely
             address all symptoms.

      Change: If remote reset is detected to be in progress during local
              close/reset, it will wait for outstanding RAMRODs to complete.
              Without the wait, bnx2i will proceed to destroy the connection
              while the SRCH_DELETE/TERM_OFFLOAD RAMRODs are still pending.

      Impact: bnx2x iSCSI only.

bnx2 2.2.3i (Nov 05, 2012)
==========================
   Enhancements
   ------------
   1. Change: (CQ65960) Make minor compatibility changes to support RHEL6.4

      Impact: None.

   2. Change: Added support for latest 3.x kernels.

      Impact: All supported kernels.

cnic 2.5.14c (Nov 05, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ65178) Panic when loading and unloading cnic with bnx2i and
               bnx2fc.

      Cause: The iSCSI EQ does not get reset during cnic init.  When we
             get the first cnic IRQ, the iSCSI EQ index may be non-zero
             in the status block, causing the cnic driver to dereference
             NULL pointer.

      Change: Added code to clear the iSCSI EQ index in the STORM memory.

      Impact: 10G iSCSI.

bnx2 2.2.3h (Oct 16, 2012)
==========================
   Fixes
   -----
   1. Problem: Netdump crash when runing with ESX6.0 OS. 

      Cause:   bnx2 poll controller routine is not compatible with
               ESX6.0.

      Change:  For ESX6.0, bnx2 will use ESX poll controller for
               netdump.

      Impact:  ESX6.0.

bnx2 2.2.3g (Oct 09, 2012)
==========================
   Fixes
   -----
   1. Problem: [bnx2] PSOD: Failed at vmkdrivers/src_92/vmklinux_92/
	       vmware/linux_net.c:3351 -- VMK_ASSERT(VMK_FALSE).

      Cause:   There is race condition where netdev_watchdog() could
               erroneouly flag tx timeout in a small window when 
               bnx2_netif_stop() disabled tx queue state while carrier
               is still on. 

      Change:  Carrier must be turned off before netif_tx_disable() is
               called. 

      Impact:  Linux and ESX. 
 
bnx2 2.2.3f (Oct 04, 2012)
==========================
   Enhancements
   ------------
   1. Change: Convert remaining iounmap() call to pci_iounmap() call.

      Impact: None.

cnic 2.5.14b (Oct 04, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ65250) Unloading bnx2x before unloading cnic with IOMMU
               enabled causes panic.

      Cause: Trying to free UIO DMA memory after the PCI device has been
             unregistered.

      Change: Free UIO DMA memory after the uio device has been closed.
      Impact: iSCSI only.

bnx2 2.2.3e (Aug 27, 2012)
==========================
   Fixes
   -----
   1. Problem: ESX 6.0 compile errors seen when disabling NetQueue

      Cause:  Unused variables were defined in the non-NetQueue path

      Change: Clean up code to compile on ESX6.0 inbox

      Impact: ESX only


   2. Problem: ESX 6.0 firmware dump missing 1 dword.
     
      Cause:   MCP dump size is incorrect.

      Change:  Use correct MCP dump size.

      Impact:  ESX 6.0 only

cnic 2.5.12e (Aug 22, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ 65270): bnx2x IRQ assert on 57712 and newer devices that
               support iSCSI only.

      Cause: Not arming IRQ properly when detecting that the device does not
             support FCoE.  Regression from cnic 2.5.12c enhancement #3.

      Change: Added function pointer to arm IRQ correctly based on chip type.

      Impact: iSCSI and FCoE on all 10G devices.

cnic 2.5.12d (Aug 21, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ 65249): cnic panic on functions that support FCoE only.

      Cause: Code accessing iSCSI resources that aren't initialized or
             allocated on functions that don't support iSCSI.

      Change: Check for valid UIO resource before trying to free it.  Always
              initialize iSCSI OOO resources.

      Impact: 10G iSCSI and FCoE.

bnx2 2.2.3d (Aug 15, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ 65163): unhandled NETQUEUE messages 16 and 17
               seen in vmkernel logs

      Cause: Not properly handling unsupported NetQueue ops

      Change: Properly handle the NetQueue ops 16 and 17 without
              printing the warning message

      Impact: ESX only

   Enhancements
   ------------
   1. Change: Try to recover from PCI block reset during TX timeout.
              Red Hat users have reported PCI block resets that could
              not be recovered during tx timeout.
      
      Impact: None.

   2. Change: Added mk_kernel_patch.sh to patch bnx2 driver into kernel tree.

      Impact: None.

cnic 2.5.12c (Aug 15, 2012)
==========================
   Enhancements
   ------------
   1. Change: Added firmware dump support for ESX6.0.
      
      Impact: ESX6.0.

   2. Change: Reduced maximum iSCSI abort delay to 5 seconds

      Impact: iSCSI

   3. Change: Allocate FCoE or iSCSI resources on a cnic only if the
              device supports the protocol.  This will reduce memory
              consumption on multi-function devices.

      Impact: iSCSI and FCoE

bnx2 2.2.3c (July 09, 2012)
==========================
   Fixes
   -----
   1. Problem: Unmapping the wrong DMA address in bnx2_free_tx_skbs() in
               rare cases.

      Cause: Not skipping the last entry in the tx BD ring.

      Change: Use the proper macro to get the next BD entry.

      Impact: On systems with IOMMUs enabled, the bug can be triggered when
              doing resets (ifdown, MTU change) during heavy TX traffic.

cnic 2.5.12b (July 03, 2012)
=============================
   Enhancements
   ------------
   1. Change: Updated to bnx2x firmware 7.4.8 HSI for TX BDs.

      Impact: iSCSI on all bnx2x devices.

cnic 2.5.11d (June 28, 2012)
=============================
   Fixes
   -----
   1. Problem: Kernel panic under iSCSI OOO condition.

      Cause: Bug in cnic when max OOO resource is reached

      Change: Initailized packet descriptor to fix the bug.

      Impact: iSCSI only.

bnx2 2.2.3b (June 29, 2012)
==========================
   Fixes
   -----
   1. Problem: Compile error in RHEL6.x kernel and similar kernels.

      Cause: skb_frag_size() compatibility code not detected properly.

      Change: Fixed Makefile to detect it from skbuff.h

      Impact: None.

bnx2 2.2.2b (June 24, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ63682)PSOD in ESX upon device open.

      Cause:   NAPI was not disabled properly upon device close.
               Thus, ASSERT occurs upon reopening device.

      Change:  Add NAPI disable upon close and add netif_tx_disable
               for both linux and ESX build.

      Impact:  bnx2.

   2. Problem: Enableing RSS interferes with RX NETQ feature when 
               compiled for ESX build.

      Cause:   RSS is enabled by default in bnx2.  The RSS feature
               will lead to firmware bypass NETQ code path. 

      Change:  Disable RSS by default when compiled for ESX.

      Impact:  ESX.    

   Enhancements
   ------------
   1. Change: Partial sync-up with upstream driver.  Please see Changelog.

      Impact: All

cnic 2.5.11c (June 12, 2012)
=============================
   Fixes
   -----
   1. Problem: (CQ62298 Partial fix) When running in INTA mode, MTU change
               does not work.  iSCSI/FCoE does not resume after MTU change.

      Cause: During mtu change, bnx2x does not know that cnic is no longer
             handling IRQs.

      Change: Added a new flag to let bnx2x know that cnic is no longer
              handling IRQ during reset.

      Impact: bnx2x iSCSI and FCoE.

   2. Problem: (CQ62937) bnx2x asserts during iSCSI test with corrupted
               TCP NOP-IN.

      Cause: Corrupted NOP-IN falls outside of TCP window, causing FW to
             go into OOO mode.  TCP close with outstanding OOO causes
             problem and the close does not complete.

      Change: FW change to return an error in this case and cnic driver
              change to handle this error by proceeding to clean up the
              connection.

      Impact: bnx2x iSCSI.

cnic 2.5.11b (April 30, 2012)
=============================
   Fixes
   -----
   1. Problem: (CQ62298 Partial fix) Fix for CQ62026 in cnic 2.5.9d introduced
               a regression of clearing the CNIC_UP flag before all CIDs have
               been deleted.  The regression is causing warning messges that
               some CIDs have not been deleted.  After fixing this, we're
               still encountering further bnx2x error messages in the INTA
               code path.

      Change: Wait for all CIDs to be deleted before clearing CNIC_UP flag.

      Impact: iSCSI and FCoE on all bnx2x devices.

bnx2 2.2.1l (April 18, 2012)
============================
   Fixes
   -----
   1. Problem: PSOD on ESX because of inconsistant NetQueue state
               when the NetQueues are allocated/freed out of order

      Cause:   The forced freeing of the NetQueue before the
               NetQueue allocation can cause the incorrect NetQueue
               to be freed and marked incorrectly.

      Change:  Remove the freeing of the NetQueue in the allocation
               path and allow the load balancer to control the
               error path when NetQueue's could not be
               allocated/freed.

      Impact:  ESX only.

cnic 2.5.10c (April 18, 2012)
=============================
   Enhancements
   ------------
   1. Change: Added iface_num parameter to cm_create() and
              iscsi_nl_send_msg()to support bnx2i 2.7.2.2b.

      Impact: iSCSI only.

bnx2 2.2.1k (April 04, 2012)
============================
   Enhancements
   ------------
   1. Change: Reduced code size of FTQ dump during tx_timeout.

      Impact: None.

cnic 2.5.10b (April 04, 2012)
=============================
   Enhancements
   ------------
   1. Change: Added PCI pass through support for bnx2x E2/E3 devices.

      Impact: bnx2x iSCSI/FCoE on E2/E3 devices.

bnx2 2.2.1j (Mar 07, 2012)
==========================
   Enhancements
   ------------
   1. Change: Added disable_msi_1shot parameter for debugging purposes.

      Impact: VMWare only feature.

cnic 2.5.9d (Mar 07, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ62026) NULL pointer dereference during cnic reboot test.

      Cause: cp->ctx_tbl is NULL during cnic_ctl() call with COMPLETION_CMD.

      Change: cnic is registered with the L2 drivers before we allocate
              the cp->ctx_tbl so it is possible to get called while
              cp->ctx_tbl is NULL.  Added check for CNIC_UP flag before
              proceeding to dereference cp->ctx_tbl.  This together with
              the RCU code will completely fix the problem.

      Impact: iSCSI and FCoE on 10G.

bnx2 2.2.1i (Mar 06, 2012)
==========================
   Fixes
   -----
   1. Problem: Driver doesn't build on SLES11.1-trace x32 kernel.

      Cause: ARCH defined in Makefile conflicts with kernel tree scripts.

      Change: Changed ARCH to __ARCH in Makefile

      Impact: None.

bnx2 2.2.1h (Mar 05, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ60393) Driver doesn't build in some RHEL-5.x distros with
               just kernel-devel package installed.

      Cause: Makefile does not include /usr/src/kernels/$(KVER)-$(uname -m)
             in places to search.

      Change: Added the additional path to check.

      Impact: None.

cnic 2.5.9c (Feb 29, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ61908) cnic does not compile on 3.x kernel.

      Cause: Upstream patch titled:

             ethernet/broadcom: ip6_route_output() never returns NULL.

             backported carelessly.

      Change: Fixed syntax errors.

      Impact: 3.x kernel only.

cnic 2.5.9b (Feb 28, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ61584) bnx2x asserts during middle-box iSCSI tests.

      Cause: Middle-box test corrupts packets and causes iSCSI fw to
             generate 0x4 (NIC_ERR) completion code.  This conflicts
             with new logic that uses NIC_ERR to convey parity error.

      Change: Redefined parity error completion code to be 0x81 for
              L4, iSCSI, and FCoE.

      Impact: FCoE and iSCSI.

bnx2 2.2.1g (Feb 28, 2012)
==========================
   Fixes
   -----
   1. Problem: Calling of bnx2_vlan_rx_kill_vid() is not rtnl_lock
               protected.
      Change:  hold rtnl_lock when execute this routine under ESX4.0 
               and ESX4.1.
      Impact:  ESX4.0/4.1 only.

   Enhancements
   ------------
   1. Change: Added MSI-X table printout during tx timeout.

      Impact: None.

bnx2 2.2.1f (Feb 8, 2012)
==========================
   Fixes
   -----
   1. Problem: (CQ61327) Unable to pass traffic on RHEL5.x

      Cause: bp->num_rx_rings not initialized due to backport errors.  This
             was introduced in 2.2.1e when adding ethtool -l|L support.

      Change: Initialized bp->num_rx_rings to 1 on these older kernels.

      Impact: RHEL5 and SLES10 only.

cnic 2.5.8f (Feb 06, 2012)
==========================
   Enhancements
   ------------
   1. Change: Added VLAN update from iscsiuio.  This allows VLAN to be
              specified in iface.
 
      Impact: iSCSI only.

cnic 2.5.8e (Jan 24, 2012)
==========================
   Enhancements
   ------------
   1. Change: Enhanced FCoE parity recovery by sending immediate FW_DESTROY
              completion with error during parity error recovery.
 
      Impact: FCoE only.

bnx2 2.2.1e (Jan 24, 2012)
==========================
   Enhancements
   ------------
   1. Change: Added support for ethtool -[l|L].  Please refer to README.TXT
              for details.

      Impact: 5709 with support for MSIX only.

cnic 2.5.8d (Jan 19, 2012)
==========================
   Enhancements
   ------------
   1. Change: Enhanced FCoE driver registration to provide FCoE
              capabilities to bnx2x driver. 

      Impact: Systems with Management support of these features. These
              changes were made to match bnx2x 1.72.07.

   2. Change: (CQ60867) Backed out earlier changes related to this CQ.
              genksyms checksums are based on structure names and type
              names, so the scheme of using an identical structure with
              a different name will not work.

      Impact: None.

cnic 2.5.8c (Jan 10, 2012)
==========================
   1. Problem: (CQ60744) Lose connection to FCoE targets after parity error
               recovery.

      Cause: (Partial) DISABLE_CONN SPQ message does not complete, causing
             delaying waiting for bnx2fc to timeout.

      Change: Added immediate KCQ error completion for FCOE_DISABLE_CONN.
              when SPQ fails.

      Impact: FCoE.

   2. Problem: (CQ60184) cnic parity error recovery fails (Part 2).

      Cause: If a TCP connection fails due to parity error, termination
             sequence does not follow the expedited error recovery path.
             This causes unnecessary delay during parity error recovery.

      Change: Set the HW_ERR bit when TCP connection fails due to SPQ
              error.  Termination will then follow the expedited error
              recovery path.

      Impact: iSCSI on bnx2x.

   3. Problem: (CQ60867) Module versioning warning when installing cnic
               driver on SLES11SP2 without matching bnx2i/bnx2fc.

      Cause: cnic_register_driver() stub in cnic.c does not have
             cnic_ulp_ops structure that matches inbox bnx2i/bnx2fc.

      Change: Added dummy cnic_ulp_ops that match RHEL6.2 and SLES11SP2
              structures.

      Impact: None.

bnx2 2.2.1d (Jan 10, 2012)
==========================
   Fixes
   -----
   1. Problem: PSOD seen in TX handling in either bnx2_tx_int()
               or bnx2_start_xmit() routines
      
      Cause:   Memory re-ordering is occuring so that the TX BD is not
               updated before the ringing of the TX doorbell.

      Change:  On ESX the wmb() macro is defined to only as a compiler
               barrier.  Redfine the wmb() macro to properly synchronize
               memory using the sfence instruction.

      Impact:  ESX only.

cnic 2.5.8b (Jan 05, 2012)
==========================
   Enhancements
   ------------
   1. Change: Added CNIC_CTL_FCOE_ENHANCED_STATS_CMD and
              CNIC_CTL_FCOE_CAPABILITIES_GET_CMD as stubs.

      Impact: None.

cnic 2.5.7i (Dec 21, 2011)
==========================
   Fixes
   -----
   1. Problem: (CQ60184) cnic parity error recovery fails.

      Cause: SPQ errors during parity error recovery was not propagated to
             L4 and ULP, causing unnecessary long timeouts.

      Change: Added immediate KCQ error completion for L4 and iSCSI kwqes if
              SPQ fails.

      Impact: iSCSI on bnx2x.

bnx2 2.2.1c (Dec 21, 2011)
==========================
   Fixes
   -----
   1. Problem: (CQ60281) BNX2 hang on ESX 4.1 when changing tx ring size 
		with Ethtool.
      
      Cause:   BNX2 set_ringparam() ethtool ops callback attempts to hold
               rtnl_lock while vmlinux has already held this lock when 
	       when invoking this callback. This leads to deadlock situation
               and driver will hang forever.

      Change:  Make sure all ethtool ops callbacks don't hold rtnl_lock.

      Impact:  ESX only.

   2. Problem: (BDKL87) PSOD in bnx2 start_xmit() path when stressing with 
	       change ring size script on ESX 4.1u2.

      Cause:   When using ESX4.0/4.1u0-u2, the vmkernel doesn't not check
               tx queue state properly in certain race condition. This can
               lead to bnx2 start_xmit() to deference NULL tx buffer. 

      Change:  check tx queue state before proceed with stat_xmit().

      Impact:  ESX4.0/4.1u0-u2. 

cnic 2.5.7h (Dec 08, 2011)
==========================
   Enhancements
   ------------
   1. Change: Added iSCSI and FCoE driver status and counters support.

      Impact: Systems with Management support of these features.

   2. Change: Added upstream patches to sync up with upsteam driver:
                net: treewide use of RCU_INIT_POINTER
                net: remove ipv6_addr_copy()

      Impact: None.

bnx2 2.2.1b (Dec 08, 2011)
==========================
   Enhancements
   ------------
   1. Change: Added several upstream patches to sync up with upsteam
              driver:
                net: treewide use of RCU_INIT_POINTER
                bnx2: fix skb truesize underestimation
                net: Remove unnecessary driver assignments of ethtool_ringparam fields to zero

      Impact: None.

bnx2 2.1.12b (Oct 14, 2011)
===========================
   Fixes
   -----
   1. Problem: (CQ59255) iSCSI warning messages appear and performance
               drops when connected to a lefthand target.

      Cause:   Packets with invalid TTT generate warnings and exception
               handling.

      Change: Updated to 6.2.3 firmware for 5706 and 6.2.1.b for 5709

      Impact: iSCSI

cnic 2.5.7g (Sep 23, 2011)
==========================
   Enhancements
   ------------
   1. Change: Added cnic_register_driver()/cnic_unregister_driver stubs
              so that depmod will not return errors if native bnx2i/bnx2fc
              drivers have not been updated.

      Impact: None.

bnx2 2.1.11e (Sept 19, 2011)
===========================
   Enhancements
   ------------
   1. Change: Set the feature, NETIF_F_NO_SCHED, for ESX 5.0 and
              greater releases only

      Impact: ESX only

   Fixes
   -----
   1. Problem: Compile errors on some older kernels.

      Cause: Compatibility API pci_is_pcie() requires bool type which may
             not be defined on older kernels.

      Change: Moved bool type compatibility definition above pci_is_pcie().

      Impact: None.

bnx2 2.1.11d (Aug 30, 2011)
===========================
   Enhancements
   ------------
   1. Change: Integrate Code Review Comments from VMware
              * Add feature flag to reflect if a device is
                compliant with network scheduling.
              * Conditionally move bnx2 drivers to high memory
	      * Remove unused field/code

      Impact: ESX only

   2. Change: Remove unnecessary read of PCI_CAP_ID_EXP from upstream.

      Impact: minor (5709 only).

cnic 2.5.7f (Sep 13, 2011)
=========================
   Fixes
   -----
   1. Problem: Duplicate cp local variable in cnic_shutdown_rings().

      Cause: Coding error.

      Change: Removed duplicate variable.

      Impact: None.

cnic 2.5.7e (Aug 8, 2011)
=========================
   Fixes
   -----
   1. Problem: (CQ57498) System hangs during bnx2x parity error recovery.

      Cause: cnic waits for RAMRODs to complete without timeout.  During
             parity error recovery, all DMAs will stop.

      Change: Added timeouts to all RAMRODs.

      Impact: iSCSI and FCoE on bnx2x

cnic 2.5.7d (July 28, 2011)
===========================
   Enhancements
   ------------
   1. Change: Increased the max number of FCoE sessions to 1024.

      Impact: FCoE.

bnx2 v2.1.11c (July 26, 2011)
============================
   Enhancements
   ------------
   1. Change: Upstream sync to use ethtool_cmd_speed API.

      Impact: None.

   2. Change: Added memory barrier to sync transmit descriptor before updating
              TX mailbox.  We believe that this may fix some very rare panics
              reported by VMWare.

      Impact: bnx2 packet transmit.

cnic 2.5.7c (July 26, 2011)
===========================
   Fixes
   -----
   1. Problem: FCOE_DESTROY_FUNC ramrod not completing, causing timeout
               and OOO cleanup timeout during MTU change.

      Cause: FCOE_DESTROY_FUNC was sent before all FCoE CIDs have been
             deleted.

      Change: Wait for all (2 seconds delayed) FCoE CFC_DELETE ramrods to
              be completed before sending FCOE_DESTROY_FUNC.

      Impact: FCoE only.


cnic 2.5.7b (July 19, 2011)
===========================
   Enhancements
   ------------
   1. Change: Re-instated vlan_id in ->indicate_netevent().  It is needed
              by bnx2fc to handle NETDEV_UNREGISTER on VLAN devices.

      Impact: bnx2fc.

   2. Change: Allocate FCoE CID space only on E2+ devices.

      Impact: None.

bnx2 v2.1.11b (July 19, 2011)
============================
   Enhancements
   ------------
   1. Change: Added tx_timeout error handling and made it common with
              VMWare code.

      Impact: bnx2 NETDEV WATCHDOG error handling

   2. Change: Fix compile errors on the latest net-next upstream kernel.

      Impact: compilation

cnic 2.5.6d (July 13, 2011)
===========================
   Enhancements
   ------------
   1. Change: Removed vlan_id from ->indicate_netevent().

      Impact: None.

bnx2 v2.1.10d (July 12, 2011) cnic 2.5.6c (July 12, 2011)
=========================================================
   Fixes
   -----
   1. Problem: Not compiling on 3.0.0 kernel.

      Cause: Makefile not recognizing the 3.0.x kernel

      Change: Modified Makefile and sync'ed with upstream drivers.

      Impact: None.

bnx2 v2.1.10c (July 1, 2011)
============================
   Fixes
   -----
   1. Problem: Not compiling on older kernels (such as RHEL5.4) and newer
               kernels (such as 2.6.36)

      Cause: Problems with compatibility code.

      Change: Fixed compatibility code.

      Impact: None.

bnx2 v2.1.10b (June 30, 2011)
============================
   Enhancements
   ------------
   1. Change: Added more complete MCP dump during error conditions.

      Impact: None.

   2. Change: Modified driver messages slightly to match upstream format
              (by using netdev_printk, netdev_err, etc).

      Impact: None.

   Fixes
   -----
   1. Problem: Not reading iSCSI license on 570x devices reliably.

      Cause: We were reading from the CP scratch pad before the CP firmware
             is loaded.

      Change: Read from MCP shmem location instead.

      Impact: 1G iSCSI on bnx2 devices.

cnic 2.5.6b (June 30, 2011)
============================
   1. Problem: (CQ56522, CQ56259) Unable to connect to iSCSI target, bnx2x
               firmware assert during iSCSI connection

      Cause: iSCSI L2 ring CID has been changed in bnx2x 1.70.14.  uIP is
             using a hardcoded value of 0x11.

      Change: cnic now passes the CID to uIP.

      Impact: iSCSI on bnx2x devices.

   2. Problem: (CQ56230) Cannot compile on some 32-bit systems.

      Cause: Passing 64-bit NULL pointer as 32-bit 0 dma_addr_t value.

      Change: Use 0 instead of NULL for dma_addr_t values.

      Impact: None.

cnic 2.5.5b (June 22, 2011)
============================
   Enhancements
   ------------
   1. Change: Added WWN info to cnic_eth_dev.  This is a temporary solution
              until ndo_fcoe_get_wwn() is implemented.

      Impact: None.

bnx2 v2.1.9b (June 22, 2011)
============================
   Enhancements
   ------------
   1. Change: Added del_timer_sync() in bnx2_remove_one() from upstream
              commit 8333a46ad3877485e4d67ef499c6dda36bfd1f9a. See
              ChangeLog for details.
   
      Impact: None.

bnx2 v2.1.8c (June 16, 2011)
============================
   Enhancements
   ------------
   1. Change: In ESX, bnx2 will setup int mode during .probe time.
              However, the dev->name will be finalized only when
              pci_announce_device is done. So, we assign irq->name
              in bnx2_request_irq instead of in bnx2_setup_int_mode.
   
      Impact: ESX only.

cnic 2.5.4b (June 1, 2011)
============================
   Fixes
   -----
   1. Problem: (CQ55915) iSCSI does not connect on 57800 in 4-port mode.

      Cause: cl_qzone_id was wrong on the 3rd and 4th port.  uIP also has
             some problems determining 4-port mode.

      Change: Fixed the QZONE_ID macro.

      Impact: bnx2x iSCSI.

bnx2 2.1.8b (June 1, 2011)
============================
   Fixes
   -----
   1. Problem: (CQ55422) NCSI firmware version displayed backwards on PPC.

      Cause: Endian bug when reading the data from shared memory.

      Change: Fixed byte swapping issue.

      Impact: None.

   2. Problem: bnx2 does not compile on some PPC distros.

      Cause: pci_enable_pcie_error_reporting() not properly defined in some
             distros.

      Cause: Added #ifdef to prevent compiling
             pci_enable_pcie_error_reporting() on PPC since it uses EEH
             instead of AER.

      Impact: None.

cnic 2.5.3b (May 24, 2011)
============================
   Enhancements
   ------------
   1. Change: Updated to FW 7.0.18 HSI.

      Impact: iSCSI and FCoE on bnx2x.

bnx2 2.1.7b (May 24, 2011)
============================
   Enhancements
   ------------
   1. Change: Added register read write functions for VMWare gdb

      Impact: None.

   2. Change: Fixed compile issues on VMWare by resolving KWQ symbol
              conflicts between netq code and cnic code.

      Impact: None.

cnic 2.5.2b (April 21, 2011)
============================
   Enhancements
   ------------
   1. Change: Updated 2.4.2b cnic to T7.0.

      Impact: iSCSI and FCoE on bnx2x.

cnic 2.4.5b (May 16, 2011)
==========================
   Enhancements
   ------------
   1. Change: Check CFC delete error code during completion.  If it is set,
              do not reuse the CID.  This change is only compatible with
              bnx2x 1.64.30 or newer.

      Impact: iSCSI and FCoE.

cnic 2.4.4b (May 04, 2011)
==========================
   Fixes
   -----
   1. Problem: (CQ54938) iSCSI timeout during async logout.

      Cause: TCP reset request may not complete if there is a race with
             firmware receiving a remote RST.

      Change: Added code to handle TCP reset racing with remote RST and
              TCP close racing with remote FIN.

      Impact: iSCSI

cnic 2.4.3b (April 28, 2011)
============================
   Fixes
   -----
   1. Problem: cnic may lose interrupts after processing 64 kcq entries.

      Cause: The driver handles a maximum of 64 entries before calling
             the ulp drivers.  If the chip has more entries, the driver
             does not handle the rest but acknowledges the latest
             status block index.

      Change: Changed the logic to keep looping until all kcq entries
              are handled.

      Impact: iSCSI and FCoE on all devices.
   
cnic 2.4.2b (April 21, 2011)
============================
   Fixes
   -----
   1. Problem: (CQ54715, CQ54717) XSEMI parity error detected during iSCSI
               login on 57712 in NPAR mode.

      Cause: Statistic counter ID greater than MAX_STAT_COUNTER_ID_E2 in
             client init data for iSCSI L2 ring.

      Change: Check client ID against MAX_STAT_COUNTER_ID_EXX before enabling
              statistics.

      Impact: iSCSI on bnx2x.

cnic 2.4.1d (April 14, 2011)
============================
   Enhancements
   ------------
   1. Change: Added silent VLAN 0 removal on iSCSI ring.

      Impact: iSCSI on bnx2x.

cnic 2.4.1c (April 11, 2011)
============================
   Fixes
   -----
   1. Problem: (CQ49586) iSCSI reboot test fails after a few iterations.

      Cause: TCP port 60000 is used every time during boot.  During reset,
             the TCP connection is never terminated so using the same port
             to connect to the target during reboot will not work.

      Change: Added randomization of the first TCP port to use.

      Impact: iSCSI.

bnx2 v2.1.6b (April 6, 2011)
============================
   Enhancements
   ------------
   1. Change: Get iSCSI license information to prevent cnic from registering
              if there is no license.  This will make it consistent with 10G
              behavior.

      Impact: iSCSI only.

cnic 2.4.1b (April 6, 2011)
===========================
   Fixes
   -----
   1. Problem: (CQ53236) FCoE HBA not functional after reloading bnx2x.

      Cause: In some distros, NETDEV_UP can happen immediately after
             NETDEV_REGISTER while bnx2x module is still in init state.
             At this time, cnic will not be able to symbol_get() from
             bnx2x, preventing the cnic from registering.

      Change: Check all events, and we should be able to catch NETDEV_CHANGE
              abd register cnic.

      Impact: iSCSI and FCoE.

   Enhancements
   ------------
   1. Change: Updated 10G HSI to firmware 6.4.32 (bnx2x 1.64.23)

      Impact: iSCSI and FCoE.

cnic 2.4.0b (Mar 29, 2011)
==========================
   Enhancements
   ------------
   1. Change: Updated cnic to with with bnx2x 1.70.x and added support
              for 578xx devices.

      Impact: iSCSI and FCoE.

bnx2 v2.1.5d (Feb 28, 2011) cnic 2.3.5d (Feb 28, 2011)
======================================================
   Fixes
   -----
   1. Problem: (CQ53174) iSCSI detected conn error and ping timeout.

      Cause: Race condition between cnic driver and hardware DMA'ing a
             new status block with new iSCSI events.  The bug was
             introduced when adding FCoE support.

      Change: 1. Add proper memory barrier after reading status block.
              2. After servicing FCoE EQ, we must loop back and check the
                 iSCSI EQ again because we may have a newer status block
                 index that is read after servicing the iSCSI EQ.

      Impact: 57712 iSCSI and FCoE.

bnx2 v2.1.5c (Feb 15, 2011) cnic 2.3.5c (Feb 15, 2011)
======================================================
   Enhancements
   ------------
   1. Change: Updated 5709 firmware to 6.2.1a, with netq fixes and iSCSI
              performance regression fixes.

      Impact: 5709.

bnx2 v2.1.5b (Feb 08, 2011) cnic 2.3.5b (Feb 08, 2011)
======================================================
   Fixes
   -----
   1. Problem: iSCSI does not connect in DCB environment.

      Cause: iSCSI packets are tagged with the wrong ethertype.

      Change: Added initialization of xstorm's reserved_vlan_type field.

      Impact: bnx2x iSCSI.

bnx2 v2.1.4h (Jan 27, 2011) cnic 2.3.4h (Jan 27, 2011)
======================================================

   Enhancements
   ------------
   1. Change: Ported T6.4 HSI changes to support iSCSI.

      Impact: bnx2x iSCSI.

   2. Change: Fixed endian bug in setting up page table addresses.

      Impact: iSCSI.

bnx2 v2.1.4g (Jan 20, 2011) cnic 2.3.4g (Jan 20, 2011)
=========================================================

   Enhancements
   ------------
   1. Change: Removed shared mem logic to read iSCSI and FCoE info.
              This logic is now in the bnx2x driver.

      Impact: iSCSI and FCoE on bnx2x.

   2. Change: Removed FCoE support on 57711.  This is no longer supported
              by the HSI.

      Impact: None.

bnx2 v2.1.4b (Jan 05, 2011) cnic 2.3.4b (Jan 05, 2011)
=========================================================

   Enhancements
   ------------
   1. Change: Merged with bnx2 2.0.22b.

bnx2 v2.1.3b (Dec 22, 2010) cnic 2.3.3b (Dec 22, 2010)
=========================================================

   Enhancements
   ------------
   1. Change: Merged with bnx2 2.0.21b.

bnx2 v2.1.2f (Dec 13, 2010) cnic 2.3.2f (Dec 13, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Added NPAR FCoE offload checking.

      Impact: FCoE.

bnx2 v2.1.2c (Oct 28, 2010) cnic 2.3.2c (Oct 28, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Updated cnic to the latest 6.4.9 HSI.

      Impact: bnx2x iSCSI and FCoE.

bnx2 v2.1.2b (Oct 12, 2010) cnic 2.3.2b (Oct 12, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Updated cnic to the latest 6.4.7 HSI.

      Impact: bnx2x iSCSI - requires bnx2x 1.64.03 or above.

bnx2 v2.1.1b (Sep 28, 2010) cnic 2.3.1b (Sep 28, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Updated cnic to the latest 6.4.x HSI.

      Impact: bnx2x iSCSI - requires bnx2x 1.64.02 or above.

bnx2 v2.0.23b (Feb 01, 2011) cnic v2.2.13b (Feb 01, 2011)
=========================================================
   Fixes
   -----
   1. Problem: EEH errors on PPC when loading bnx2i

      Cause: KWQ page tables set up in wrong endian order, causing EEH
             errors when sending the first KWQ message.

      Change: Fixes page tables endian order.

      Impact: PPC only.

bnx2 v2.0.22f (Jan 18, 2011) cnic v2.2.12f (Jan 18, 2011)
=========================================================
   Enhancements
   ------------
   1. Prevent AER error messages on PPC.  PPC does not support AER.

      Impact: 5709 only.

   2. Integrated with bnx2x 1.62.10.

      Impact: bnx2x iSCSI only.

bnx2 v2.0.22e (Jan 12, 2011)
=========================================================
   Fixes
   -----
   1.  Problem: change MTU would fail for the CNIC IRQ.

       Cause:   Mismatched module IDs for request/free IRQ.

       Change:  Masquerade as CNIC when cnic ops are called from bnx2.

       Impact:  ESX only.

bnx2 v2.0.22d (Jan 11, 2011) cnic v2.2.12d (Jan 11, 2011)
=========================================================
   Fixes
   -----
   1. Problem: NetQueue would not properly allocate RX queue

      Cause: BNX2_NETQ_HW_OPENED bit was not properly set.

      Change: When the NetQueue device is openned properly set the
              BNX2_NETQ_HW_OPENED bit in the netq_flags field.

      Impact: ESX NetQueue

   2. Problem: NetQueue could possibly get out of sync with the uppper
               layers

      Cause: The queue cleanup code between the driver and upper layer
             is not synchronized

      Change: Introduce the NetQueue lock to synchronize the cleaning
              of the queues between the vmkernel and the bnx2 driver.

      Impact: ESX NetQueue

   3. Problem: iSCSI may not work if multi-function is disabled in NPAR NICs.

      Cause: Bug in logic in detecting NPAR mode.

      Change: Offload bit should not be checked if iSCSI MAC address is invalid.

      Impact: iSCSI on 57712 NPAR NIC.

bnx2 v2.0.22c (Jan 6, 2011) cnic 2.2.12c (Jan 6, 2011)
=========================================================
   Enhancements
   ------------
   1. Change: Updated to 6.2.1a firmware for 5709.  It has fixes for
              CQ51953 (ESX netqueue issue) and CQ51894 (iSCSI performance).

      Impact: 5709 iSCSI and L2.

bnx2 v2.0.22b (Jan 4, 2011) cnic 2.2.12b (Jan 4, 2011)
=========================================================
   Enhancements
   ------------
   1. Change: Send netlink IF_DOWN message during cnic_unregister_device().
              This fixes the problem of bnx2i referencing freed hba when we
              used to send the netlink message during cnic_unregister_driver().

      Impact: iSCSI.

   2. Change: Upstream fix for memory leak in cnic_alloc_uio_rings() when
              we cannot allocate all the memory.

      Impact: None.

   3. Change: Upstream fix to remove flush_scheduled_work() since it is
              obsolete.

      Impact: None.

   4. Change: Do not allow iSCSI on bnx2x devices in MF mode.  The
              hardware does not yet support it.

      Impact: iSCSI.

   Fixes
   -----
   1. Problem: SPQ RAMROD type field does not consistently contain the
               function ID.

      Change: Fixed in cnic_submit_kwqe_16() for HSI 6.0 and above.

      Impact: iSCSI in NPAR mode.

bnx2 v2.0.21b (Dec 21, 2010) cnic 2.2.11b (Dec 21, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Call cm_connect_complete() when an invalid path_response
              netlink message is received.  This will speed up iscsid in
              disconnecting the connection.  This helps to resolve
              CQ49665.

      Impact: iSCSI.

bnx2 v2.0.20g (Dec 17, 2010) cnic 2.2.10g (Dec 17, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ51766) cnic driver panics in cnic_service_bnx2() during
               iscsid restart.

      Cause: Referencing the cp->kcq1 pointer before checking that the device
             is up.

      Change: Fixed logic so that the cp->kcq1 pointer will only be
              refernced after checking the device is up.

      Impact: iSCSI.

   Enhancements
   ------------
   1. Change: Added retry logic in iscsi_nl_send_msg() to retry netlink
              messages to userspace.

      Impact: iSCSI.

bnx2 v2.0.20f (Dec 09, 2010) cnic 2.2.10f (Dec 09, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ51544) Unable to connect to iSCSI targets on 57712 NPAR
               LOMs with NPAR disabled.

      Cause: ff:ff:ff:ff:ff:ff iSCSI MAC address was used in this case.

      Change: Add code to detect invalid MAC address and use port MAC address
              instead.  That's the only to determine NPAR is disabled.

      Impact: 57712 iSCSI.
 
   2. Problem: MTU change in INTA mode crashes occasionally.

      Cause: Status block may be accessed if INTA is shared with another
             device during reset.  There is a short period that the status
             block is freed.

      Change: Free IRQ before freeing status block.

      Impact: bnx2 MTU change/ring size change.

   3. Problem: Heap corruption reported by VMWare.

      Cause: list_del() is called after kfree() in OOO code.

      Fix: call list_del() before kfree().

      Impact: iSCSI OOO.

bnx2 v2.0.20e (Dec 06, 2010) cnic 2.2.10e (Dec 06, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Adjusted hc timeout for EQ to use the T6.0 value of 4.  This
              will match T5.x HC timeout values.

      Impact: 10G iSCSI only.

   2. Change: Minor changes to match upstream code.

      Impact: None.

bnx2 v2.0.20d (Nov 16, 2010) cnic 2.2.10d (Nov 16, 2010)
=========================================================
   Fixes
   -----
   1. Problem: VMware NetQueue not working properly on 5709.

      Cause: HSI mismatch.

      Change: Updated HSI to match T6.0 bnx2 firmware.

      Impact: NetQueue on 5709.

   Enhancements
   ------------
   1. Change: Adjusted kernel compatibility code to compile on RHEL5.6.

      Impact: bnx2 and cnic.

bnx2 v2.0.20c (Oct 28, 2010) cnic 2.2.10c (Oct 28, 2010)
=========================================================
   Fixes
   -----
   1. Problem: NMI occurs during repeated load/unload of bnx2 driver on
               5709.

      Cause: The 5709 chip's DMA block wasn't stopped properly before reset.

      Change: Fixed by clearing DMA_ENABLE in NEW_CORE_CTL register and
              polling for pending bus transactions to stop.

      Impact: 5709.

   Enhancements
   ------------
   1. Change: Update 5706/5708/5709 firmware to 6.2.1.

      Impact: All 1G devices.

   2. Change: Fixed one circular lock dependency issue with bnx2i when making
              up call to send iSCSI NL message.

      Impact: None.

bnx2 v2.0.20b (Oct 13, 2010) cnic 2.2.10b (Oct 13, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49481) pci_enable_pcie_error_reporting failed on
               5706 and 5709.

      Cause: AER not supported on non-PCIE devices.

      Change: Enable AER only on PCIE devices (5709).

      Impact: None.

   Enhancements
   ------------
   1. Change: (CQ49858) Support KVM pass-through mode by eliminating
              config cycles to non-standard PCI registers
              (PCICFG_MISC_CONFIG, PCICFG_REG_WINDOW*).

      Impact: All chips.

bnx2 v2.0.18c (Sep 13, 2010) cnic 2.2.6c (Sep 13, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49832) bnx2 flow control not working

      Cause: Mistakenly disabled in firmware in 2.0.17j to fix CQ46393.

      Change: Re-enabled RV2P flow control with additional fixes to
              for a number of odd flow control issues.  New firmware
              versions are 6.0.15 for 5706/5708 and 6.0.17 for 5709.

      Impact: 5706/5708/5709.

   Enhancements
   ------------
   1. Change: Added zeroing of the iSCSI L2 ring's RX BD page to help
              signal ring shutdown to uIP.

      Impact: iSCSI.

   2. Change: Fix compile issues on 2.6.36 kernel.

      Impact: None.

bnx2 v2.0.18b (Sep 02, 2010) cnic 2.2.6b (Sep 02, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Slightly improve the cnic Netlink fix in cnic 2.2.5k.

      Impact: iSCSI.

bnx2 v2.0.17l (Aug 19, 2010) cnic 2.2.5l (Aug 19, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49502) - bnx2x_panic_dump doing DHCP and Data/Header Digest

      Cause: A mismatch was found in the txbd where the hw prod idx did not
             match the sw prod idx (via the vlan_id field).  The problem will
             show when uIP restarts without cnic reload.  Since uIP restarted,
             it has lost all previous history about the uio ring.

      Change: Added cnic_shutdown_rings to the uio_close path so whenever
              uio_open is called from uIP, the rings will start off fresh.
     
      Impact: 570X/5771X iSCSI.

   2. Problem: (CQ49211) Connection via bnx2i path fails in SuSE 11 SP1

      Cause: For 5708/09, the previous firmware set did not take the l2 frame
             header length into account in the placement filter.

      Change: Updated to 5706/08 fw 6.0.14 and 5709 fw 6.0.16 which addresses
              this issue.
     
      Impact: 570X iSCSI.
    

bnx2 v2.0.17k (Aug 18, 2010) cnic 2.2.5k (Aug 18, 2010)
=========================================================
   Fixes
   -----
   1. Problem: iSCSI sessions do not recover when running under
               heavy stress conditions with the socket layer.

      Cause: The NetLink buffer would get congested, so that the response
             to the PATH_UPDATE back to uIP would not be delivered.

      Change: Use CNIC to throttle the number of outstanding PATH_REQ's
              to uIP, easing the congestion on the Netlink buffer.

      Impact: 570X/5771X iSCSI.

bnx2 v2.0.17j (Aug 15, 2010) cnic 2.2.5j (Aug 15, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49395) Session recovery occurs during heavy traffic.

      Cause: The mapping of the 10g hw context id to l5 cid didn't consider
             the port/vfid.

      Change: Fixed the 10g hw context id to l5 cid mapping in TCP OOO
     
      Impact: 5771X iSCSI.

   2. Problem: (CQ49111) System freezes when unloading bnx2x drivers while
               having active sessions.

      Cause: The iro_arr was not initialized before deferencing which led to
             a kernel panic.  This is caused by a race condition between uIP
             and cnic.

      Change: Moved the initialization of the iro_arr to before uIP can call
              uio open.

      Impact: 5771X iSCSI.

   3. Problem: (CQ49211) 5708/09 Connection via bnx2i path fails SuSE 11 sp1

      Cause: For 5709, the fast coalescing algorithm had a bug in the fw.

      Change: Updated 5709 MIPS firmware to 6.0.14 which contains a fix for
              this issue.

      Impact: 5709 iSCSI.

   4. Problem: (CQ46393) 5706/08/09 NC-SI Traffic Stops After Host Kernel Panic

      Cause: RV2P firmware was set to drop input packets at a rate which is
             slower than input line rate when the host stops posting buffers.
             This has caused the rxp ftq to backup which eventually led to the
             rxp ftq hw to assert PAUSE and flood the network.

      Change: RV2P firmware was modified to disable any waiting before dropping
              the input packet when the host doesn't post buffers.

      Impact: 5706/08/09.


bnx2 v2.0.17i (Aug 09, 2010) cnic 2.2.5i (Aug 09, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49159) 57710 firmware asserts running disktest.

      Cause: CSTORM memory corruption.

      Change: Do not initialize and use the FCoE EQ on 57710.  The memory
              offsets for the FCoE EQ ring are not defined on 57710.

      Impact: 57710 iSCSI.

   2. Problem: (CQ49271) Soft lockup during ifup/ifdown test with active iSCSI
               connections.

      Cause: rtnl_lock may have a circular dependency with another filesystem
             mutex during uio_close().

      Change: Removed rtnl_lock() in cnic_uio_close().

      Impact: All iSCSI.

bnx2 v2.0.17h (Aug 03, 2010) cnic 2.2.5h (Aug 02, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Enabled new RV2P flow control on all bnx2 devices.

      Impact: All bnx2 devices.

   2. Change: Suppressed "OOO CQE is empty" kernel message.

      Impact: None.

bnx2 v2.0.17g (Aug 02, 2010) cnic 2.2.5g (Aug 02, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49152) cnic driver crashes during iscsid restart.

      Cause: cnic_wq destroyed while cnic_delete_task() is still queued
             in the workqueue.

      Change: Call destroy_workqueue() after cnic_release() which waits
              for the cnic_delete_task() to finish.

      Impact: 10G iSCSI.

bnx2 v2.0.17f (July 30, 2010) cnic 2.2.5f (July 30, 2010)
=========================================================
   Fixes
   -----
   1. Problem: iSCSI license not read correctly on 57712 in NIC partitioning
               mode.

      Cause: Missing NIC partitioning license logic.

      Change: Added NIC partitioning license logic.

      Impact: 10G iSCSI.

   Enhancements
   ------------
   1. Change: Updated 5709 firmware to 6.0.13.  The new 5709 firmware
              has additional rx and tx performance improvements.

      Impact: 5709.

bnx2 v2.0.17e (July 29, 2010) cnic 2.2.5e (July 29, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49117, CQ49111) Soft locup when unloading bnx2x with cnic
               and bnx2fc/bnx2i loaded.

      Cause: cnic_cm_stop_bnx2x_hw() thread under rtnl_lock() and pci_bus_sem
             has to wait for cnic_delete_task() to finish the 2-second wait
             and CFC DELETE of every FCoE or iSCSI connection.  There may
             be work structs scheduled on the common workqueue ahead of
             cnic_delete_task() that require the same semaphores, leading
             to the soft lockup.

      Change: Use a dedicated workqueue for cnic_delete_task().

      Impact: 10G iSCSI and FCoE.

   2. Problem: (CQ49113) Compilation error with bnx2x 1.60.30.
               (CQ48828) lediag fails with cnic loaded.

      Cause: license_key structure changed to use all 32-bit fields.  This
             change is to fix CQ48828 (lediag fails with cnic loaded).
             16-bit access causes lediag failure.

      Change: Made corresponding change to read 32-bit values for the
              iSCSI license.

      Impact: 10G iSCSI.

   3. Problem: (CQ49097) cnic panics when loading on 5708.

      Cause: The driver uses NULL OOO ring pointers to initialize OOO
             for 5708.

      Change: Skip OOO completely on 5708.

      Impact: bnx2 iSCSI.

bnx2 v2.0.17d (July 28, 2010) cnic 2.2.5d (July 28, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49071) Soft lockup during system shutdown after logging
               in to 10G iSCSI sessions.

      Cause: This was introduced in 2.2.5c when fixing CQ49003.
             flush_scheduled_work() can deadlock because we're
             holding rtnl_lock and linkwatch_event may be on the
             workqueue.

      Change: Fixed by using flags to wait for the cnic_delete_task()
              to finish.

      Impact: 10G iSCSI.

   2. Problem: cnic driver does not load on 5708 devices.

      Cause: Bug in driver that skips devices without OOO support.

      Change: OOO setup has been changed so that cnic initialization will
              continue even if OOO fails for whatever reason on all chips.

      Impact: iSCSI.

   Enhancements
   ------------
   1. Change: Updated 5708 firmware to 6.0.11 and 5709 firmware to
              6.0.12.  The new 5709 firmware fixes small packet rx
              performance issue.  Some adiitional fixes for iSCSI
              and OOO.

      Impact: All bnx2 chips.

bnx2 v2.0.17c (July 23, 2010) cnic 2.2.5c (July 23, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ49003) Panic in cnic_free_bnx2x_conn_resc() during
               ifdown with many 10G iSCSI active sessions.

      Cause: cancel_work_sync() is not available in RHEL5.x kernels to
             wait for cnic_delete_task() to finish before freeing
             the device's data structures (in particular the csk table).

      Change: Use flush_scheduled_work() to wait instead.

      Impact: 10G iSCSI on older kernels (e.g. RHEL5.x)

   Enhancements
   ------------
   1. Change: Added AER (Advanced Error Reporting) on bnx2.

      Impact: None.

bnx2 v2.0.17b (July 20, 2010) cnic 2.2.5b (July 20, 2010)
=========================================================
   Fixes
   -----
   1. Problem: Still seeing uio_release panics during ifup/ifdown test.

      Cause: UIO device unregistered prematurely.

      Change: Do not unregister UIO devices until rmmod.

      Impact: iSCSI.

   Enhancements
   ------------
   1. Change: Various upstream patches.  Please see ChangeLog for details.
 
bnx2 v2.0.16d (July 14, 2010) cnic 2.2.4d (July 14, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ44916) Unload bnx2/bnx2x fails after connecting to
               iSCSI targets.

      Cause: UIO device deleted before userspace has closed the device,
             causing various failures including kernel panic.

      Change: Separated UIO structure from cnic_dev structure so that
              we can wait until UIO is closed before unregister and deleting
              UIO.

      Impact: iSCSI. This change should have possitive impact on ifup/ifdown,
              MTU change/selftest/hotplug/etc with active iSCSI sessions.

   Enhancements
   ------------
   1. Change: Allocate the actual number of MSI-X vectors instead of always
              9.  Also, keep trying if the number of vectors is less than
              the desired number.

      Impact: 5709 networking and iSCSI.

bnx2 v2.0.16c (July 12, 2010) cnic 2.2.4c (July 12, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Added VLAN_TAG_PRESENT to distinguish between physical and
              VLAN netevents in cnic.

      Impact: FCoE.

bnx2 v2.0.16b (July 8, 2010) cnic 2.2.4b (July 8, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ48753) cnic will not compile with bnx2x 1.60.27.

      Cause: IGU symbols not defined without ELINK_DEBUG defined.

      Change: Added ELINK_DEBUG.

      Impact: None.

   2. Problem: (CQ48717) Kernel panic in bnx2x during ifdown with active iSCSI
               sessions.

      Cause: uio_close() is called after the device is already down.  bnx2x
             will crash when we try to shutdown the iSCSI ring.

      Change: Shutdown the iSCSI ring even if uio_close() is not called in
              the shutdown path.

      Impact: 10G iSCSI.

   Enhancements
   ------------
   1. Change: Always run in MSI-X mode on 5709.

      Impact: 5709.

   2. Change: Added wait of 2 seconds when sending PATH_REQ if UIO has not
              been opened yet.  This improves the liklihood of login success
              during the first login if using older iscsid.

      Impact: iSCSI.

bnx2 v2.0.15k (July 1, 2010) cnic 2.2.3k (July 1, 2010)
=========================================================
   Fixes
   -----
   1. Problem: Compile problems on various older kernels.

      Cause: pci_save_state()/pci_restore_state incompatibility in older
             kernel.  DECLARE_PCI_UNMAP_ADDR() caused dma mapping
             field to be undefined on kernels not using IOMMU.

      Change: Do not use pci_save_state()/pci_restore_state() on older
              kernels.  Use dma_addr_t to declare mapping fields.

      Impact: None.

bnx2 v2.0.15j (June 30, 2010) cnic 2.2.3j (June 30, 2010)
=========================================================
   Fixes
   -----
   1. Problem: bnx2x firmware asserts if cnic is loaded on 57711E (MF)
               functions 2 and higher and the device is brought up.
 
      Cause: Statistics for iSCSI ring not implemented, casuing firmware to
             assert when the iSCSI ring is initialized.

      Change: Do not enable statistics if the clien ID is bigger than
              MAX_STAT_COUNTER_ID.

      Impact: bnx2x iSCSI on 57711E.

   2. Problem: cnic terminations for iSCSI and FCoE connections may panic or
               hang during repeated ifdown/ifup.

      Cause: Data structures may be freed while cnic is still waiting for the
             2 second CFC_DELETE wait time.

      Change: Use cancel_work_sync() to wait for the completion of the
              cnic_delete_task().  Check that the CTX_FL_DELETE_WAIT flag
              has been set before waiting.

      Impact: bnx2x iSCSI and FCoE.

   3. Problem: (CQ48642) Compile errors on older kernels.

      Cause: VMWARE_ESX_DDK_VERSION not defined in Linux.

      Change: Added check for VMKLNX.

      Impatc: None.

bnx2 v2.0.15i (June 30, 2010) cnic 2.2.3i (June 30, 2010)
=========================================================

   Enhancements
   ------------
   1. Change: Added iSCSI out-of-order support.

      Impact: iSCSI.

bnx2 v2.0.15h (June 18, 2010) cnic 2.2.3g (June 10, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Enabled HW RSS indirection table on 5709.

      Impact: RSS on 5709.

   2. Change: Updated to 6.0.10 firmware.

      Impact: all chips.

bnx2 v2.0.15g (June 10, 2010) cnic 2.2.3g (June 10, 2010)
=========================================================
   Enhancements
   ------------
   1. Change: Added FCoE statistics SPQ command.

      Impact: FCoE.

bnx2 v2.0.15f (June 4, 2010) cnic 2.2.3f (June 4, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ46648) CID leaks while running iLAB 5.12 connection closure
               test.

      Cause: Race condition between bnx2i initiated TCP close and an
             asynchronous RESET_COMP from firmware.

      Change: Re-structured cnic code that handles close, abort, and various
              completion events to ensure all scenarios are accounted for
              with no race conditions.

      Impact: All iSCSI connection termination scenarios.

   Enhancements
   ------------
   1. Change: Added host iSCSI IP address to the cnic_dev structure so that
              bnx2i can report it to sysfs.  This is needed for iSCSI boot
              during pivot_root.

      Impact: iSCSI boot.

bnx2 v2.0.15e (June 3, 2010) cnic 2.2.3d (June 2, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ48133) bnx2 fails to compile on older 2.6 kernels.

      Cause: PCI MSIX attributes not defined in kernel .h files.

      Change: Added compatibility code.

      Impact: None.

bnx2 v2.0.15d (June 2, 2010) cnic 2.2.3d (June 2, 2010)
=========================================================
   Fixes
   -----
   1. Problem: (CQ47942) rmmod hangs if the device has been opened and closed
               more than once.

      Cause: netif_napi_add() called once during every ->open().
             netif_napi_del() is only called once during rmmod.

      Change: Call netif_napi_del() in ->close().

      Impact: None.

bnx2 v2.0.15c (May 21, 2010) cnic 2.2.3c (April 21, 2010)
=========================================================
   Fixes
   -----
   1. Problem: service iscsid restart on 5709 does not work.

      Cause: Not restarting KWQ correctly due to stale context.

      Change: Fixed by correctly zeroing KWQ/KCQ/RX context
              memory.

      Impact: bnx2 iSCSI.

   2. Problem: iSCSI license not read correctly on 57711E in single
               function mode.

      Cause: Bug in reading the mf_cfg block.

      Change: Bug fixed.

      Change: 57711E iSCSI.

   Enhancements
   ------------
   1. Change: Added GRO support.

      Impact: All devices on kernels supporting GRO.

bnx2 v2.0.15b (May 12, 2010) cnic 2.2.3b (April 12, 2010)
=========================================================
   Fixes
   -----
   1. Problem: iSCSI does not work on 57712.

      Cause: License checking always disabled on 57712.

      Change: Added proper checking for 57712 iSCSI license.

      Impact: None.

   2. Problem: (CQ47360) Compile errors on older kernels not supporting
               UIO and latest iSCSI.

      Cause: New cnic driver will only compile on kernels newer than
             2.6.31 and some selected distros that have the backport.

      Change: Makefile changes to compile cnic only on supported kernels.

      Impact: None.

   Enhancements
   ------------
   1. Change: Changed bnx2_cnic_probe() to bnx2_cnic_probe2() so
              that out-of-tree driver componenets will not inter-
              operate with upstream components.  This avoids
              compatibility problems that often lead to kernel
              crashes.

      Impact: Out-of-tree cnic will not operate with upstream
              L2 drivers and vice versa.

   2. Change: Revert the PRS_REG_NIC_MODE change done in 2.0.11h.  Newer
              bnx2x driver (1.60.18+) do not require this setting.

      Impact: None.

bnx2 v2.0.14b (April 28, 2010) cnic 2.2.2b (April 28, 2010)
============================================================
   Enhancements
   ------------
   1. Change: Added compatibility code for RHEL5.4+ kernels.

      Impact: None.

   2. Change: Added VLAN ID to netdev event callback.

      Impact: bnx2i.

bnx2 v2.0.13b (April 22, 2010) cnic 2.2.1c (April 30, 2010)
============================================================
   Enhancements
   ------------
	Add debug code to dump all KWQE's (RAMROD) posted to 5771x chipset.
	This feature can be enabled/disabled using module parameter, by default
	this feature is disabled. Also a exported function is introduced to
	dump 3 pages worth of KCQE's

bnx2 v2.0.13b (April 22, 2010) cnic 2.2.1b (April 22, 2010)
============================================================
   Enhancements
   ------------
   1. Change: cnic has been updated to be similar to the upstream versions
              using UIO with added T6.0 iSCSI support for 10G and other bug
              fixes.

      Impact: iSCSI now requires UIO, new bnx2i, and bnx2x 1.60.16+.

bnx2 v2.0.11j (April 22, 2010) cnic 1.10.2j (April 22, 2010)
============================================================
   Fixes
   -----
   1. Problem: (CQ47298) Does not compile with bnx2x 1.60.16.

      Cause: cnic_if.h has changed.

      Change: Updated code to be compatible with new cnic_if.h.

      Impact: None.

bnx2 v2.0.11i (April 15, 2010) cnic 1.10.2i (April 15, 2010)
============================================================
   Fixes
   -----
   1. Problem: (RHBZ 511368) Driver loses one MSI-X vector after many hours
               of traffic.

      Cause: Chip timing out on write cycle to the MSI-X mask bit, causing
             the unmask operation to be dropped.

      Change: Increase GRC timeout in register 0x8cc.
              (Same fix from 2.0.8e).

      Impact: bnx2x MSI-X mode.

   2. Problem: (RHBZ 554706) scheduling while atomic warning when bonding and
               VLANs are used with cnic loaded.

      Cause: bond_del_vlans_from_slave() holds bond->lock when calling
             ndo_vlan_rx_register().  bnx2 calls bnx2_netif_stop() to
             stop the rx handling while changing the vlgrp.  The call
             also calls bnx2_cnic_stop() which has many sleeping functions.

      Change: Do not stop cnic when VLANs are changed.  Since there is no
              reset during VLAN change, there is no need to stop cnic.
              (Same fix from 2.0.8e).

      Impact: VLAN and iSCSI.

   3. Problem: (CQ46940) Poor small packet performance on 5709.

      Cause: FTQ discards caused by bottlenecks in firmware.

      Change: Upgraded to 5.0.0.j15 MIPS firmware for 5709.
              (Same fix from 2.0.8c)

      Impact: 5709.

   Enhancements
   ------------
   1. Change: Improved rx performance by prefetching next entry's descriptor
              header and SKB.

      Impact: All chips.

   2. Change: Updated cnic interface to support out-of-order processing.  This
              is needed for bnx2x 1.60.15 but the feature is not available in
              cnic yet.

      Impact: None.

bnx2 v2.0.11h (Mar 29, 2010) cnic 1.10.2h (Mar 29, 2010)
========================================================
   Fixes
   -----
   1. Problem: iSCSI not functional with bnx2x 1.60.11.

      Cause: PRS_REG_NIC_MODE set to 1, causing L2 to receive iSCSI traffic.

      Change: Cleared PRS_REG_NIC_MODE.

      Impact: bnx2x iSCSI.

bnx2 v2.0.11g (Mar 17, 2010) cnic 1.10.2g (Mar 17, 2010)
========================================================
   Enhancements
   ------------
   1. Problem: iSCSI not functional on 57712.

      Cause: Bugs and incomplete support of 57712 in cnic driver.

      Change: Fixed and completed 57712 support.

      Impact: iSCSI.

bnx2 v2.0.11f (Mar 15, 2010) cnic 1.10.2f (Mar 15, 2010)
======================================================
   Fixes
   -----
   1. Change: More 6.0.12 firmware HSI changes (bnx2x 1.60.10).

      Impact: bnx2x iSCSI.

bnx2 v2.0.11e (Mar 9, 2010) cnic 1.10.2e (Mar 9, 2010)
======================================================
   Enhancements
   ------------
   1. Change: Updated to 6.0.12 firmware HSI (bnx2x 1.60.10).

      Impact: bnx2x iSCSI.

bnx2 v2.0.11d (Feb 25, 2010) cnic 1.10.2d (Feb 25, 2010)
========================================================
   Enhancements
   ------------
   1. Change: Fixed shared memory base checking for T6.0 bnx2x HSI.

      Impact: bnx2x iSCSI.

   2. Change: Added new igu status block ID to handle iSCSI status
              block acknowledgement in T6.0 HSI.

      Impact: bnx2x iSCSI.

   3. Change: Allow multiple ethtool speed advertisments when using
              newer ethtool 6.

      Impact: ethtool -s.

   Fixes
   -----
   1. Problem: Statistics 64-bit counters may not be accurate after MTU
               change.

      Cause: Bug missing the carry when summing 64-bit counters.

      Change: Fixed the missing carry.

      Impact: statistics.

bnx2 v2.0.11c (Feb 04, 2010) cnic 1.10.2c (Feb 04, 2010)
========================================================
   Enhancements
   ------------
   2. Change: Added 57712 support in cnic driver.

      Impact: None.
 
bnx2 v2.0.11b (Jan 28, 2010) cnic 1.10.2b (Jan 27, 2010)
========================================================
   Enhancements
   ------------
   1. Change: Saved bnx2 statistics block before MTU change, ring change,
              etc.

      Impact: bnx2 statistics.

bnx2 v2.0.10b (Jan 12, 2010) cnic 1.10.1b (Jan 12, 2010)
========================================================
   Enhancements
   ------------
   1. Change: Improved cnic's MTU change/reset logic to fix multiple problems
              in VMWare.

      Impact: iSCSI.

   2. Change: Converted to bnx2x T6.0 HSI.

      Impact: bnx2x iSCSI.
 
bnx2 v2.0.8e (April 13, 2010) cnic 1.9.13b (Dec 16, 2009)
=========================================================
   Fixes
   -----
   1. Problem: (RHBZ 511368) Driver loses one MSI-X vector after many hours
               of traffic.

      Cause: Chip timing out on write cycle to the MSI-X mask bit, causing
             the unmask operation to be dropped.

      Change: Increase GRC timeout in register 0x8cc.

      Impact: bnx2x MSI-X mode.

   2. Problem: (RHBZ 554706) scheduling while atomic warning when bonding and
               VLANs are used with cnic loaded.

      Cause: bond_del_vlans_from_slave() holds bond->lock when calling
             ndo_vlan_rx_register().  bnx2 calls bnx2_netif_stop() to
             stop the rx handling while changing the vlgrp.  The call
             also calls bnx2_cnic_stop() which has many sleeping functions.

      Change: Do not stop cnic when VLANs are changed.  Since there is no
              reset during VLAN change, there is no need to stop cnic.

      Impact: VLAN and iSCSI.

bnx2 v2.0.8d (April 02, 2010) cnic 1.9.13b (Dec 16, 2009)
=========================================================
   Enhancements
   ------------
   1. Change: Improved rx performance by prefetching next entry's descriptor
              header and SKB.

      Impact: All chips.

bnx2 v2.0.8c (Mar 31, 2010) cnic 1.9.13b (Dec 16, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ46940) Poor small packet performance on 5709.

      Cause: FTQ discards caused by bottlenecks in firmware.

      Change: Upgraded to 5.0.0.j15 MIPS firmware for 5709.

      Impact: 5709.

bnx2 v2.0.8b (Dec 16, 2009) cnic 1.9.13b (Dec 16, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ44964) RHEL5.4 crashes when bnx2 driver is updated with
               out-of-tree version.

      Cause: Newer out-of-tree driver's cnic_eth_dev structure has been
             updated, making it incompatible with RHEL5.4's cnic driver.

      Change: Reverted the structure update for RHEL5.4.

      Impact: None.

   Enhancements
   ------------
   1. Change: Improved the reset logic to prevent NETDEV WATCHDOG when
              TSS is enabled.

      Impact: MTU change, ring size change, selftest, etc.

   2. Change: Fixed some compiler warnings when compiling bnx2 and cnic
              drivers.

      Impact: None.

bnx2 v2.0.7b (Dec 7, 2009) cnic 1.9.12b (Dec 7, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ44620) Spurious KCQ entries leading to bnx2x assert.

      Cause: Stale status block with old KCQ index after restarting hardware.

      Change: Added some additional cleanup and initialization steps including
              zeroing the status block.

      Impact: None.

   Enhancements
   ------------
   1. Change: Updated RV2P P1 for 5709 to 5.0.0.j10 to address a flow control
              issue that can lead to context corruption.  Flow control
              watermarks have also been optimized.

      Impact: 5709 flow control.

bnx2 v2.0.6b (Dec 4, 2009) cnic 1.9.11b (Nov 19, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ44801) Unable to compile bnx2 on most 2.6 kernels.

      Cause: print_mac() kernel compatibility not defined correctly.

      Fix: Simple compatibility fix.

      Impact: None.

bnx2 v2.0.5b (Dec 4, 2009) cnic 1.9.11b (Nov 19, 2009)
=======================================================
   Enhancements
   ------------
   1. Change: Sync'ed up with latest upstream bnx2 driver.  Please see
              ChangeLog for details.

      Impact: Yes, Linux and VMWare.

bnx2 v1.9.42b (Dec 1, 2009)
=======================================================
   Fixes
   -----
   1. Problem: Compile error against the VMware ESX 4.0 DDK

      Cause: vmk_IscsiNetHandle is not defined with the
             VMware ESX 4.0 DDK

      Change: Added compile flag

      Impact: None.


   Enhancements
   ------------

   1. Change: Add BMAPILNX ioctl to allow for FW upgrade

      Impact: bnx2 VMware ESX 4.0


bnx2 v1.9.41b (Nov 19, 2009) cnic 1.9.11b (Nov 19, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ44617) Compile error on SLES10 and RHEL4 kernels.

      Cause: bool not defined on older kernels.

      Change: Added compatibility code.

      Impact: None.

   2. Problem: (CQ42096) iSCSI sessions do not recover after running
               selftest/ifdown/etc with max sessions connected.

      Cause: cnic_lock mutex has circular dependency, causing deadlock
             when iscsid tries to cleanup connections.

      Change: Merged in upstream cnic patches to avoid circular
              dependency.

      Impact: None.

   Enhancements
   ------------
      Change: (CQ43088) Changed the firmware version string format.

      Impact: None.

bnx2 v1.9.40b (Nov 18, 2009) cnic 1.9.10b (Nov 12, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ44528) Kernel runs out of memory after load/unload bnx2.

      Cause: RX SKB buffers were not freed.

      Change: Fixed the regression introduced by VMWare development.

      Impact: None.

   2. Problem: (CQ44399) iLAB 5.10 connection establishment test failure.

      Cause: Firmware SYN-ACK handling issue.

      Change: Updated firmware to 5.0.0.j6 in bnx2_fw.h and 5.0.0.j9 in
              bnx2_fw2.h. 

      Impact: iSCSI.

   Enhancements
   ------------
      Change: (CQ43088) Added VPD-R V0 firmware version string to ethtool -i.

      Impact: None.

bnx2 v1.9.39b (Nov 6, 2009) cnic 1.9.10b (Nov 12, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ44470) Kernel panics when bnx2/bnx2x is unloaded with
               active iSCSI sessions.

      Cause: NETDEV_UNREGISTER will cause bcm570x_* transport to be
             destroyed while sessions may still be active.

      Change: Use module referencing to prevent bnx2/bnx2x from unloading.
              This is a simple interim solution to revert back to the
              old behavior.  In T6.0, we will migrate to the upstream
              driver architecture and network drivers will be able to be
              unloaded again.

      Impact: None.

   Enhancements
   ------------
      Change: Added a short register dump during NETDEV_WATCHDOG.

      Impact: None.

bnx2 v1.9.38b (Nov 6, 2009) cnic 1.9.9b (Nov 6, 2009)
=====================================================
   Fixes
   -----
   1. Problem: (CQ44446) cnic panics during 10G iSCSI initialization.

      Cause: Recent interface changes introduced this regression.
             cnic_service_bnx2x() panics when accessing uninitialized
             status block pointer.

      Change: Added state checking in cnic_service_bnx2x().

      Impact: None.

   2. Problem: (CQ44439) bnx2 does not compile on older 2.6 kernels.

      Cause: mutex not defined on older kernels.

      Change: Use rtnl_lock() to protect bnx2_reset_task().

      Impact: None.

bnx2 v1.9.37b (Nov 4, 2009) cnic 1.9.8b (Nov 3, 2009)
=====================================================
   Enhancements
   ------------

   1. Change: Updated 5708/5706 firmware to 5.0.0.j5 for better small packet
              performance.

      Impact: 5706/5708.

   Fixes
   -----
   1. Problem: (CQ43280) Cannot unload cnic after bnx2/bnx2x is loaded.

      Cause: module referencing.

      Change: Changed module referencing scheme.

      Impact: None.

bnx2 v1.9.36b (Oct 22, 2009)
=======================================================
   Enhancements
   ------------

   1. Change: Expand on NetQueue module parameters.

      Impact: bnx2 VMware NetQ.

bnx2 v1.9.35b (Oct 22, 2009)
=======================================================
   Fixes
   -----
   1. Problem: If only 1 queue is used on VMware ESX, iSCSI
               offload would fail.

      Cause: The inboxed VMware driver would only use
             1 MSI-X vector.  Because of this the driver
             would not setup MSI-X

      Change: Always setup MSI-X reguardless of the
              number of MSI-X vectors used.

      Impact: 5709 iSCSI on VMware

bnx2 v1.9.34b (Oct 20, 2009)
=======================================================
   Fixes
   -----
   1. Change: Updated xinan firmware to 5.0.0.j8
              Nop timeout tuning (VMware PR467194)
              Added a new data fw heartbeat to work with
              the new bootcode and also handle older
              bootcode.

      Impact: 5709.

bnx2 v1.9.33b (Oct 8, 2009)
=======================================================
   Enhancements
   ------------

   1. Change: Make NetQueue module parameters more explict.

      Impact: bnx2 VMware NetQ.

bnx2 v1.9.32b (Oct 8, 2009) cnic v1.9.7c (Oct 8, 2009)
=======================================================
   Fixes
   -----
   1. Problem: CNIC unable to handle an unsolicited
               RESET COMPLETE which would result in a hung
               session.

      Cause: The CNIC driver couldn't handle unexpected SYN.

      Change: The CNIC driver will now handle an unsolicited
              RESET COMPLETE and cleanup properly.

      Impact: cnic

   Enhancements
   ------------

   1. Change: Allow the default NetQueue options to be
              controlled through the macro,
              BNX2_ENABLE_NETQUEUE.

      Impact: bnx2 VMware NetQ.

bnx2 v1.9.31b (Oct 6, 2009)
=======================================================
   Fixes
   -----
   1. Problem: PSOD would occur when alloc()'ing NetQueue's

      Cause: With the removal of the global 'disable_netq' 
             parameters, the NetQueue CID's weren't being
             mapped in some cases

      Change: Always map the NetQueue CID's

      Impact: bnx2 VMware ESX NetQueue

bnx2 v1.9.30b (Oct 5, 2009)
=======================================================
   Fixes
   -----
   1. Problem: PSOD would occur because of TX timeouts

      Cause: The VMware netdev watchdog timer was ran before
             the reset task got a chance to run on a loaded
             system. 

      Change: Elongated the TX timeout value for VMware ESX
              only to allow for the reset task to run.

      Impact: bnx2 VMware ESX


   Enhancements
   ------------

   1. Change: Updated vmkernel module parameter, 'force_netq',
              to allow NetQueue setting to be adjusted per
              function rather then globally for all functions.

      Impact: bnx2 VMware ESX


bnx2 v1.9.29b (Oct 1, 2009)
=======================================================
   Fixes
   -----
   1. Change: Updated xinan firmware to 5.0.0.j7 and
              teton firmware to 5.0.0.j4 which will fix
              L2 hang due to iSCSI PDU's padding byte
              extended to another TCP segment

      Impact: 5706/5708/5709.


bnx2 v1.9.28b (Sep 25, 2009)
=======================================================
   Fixes
   -----
   1. Change: Updated firmware to 5.0.0.j6 which will add
              the corresponding flow control trip point.

      Impact: 5709.


bnx2 v1.9.27b (Sep 24, 2009) cnic v1.9.7b (Sep 24, 2009)
=======================================================
   Fixes
   -----
   1. Problem: For the cnic users would see in the kernel logs:

               "kcq abs(hw_prod(0) - sw_prod(65534)) >
                MAX_KCQ_IDX(2047)"

      Cause: The function was not taking into account the
             wrapping of the software and hardware producer
             indexes.

      Change: Recaculate the difference between the index with
              wrapping taken into account.

      Impact: cnic


   Enhancements
   ------------

   1. Change: Updated firmware to 5.0.0.j5 which increased the
              rxpq depth from 32 to 256 to enhance the performance 
              on systems without flow control.

      Impact: 5709.


bnx2 v1.9.26c (Sep 17, 2009)
=======================================================
   Enhancements
   ------------
   1. Change: Cleanup the VMware NetQueue code.  Eliminate unneeded
              RX flush routine, fix the number of queues to be the
              same on 1500 and 9000 MTU sized packets.

      Impact: bnx2 VMware NetQ.

bnx2 v1.9.26b (Sep 14, 2009)
=======================================================
   Fixes
   -----
   1. Problem: VMware PSOD on MTU change

      Cause: MSI-X window was remapped to the beginning of the PCI
             config space.  The driver would disable the bar space
             because the MSI-X window was remapped incorrectly.  This
             would eventually cause a PSOD.

      Change: Before the chip reset, the driver would disable MSI-X,
              after the chip reset, MSI-X is re-enabled.

      Impact: VMware NetQueue


bnx2 v1.9.25b (Aug 21, 2009) cnic v1.9.6 (Aug 21, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ 43182/43252) Compile error on RHEL4

      Cause: struct mutex not defined on older kernels.

      Change: Wrap cnic_lock mutex structure and code with #ifdef BCM_CNIC.

      Impact: None.

   2. Problem: Unloading cnic after ifdown may crash.

      Cause: cnic unregisters with bnx2/bnx2x twice.

      Change: Fixed logic to unregister only once.

      Impact: None.

bnx2 v1.9.24b (Aug 13, 2009) cnic v1.9.6 (Aug 13, 2009)
=======================================================
   Fixes
   -----
   1. Problem: (CQ 42778) Kernel occasionally panics when enabling jumbo
               frames.

      Cause: If the driver is unable to allocate memory for the buffers,
             the device is not properly shutdown.

      Change: Added logic to shutdown device if unable to allocate buffers
              and complete the setup of the device.

      Impact: bnx2, changing MTU and ring sizes.

   Enhancements
   ------------
   1. Change: Updated firmware to 5.0.0.j3 for better small packet rx
              performance.  Firmware also fixes header digest error during
              I/O.

      Impact: All bnx2 devices.

bnx2 v1.9.23b (July 29, 2009) cnic v1.9.5 (July 29, 2009)
==========================================================

   Fixes
   -----
   1. Problem: (CQ 42723) KCQ not resetting to 0 problem

      Cause:   RCU deadlock during shutdown

      Change:  Move the bnx2_register_cnic() call out of the
               above sequence. Instead, register and
               unregister during NETDEV_UP/NETDEV_DOWN events.

               Change all slow path RCU read locks to mutex.
               In cnic, we also use reference counting to
               protect some slow paths.

      Impact: bnx2 iSCSI, bnx2x iSCSI


bnx2 v1.9.22b (July 23, 2009) cnic v1.9.4 (July 23, 2009)
==========================================================

   Enhancements
   ------------
   1. Change: If a TX timeout occurs, there could be the possiblity that the
              chip is hung. By printing chip state into the kernel ring buffer,
              it will be easier to determine this.

      Impact: bnx2 iSCSI.

   2. Change: The bnx2 firmware should always be matched with the proper bnx2
              driver. The bnx2 firmware version string are now printed.
              It will be easier to identify the running firmware.

      Impact: bnx2

   3. Change: When a TX timeout occurs and the chip is reset, the ability to
              debug the chip further is lost.  This is because the chip state
              information is lost during the reset.  The users have a choice
              to prevent the chip reset.

      Impact: bnx2

   4. Change: Add a check to see if there was a KCQ overflow was
              in the bnx2x firmware.  Now this check has been moved to the
              CNIC so that the driver could control the cleanup/recovery.
              
      Impact: bnx2 iSCSI.


bnx2 v1.9.21b (July 16, 2009)
==========================================================
   Enhancements
   ------------
   1. Change: Updated firmware to 5.0.0.j2  to fix remote reset problem

      Impact: bnx2 iSCSI.


bnx2 v1.9.20b (July 09, 2009), cnic v1.9.3 (July 09, 2009)
==========================================================
   Fixes
   -----
   1. Problem: (CQ42534) cnic.c does not compile on older kernels.

      Cause:   Some iscsi_proto constants not defined in <scsi/iscsi_proto.h>

      Change:  Added the constant definitions if not already defined.

      Impact: None.

   Enhancements
   ------------
   1. Change: Updated firmware to 5.0.0.j to fix TMF releated iSCSI issues.

      Impact: bnx2 iSCSI.

bnx2 v1.9.19b (July 01, 2009), cnic v1.9.2 (July 01, 2009)
==========================================================
   Fixes
   -----
   1. Problem: (CQ42399) 10G iSCSI fails when initiator and target MTUs
               don't match.

      Cause: cnic driver sets the MSS without knowing the actual MSS
             option and timestamp option during TCP connection.

      Change: Changed driver to set MSS to 0xffff so that firmware can
              calculate MSS on its own.

      Impact: bnx2x iSCSI.

   2. Problem: 1G iSCSI fails when initiator and target MTUs don't
               match and timestamp is enabled.

      Cause: Firmware was not adjusting for the 12-byte timestamp option
             if MSS was reduced by MSS option.

      Change Updated firmware to 5.0.0.i

      Impact: bnx2 iSCSI.

   3. Problem: (CQ42353) Unable to disable TCP timestamp on 10G iSCSI.

      Cause: Timestamp was hardcoded to be enabled for 10G.

      Change: Update global timestamp option during each TCP connection.

      Impact: bnx2x iSCSI.

   4. Problem: (CQ42329) bnx2x MC assert during IPv6 login/logout.

      Cause: EQ filled with more than 128 L4 kcqes without MSI-X interrupt
             for 2 seconds.  The driver can only buffer 128 L4 kcqes.

      Change: Increased L4 kcqe buffer to 256 entries as a temporary solution.
              Need to understand the delayed interrupt issue.

      Impact: None.

bnx2 v1.9.18b (June 25, 2009), cnic v1.9.1 (June 24, 2009)
==========================================================
   Enhancements
   ------------
   1. Change: Added FTQDiscard counter to the list of counters being
              reported.  During small packet test, there may be FTQ
              overflow and this counter is very useful.

      Impact: None.

   2. Change: Updated firmware to 5.0.0.h to improve small packet L2
              performance and to enhance iSCSI TMF handling.

      Impact: 5706/5708/5709.

bnx2 v1.9.17b (June 24, 2009), cnic v1.9.1 (June 24, 2009)
==========================================
   Fixes
   -----
   1. Problem: Leaking NetQueues if the firmware did not respond in time

      Cause: System might be clogged and there is not enough time to 
             process the KCQ

      Change: Updated driver/firmware to allow the calling of the free RX
              queue request before a RX alloc request is issued

      Impact: 5709

   2. Problem: An offloaded iSCSI connection would get stuck

      Cause: Issing an offload request might fail, and this was not handled
             properly.

      Change: Updated driver/firmware to return the proper return code and
              handle offload connection failures.

      Impact: 5706/5708/5709

   3. Problem: tasklet_init() is being called on a task that is scheduled

      Cause: When the CNIC calls register_device(), that task might already
             be schedled.

      Change: tasklet_disable() is insufficient because the tasklet remains
              scheduled and stays on the tasklet list, instead tasklet_kill() 
              is now used.

      Impact: 5706/5708/5709



bnx2 v1.9.16b (June 10, 2009), cnic v1.9.0 (June 10, 2009)
==========================================================
   Enhancements
   ------------
   1. Change: (CQ38228) Use symbol_get() for ipv6 symbols so that the
              cnic driver will load without necessarily loading ipv6
              modules.

      Impact: iSCSI over IPv6.

   2. Change: Updated 5706/08/09 MIPS firmware to 5.0.0.g.

      Impact: 5706/08/09.

   3. Change: Backported some dma_mapping_error() checking.

      Impact: None.

bnx2 v1.9.15b (June 1, 2009), cnic v1.8.6 (June 1, 2009)
========================================================
   Enhancements
   ------------
   1. Change: Upstream bnx2 tx path optimizations.  Please see ChangeLog.

      Impact: bnx2 tx path.

   2. Change: In the cnic driver, save the last allocated TCP port during
              unregistration so that previously used TCP ports will not
              be immediately re-used.

      Impact: iSCSI.

   3. Change: VMWare TCP port allocation changes.

      Impact: VMWare iSCSI.

bnx2 v1.9.14b (May 21, 2009)
==========================================
   Fixes
   -----
   1. Problem: NOPOUT timeouts on 570x iSCSI connections.

      Cause: Bugs in TCP timestamp implementation.

      Change: Updated MIPS firmware to 5.0.0.f.

      Impact: 5706/5708/5709.

bnx2 v1.9.13b (May 18, 2009)
==========================================
   Fixes
   -----
   1. Problem: Potentially exceeding the NetQueue limit recommendations
               by VMware which could stress system resources

      Cause:  When system resources are strained.

      Change: There are now limits on the number of NetQueues which the
              driver will request:
              When the MTU is 1500 the max number of queues per port is 8
              When the MTU is 9000 the max number of queues per port is 4

      Impact: NetQueue enabled version of VMware ESX

   2. Problem: Getting conflicting NetQueue and iSCSI completions

      Cause:  When MSI-X is not used on a 5709, NetQueue is still enabled

      Change: NetQueue is not disabled is MSI-X is not used.

      Impact: NetQueue enabled version of VMware ESX


bnx2 v1.9.12b (May 13, 2009)
==========================================
   Fixes
   -----
   1. Problem: Potentially returning a negative number of NetQueues

      Cause: When calculating the number of rings, we use the calculation from
             the number of msi-x vectors returned,  The number of NetQueues
             returned could potentially be negitive if only 1 vector was
             returned.  This is because the driver was subtracting 2
             instead of subtracting 1 (for the default queue) from the total
             number of rings.

      Change: Return the proper number of queues not including the default
              queue.

      Impact: NetQueue enabled version of VMware ESX

bnx2 v1.9.11b (May 12, 2009), cnic v1.8.5 (May 13, 2009)
========================================================
   Fixes
   -----
   1. Problem: TCP Delay ACK not working on bnx2x iSCSI

      Cause: Disabled in cnic driver.

      Change: Fixed csk->tcp_flags definitions and enabled the proper storm
              bit for delay ACK.

      Impact: bnx2x iSCSI.

bnx2 v1.9.11b (May 12, 2009)
==========================================
   Fixes
   -----
   1. Problem: iSCSI timestamp TCP option not working.

      Cause: Disabled in firmware.

      Change: Updated to 5.0.0e MIPS firmware.

      Impact: 5709.

bnx2 v1.9.10b, cnic v1.8.4 (May 11, 2009)
==========================================
   Fixes
   -----
   1. Problem: NetQ and iSCSI do not work in Vmware environment.

      Cause: 1. cnic driver is overwriting CP and COM mailbox bit values newly
                defined to support multiple kcqs.

             2. Firmware is completing some iSCSI kcqes on the NetQ's kcq.

      Change: Fixed cnic driver to only set and clear bit 0 of the CP
              and COM mailbox.

              Firmware has been updated to 5.0.0d. This firmware also
              supports TCP timestamp option for iSCSI connections.

      Impact: 5706/5708/5709 iSCSI, NetQ.

bnx2 v1.9.9b (May 1, 2009)
==========================================
   Fixes
   -----
   1. Problem: There is link, but can't pass traffic on ESXi

      Cause: Bits in the RX context are being trampled during the
             renegotiation of the link.

      Change:  RX context offset 0x6 should only be initialized once
               during init and not be updated during run-time.  Offset
               4 contains the BIDX that's mapped to the mailbox.

      Impact: VMware with NetQueue

bnx2 v1.9.8b, cnic v1.8.2 (April 27, 2009)
==========================================
   Enhancements
   ------------
   1. Change: Updated cnic driver to support 1.50.x HSI as well as the older
              1.48.107 HSI.  A compile flag will be used to select one or the
              other.

      Impact: iSCSI on bnx2x.

   2. Change: Spec file and Makefile changes detect the proper module
              install directory.

      Impact: installation.

bnx2 v1.9.7b, cnic v1.8.1 (April 22, 2009)
==========================================
   Fixes
   -----
   1. Problem: Compile error with redfinition of struct kwqe.

      Cause: Both the CNIC and bnx2 defined this structure.

      Change: Because the bnx2 definition is L2 specific, it was renamed to
              struct l2_kwqe.

      Impact: None.

   2. Problem: Add context memory DMA alignment for 57710.

      Cause: For the 57710 context memory needs to be 16k aligned.
             Without this alignment you will see errors when trying to
             establish more then 5 iSCSI connections on VMware ESX 4.0 U1.

      Change: Properly aligned the context memory by allocating a bigger 
              chunk of memory and then finding the proper alignment.
              This reduces the number of possible connections in half
              but now we can properly establish more then 5 connections
              on VMware.

      Impact: iSCSI.


bnx2 v1.9.6b (April 17, 2009)
=============================
   Enhancements
   ------------
   1. Change: Added NetQueue support for VMware.

      Impact: 5709.

bnx2 v1.9.5b (April 17, 2009)
=============================
   Enhancements
   ------------
   1. Change: Updated to 5.0.0.a firmware with NetQ support and iSCSI max
              connection license information. RV2P firmware unchanged:
              4.6.16 for 5706, 4.6.15 for 5709.

      Impact: All chips.

   2. Change: Set USE_INT_PARAM on 5709.  This will switch the chip in
              use "interrupt mode" coalescing after MSI/MSI-X.

      Impact: 5709.

   3. Change: Included 5706 when doing statistics block DMA workaround.

      Impact: 5706.

bnx2 v1.8.8b (March 12, 2009)
=============================
   Enhancements
   ------------
   1. Change: Updated to latest 4.6.17 CP firmware for 5709.

      Impact: iSCSI licensing on 5709.

bnx2 v1.8.7b, cnic v1.7.8 (March 10, 2009)
==========================================
   Enhancements
   ------------
   1. Change: Reverted 5706/5708 firmware to 4.6.16.  Low latency interrupt
              mode does not work on 5706/5708.

      Impact: None.

   2. Change: VMWare changes to expose max. number of iSCSI connections in
              the cnic_device structure.

      Impact: VMware iSCSI.

   Fixes
   -----
   1. Problem: (CQ39867) Compile error on RHEL5.3 Xen kernel.

      Cause: msi related symbols undefined because CONFIG_PCI_MSI is not
             enabled on Xen kernels.

      Change: Added CONFIG_PCI_MSI around the msi related code.

      Impact: None.

   2. Problem: (CQ39818) iSCSI targets do not reconnect after running self test.

      Cause: Interrupt is disabled by bnx2 before notifying CNIC to clean up
             and stop.  As a result, bnx2i will not receive interrupts when
             closing the connections if sharing INTA/MSI with network.

      Change: Disable interrupt after notifying CNIC to stop.

      Impact: iSCSI.

bnx2 v1.8.6b, cnic v1.7.7 (March 2, 2009)
=========================================
   Enhancements
   ------------
   1. Change: Updated to new 5706 firmware (4.6.17) and 5709 firmware (4.6.16).
              New interrupt coalescing mode for improved latency and iSCSI
              cache line fix on 5709.

      Impact: All bnx2 chips.

   2. Change: CNIC iSCSI changes for VMWare.

      Impact: VMWare only.

bnx2 v1.8.5b, cnic v1.7.6 (Feb 9, 2009)
=======================================
   Fixes
   -----
   1. Problem: (CQ39380) bnx2x iSCSI license not read correctly.

      Cause: Using wrong variable to check the license.

      Change: Fixed the logic.

      Impact: bnx2x iSCSI.

   2. Problem: Driver accesing MMIO registers during VLAN operations when
               the device is in D3hot state in older kernels.

      Cause: VLAN registration functions do not check for device state.

      Change: Added if_running check before MMIO access in VLAN registration
              functions.

      Impact: VLAN operations on all bnx2 chips.

   Enhancements
   -----------
   1. Problem: Updated 5706/5708 firmware to 4.6.16.

      Impact: 5706/5708.

bnx2 v1.8.4b, cnic v1.7.5 (Jan 30, 2009)
========================================
   Fixes
   -----
   1. Problem: (CQ39281) Management firmware stops passing traffic when
               bnx2 driver is loaded with jumbo frames enabled.

      Cause: Firmware bug.

      Change: Updated to 4.6.15 firmware.

      Impact: 5706/5708/5709.

   2. Problem: iSCSI does not work on 57711 in single function mode.

      Cause: Driver only allows iSCSI on 57711 if iSCSI is enabled.

      Change: iSCSI config. not required in single function mode.

      Impact: bnx2x iSCSI.

   Enhancements
   ------------
   1. Change: (CQ38576) Add 5709 to bnx2.4 man page.

      Impact: None.

bnx2 v1.8.3b, cnic v1.7.4 (Jan 23, 2009)
========================================
   Fixes
   -----
   1. Problem: (CQ38610, CQ39000, CQ39015, CQ39071, CQ39133) Various Jumbo
               frames related data corruption issues.

      Cause: Bug in RV2P firmware causing jumbo frames to be DMA'ed without
             the frame header control structure occasionally.

      Change: New firmware.

      Impact: 5706/5708/5709.

bnx2 v1.8.2c, cnic v1.7.4 (Dec 30, 2008)
========================================
   Fixes
   -----
   1. Problem: (CQ38955) Xen kernel panic when unloading bnx2 with jumbo MTU.

      Cause: Bug in bnx2_free_rx_mem().  The jumbo page ring memory was
             freed incorrectly using the wrong local variable as array
             index.

      Change: Fixed bug by using the correct variable as array index.

      Impact: Jumbo frames.

   2. Problem: (CQ38965) iSCSI connection timeout on bnx2x.

      Cause: During CFC Delete RAMROD completion handling, the wrong (older)
             iSCSI connection ID can sometimes be retrieved using the
             harware CID.  The CID in the mapping table was not cleared
             after the CID was freed. 

      Fix: Adding clearing of the CID in the data structure after a CID
           is freed.

      Impact: bnx2x iSCSI.

   Enhancements
   ------------
   1. Change: (CQ38744) Reduced R2TQ memory usage to match new firmware
              interface (firmware 4.8.9). This reduces the amount of
              kernel memory substantially for each iSCSI connection on
              bnx2x.

      Impact: bnx2x iSCSI.

bnx2 v1.8.2b, cnic v1.7.3 (Dec 17, 2008)
========================================
   Enhancements
   ------------
   1. Change: Added iSCSI configuration check on 57711E devices before
              allowing iSCSI connections.

      Impact: bnx2x iSCSI.

bnx2 v1.8.2b, cnic v1.7.2 (Nov 25, 2008)
========================================
   Fixes
   -----
   1. Problem: bnx2x iSCSI does not work on functions 2 or above.

      Cause: This was caused by multiple problems:
             a) Status block ID specified by bnx2x was wrong.
             b) MSI-X vector assigned to CNIC was wrong.
             c) New method to ack. status block using HC register was not
                implemented.
             d) Status block ID in CSTORM status block is always 0, and
                as a result, the status block ID used to ack. the status
                block was wrong.

             All these problems only affect functions 2 and above.

     Change: All problems fixed in bnx2x and cnic.

     Impact: bnx2x iSCSI.

bnx2 v1.8.2b, cnic v1.7.1 (Nov 15, 2008)
========================================
   Enhancements
   ------------
   1. Change: Added CNIC support for Multi function bnx2x iSCSI.

      Impact: bnx2x iSCSI.

bnx2 v1.8.2b, cnic v1.6.2 (Nov 12, 2008)
========================================
   Enhancements
   ------------
   1. Change: Updated to latest 4.6.13 5709 firmware to fix context corruption
              with flow control enabled.

      Impact: 5709.

   2. Change: Added support for 5716S PCI ID.

      Impact: None.

   Fixes
   -----
   1. Problem: (CQ35904) Netdump does not work.

      Cause: Problem introduced by MSI-X multiqueue.  IRQ handlers were
             changed to take bnx2_napi parameter instead of netdev parameter.

      Change: Fixed by passing proper parameter to IRQ handler from netpoll.
              All IRQ handlers are called when using multiple MSI-X vectors.

      Impact: 5709 netpoll.

bnx2 v1.8.1f, cnic v1.6.1 (Nov 5, 2008)
========================================
   Fixes
   -----
   1. Problem: All TSO packets corrupted on 5706/5708.

      Cause: Firmware bug zeroing the wrong field in IP header.

      Change: Updated to latest 4.6.11 5706/5708 firmware and 4.6.12 5709
              Firmware.

      Impact: 5706/5708/5709.

   2. Problem: bnx2x chip asserts when trying to make iSCSI connection
               to an unknown IP address.

      Cause: When connection fails, the driver sends a command to an
             unitialized CID.

      Change: Added logic to only send deletion commands to initialized
              CIDs.

      Impact: bnx2x iSCSI.

   Enhancements
   ------------
   1. Change: Added support for one single VLAN to a bnx2x iSCSI interface.

      Impact: bnx2x iSCSI.

bnx2 v1.8.1e, cnic v1.6.0 (Oct 27, 2008)
========================================
   1. Change: Updated to latest 5709 firmware to fix iSCSI data integrity
              problem.

      Impact: 5709.

bnx2 v1.8.1d, cnic v1.6.0 (Oct 23, 2008)
========================================
   Enhancements
   ------------
   1. Change: Updated to latest bnx2 firmware to fix iSCSI data integrity
              problem.

      Impact: 5706/5708/5709.

   2. Change: Updated to the latest bnx2x HSI files.

      Impact: bnx2x iSCSI.

bnx2 v1.8.1c, cnic v1.5.9 (Oct 13, 2008)
========================================
   Fixes
   -----
   1. Problem: (CQ37905) Unable to compile on SLES10 SP2.

      Cause: DIV_ROUND_UP macro not defined in this kernel.

      Change: Added it for compatibility.

      Impact: None.

   Enhancements
   ------------
   1. Change: Updated to latest 5709 firmware that fixes an NCSI problem.

      Impact: 5709.

   2. Change: Handle TCP reset in the middle of TCP close more appropriately.

      Impact: iSCSI.

   3. Change: Handle iSCSI license checking in the same way as 5708/5709.

      Impact: iSCSI on bnx2x.

bnx2 v1.8.1b, cnic v1.5.8 (Oct 13, 2008)
========================================
   Fixes
   -----
   1. Problem: bnx2x iSCSI CIDs may be allocated outside the range of allocated
               host memory.

      Cause: CID range bigger than the amount of allocated host context
             memory.

      Change: Changed to match the CID range with memory range.

      Impact: bnx2x iSCSI.

   Enhancements
   ------------
   1. Change: Sync'ed with the latest upstream driver bnx2 1.8.1.

      Impact: None.

   2. Change: Implemented iSCSI connection license enforcement for bnx2x
              devices.

      Impact: bnx2x iSCSI.

bnx2 v1.8.0j, cnic v1.5.7 (Oct 6, 2008)
========================================
   Fixes
   -----
   1. Problem: (CQ37610) Chip hangs when changing MTU with active iSCSI
               connections.

      Cause: Both cnic and bnx2 drivers setting up the chip at the same
             time.

      Change: Added check so that the register_cnic function will fail
              if the bnx2 driver is in reset.

      Impact: iSCSI.

   2. Problem: (CQ37762) Able to unload bnx2/bnx2x drivers while there are
               active iSCSI connections.

      Cause: CNIC driver does not have a reference count on the BNX2/BNX2X
             drivers.

      Change: This became a problem after the register_cnic function was
              no longer exported.  To solve the problem, the CNIC driver
              will now get an explicit reference during register_cnic.

      Impact: iSCSI.

   3. Problem: (CQ37429) MMIO access while the chip is in D3hot state.

      Cause: The driver does not check if_running state consistently during
             ethtool operations.

      Change: Added proper checks to all ethtool and multicast change
              functions.

      Impact: ethtool operations and multicast operations.

   Enhancements
   ------------
   1. Change: Simplified ipv4 TSO logic in the driver.  This was made
              possible with newer 5708 firmware.

      Impact: 5708 TSO and other traffic.

   2. Change: ethtool -p now blinks forever.  This is the standard behavior
              in most other net drivers.

      Impact: ethtool -p.

bnx2 v1.8.0i, cnic v1.5.5 (Sep 30, 2008)
========================================
   Fixes
   -----
   1. Problem: (CQ36787) iSCSI login/logout commands fail on 5709 after a
               while.

      Cause: Not handling the KWQ completion properly on 5709 in INTA/MSI
             mode.

      Change: Changed to handle KWQ completions by checking the
              cmd_consumer_index instead of the rx_quick_index15.

      Impact: 5709 ISCSI in INTA/MSI mode.

   2. Problem: (CQ37497) CNIC driver does not compile on powerpc.

      Cause: csum_ipv6_magic() not defined.

      Change: Added #include <net/ip6_checksum.h>

      Impact: None.

v1.8.0g (Sep 24, 2008)
========================
   Fixes
   -----
   1. Problem: (CQ37511) System locks up when loading cnic driver on 2.6.16
               kernel.

      Cause: symbol_put_addr() in 2.6.16 tries to acquire the same lock twice.

      Change: Workaround by using __symbol_put() which does not have the same
              problem.

      Impact: None.

v1.8.0f (Sep 23, 2008)
========================
   Fixes
   -----
   1. Problem: (CQ37405) Kernel panic when performing ifup/ifdown with iSCSI
               connections on bnx2x devices.

      Cause: Sending searcher delete to bnx2x devices when connection was
             not established (due to Spanning Tree or other reasons).

      Change: Check PG offload state before sending searcher delete.

      Impact: iSCSI on bnx2x.

v1.8.0e (Sep 22, 2008)
========================
   Enhancement
   -----------
   1. Change: Updated to latest driver firmware 4.6.6 for 5709.

      Impact: 5709.

   2. Change: Updated cnic so that it will not crash even if using older
              bnx2/bnx2x drivers without CNIC support.  The net driver
              can also be loaded after cnic and it will still work without
              crashing.

      Impact: iSCSI.

   3. Change: (CQ 37381) Updated driver to check Vaux PRESET before allowing
              WoL.  This is needed to support 5709 quad-port boards.

      Impact: WoL on all devices.

v1.8.0d (Sep 15, 2008)
========================
   Enhancements
   ------------
   1. Change: Updated CNIC iSCSI setup for bnx2x devices.

      Impact: iSCSI on bnx2x devices.

v1.8.0c (Aug 25, 2008)
========================
   Fixes
   -----
   1. Problem: Does not compile on older kernels.

      Cause: "__maybe_unused" undefined on older kernels.  "num_online_cpus()"
              undefined on 2.4 kernels.

      Change: Added compatibility code to workaround.

      Impact: None.

v1.8.0b (Aug 25, 2008)
========================
   Enhancement
   -----------
   1. Change: Updated to latest driver firmware 4.6.2 for 5709.

      Impact: 5709.

v1.7.9c (Aug 5, 2008)
========================
   Fixes
   -----
   1. Problem: bnx2 does not compile on older kernels.

      Cause: <linux/log2.h> is missing on 2.6.19 and older kernels.

      Change: Added compatibility code to check for kernel version before
              including the file.

      Impact: none.

v1.7.9b (Aug 5, 2008)
========================
   Enhancements
   ------------
   1. Change: Added multi-tx ring for 5709.  This fetaure is available on
              2.6.27 kernel when using MSI-X.

      Impact: 5709

   2. Change: Added support for 57710 iSCSI in the CNIC driver.

      Impact: iSCSI.

v1.7.7c (July 14, 2008)
========================
   Fixes
   -----
   1. Problem: Source RPM fails to build.

      Cause: New file missing in tarball.

      Change: Added missing file.

      Impact: None.

v1.7.7b (July 9, 2008)
========================
   Enhancements
   ------------
   1. Change:  Added probe function so that the CNIC driver can get the
               pci_device pointer earlier before registration.

      Impact:  iSCSI.

   2. Change:  Added support for 5716.

      Impact:  None.

v1.7.6c (June 6, 2008)
========================
   Enhancements
   ------------
   1. Change:  Added multi-ring RX support on 5709 using MSI-X.  This feature
               is only available on 2.6.24 and newer kernels running on SMP
               machines.

      Impact:  5709.

   2. Change:  Added secondary unicast address support.  We now support up
               to 5 unicast addresses.  This feature is only available on
               2.6.23 and newer kernels.

      Impact:  All chips.

v1.7.6b.1 (Aug 14, 2008)
========================
   Fixes
   -----
   1. Problem: (CQ36808) VLAN tagged packets received by host stack without
               the VLAN tag.

      Cause: If no VLANs are set up using vconfig, and if the driver
             configures the chip to strip the VLAN tag, the problem can
             happen.  With IPMI or UMP enabled, the driver is likely to
             configure the chip to strip the VLAN tag.

      Change: Modified the driver to re-insert the VLAN tag when necessary.
              I.e. when IPMI/UMP is enabled and vconfig has not setup any
              VLANs.

      Impact: All chips receiving VLAN traffic.

v1.7.6b (May 29, 2008)
========================
   Fixes
   -----
   1. Problem: IPv4 TSO generates bad packet when the TSO packet size
               is 1-MSS.

      Cause: Probably firmware does not expect this boundary condition.

      Change: Detect this 1-MSS condition in driver and skip the TSO logic.
              1-MSS TSO packet will be treated like a regular TX checksum
              offload packet.

      Impact: TSO on all chips.

   2. Problem: Cannot disable VLAN stripping even when management firmware
               is disabled.

      Cause: The new logic to check firmware VLAN stripping capability
             was buggy.

      Change: Fixed the code so that VLAN stripping can always be disabled
              if management firmware is disabled.

      Impact: VLAN/management firmware.

v1.7.5d (May 13, 2008)
========================
   Enhancements
   ------------
   1. Change: Incorporated latest firmware 4.4.18. Bug fix is in
              RV2P.

      Impact: All chips.

v1.7.5c (May 7, 2008)
========================
   Enhancements
   ------------
   1. Change: Incorporated latest firmware 4.4.17. Bug fix is in
              RV2P.

      Impact: All chips.

v1.7.5b (May 5, 2008)
========================
   Fixes
   -----
   1. Problem: (CQ35080) Hard lock when running ethtool -s on the device
               that is in the down state.

      Cause: I/O to the device to set link speed in D3-hot state can cause
             lockup because the chip does not respond to I/O.

      Change: ethtool -s will just store the new settings without configuring
              the new speed.  When the device is later brought up, the new
              speed will be set as part of chip init.

      Impact: All chips.

   2. Problem: (CQ35075 CQ35042) Various compile errors on SuSE SLES 9 and SLES
               10 distro kernels.

      Cause: ip_hdr() and __le32/__le32 backported to the distro kernels.

      Change: Adjusted compatibility defines.

      Impact: None.

   Enhancements
   ------------
   1. Change: Incorporated latest 5709 firmware 4.4.16.  Timer context
              scanning is reduced with this firmware to 500us.  With this,
              the temporary enhancement in 1.7.4c #2 has been removed.

      Impact: 5709 iSCSI.

v1.7.4e (April 26, 2008)
========================
   Fixes
   -----
   1. Problem: (CQ34841) 5709 does not link up on some remote PHY systems.

      Cause: No initial link interrupt.

      Change: Added code to poll for link when remote PHY is present.

      Impact: Remote PHY systems.

   2. Problem: (CQ34767) Kernel panic on 5709 when using jumbo frames
               with NCSI traffic.

      Cause: RV2P bug causing RX packets to overwrite kernel memory.

      Change: Updated to latest RV2P code for 5709 and 5708.

      Impact: 5706/5708/5709.
               
v1.7.4d (April 17, 2008)
========================
   Fixes
   -----
   1. Problem: IPv6 iSCSI does not work.

      Cause: Added code in the last version 1.7.3c to check for CONFIG_IPV6
             before enabling the IPv6 CNIC support.  This failed to check
             for CONFIG_IPV6_MODULE if IPv6 is configured as module in the
             kernel configuration.

      Change: Changed the checking to CONFIG_IPV6 or CONFIG_IPV6_MODULE.

      Impact: None.

v1.7.4c (April 16, 2008)
========================
   Fixes
   -----
   1. Problem: (CQ34814, CQ33984) Driver does not compile on 2.4 kernels.

      Cause: __le32 and __be32 not defined in 2.4 kernels.

      Change: Defined these as u32 on 2.4 kernels.

      Impact: 2.4 kernels.

   Enhancements
   ------------
   1. Change:  Incorporated latest 5709 4.4.12 firmware to fix various iSCSI
               problems.

      Impact:  5709.

   2. Change:  Slowed down the timer block reload time.  It was noticed that
               after the CNIC driver was unloaded, the timer context memory
               was reloaded in a tight loop by the chip.  This issue needs
               to be properly addressed in the firmware at a future date.

      Impact:  iSCSI.

v1.7.4b (April 11, 2008)
=======================
   Enhancements
   ------------
   1. Change:  Incorporated latest 5709 4.4.11 firmware to fix various iSCSI
               problems.

      Impact:  5709.

v1.7.3k (April 9, 2008)
=======================
   Enhancements
   ------------
   1. Change:  Incorporated latest 5709 4.4.10 firmware to fix various iSCSI
               problems.  CID ranges are now read directly from shared memory.

      Impact:  5709.

v1.7.3j (April 7, 2008)
=======================
   Fixes
   -----
   1. Problem: (CQ33967) Ethtool register test fails.

      Cause: Register 0x1004 context status register should not be tested.

      Change: Removed 0x1004 from register test.

      Impact: None.
 
   Enhancements
   ------------
   1. Change:  Incorporated latest 5709 4.4.9 firmware to fix various iSCSI
               problems.

      Impact:  5709.

v1.7.3i (April 4, 2008)
=======================
   Fixes
   -----
   1. Problem: (CQ33948) iSCSI over IPv6 does not work on SLES10.

      Cause: The CNIC driver does not handle IPv6 on older kernels without
             NETEVENTS support.

      Change: Modified the logic to support older kernels.

      Impact: All iSCSI connections using IPv4 or IPv6.

   2. Problem: (CQ34315) Scanning iSCSI disks during max sessions test causes
               connection problems.

      Cause: 5709 context memeory allocated by CNIC driver does not match
             the iSCSI and PG CID range used by the firmware.

      Change: Changed to the matching CID range.

      Impact: 5709 iSCSI.

v1.7.3h (March 28, 2008)
=======================
   Fixes
   -----
   1. Problem: (CQ33984, CQ34210, CQ34310, CQ34597) Various compiler warnings
               and errors on RHEL, SuSE, and 2.4 kernels.

      Cause: New features not compatible with older kernels, or older
             vendor kernels backported with newer features.

      Change: Fine-tuned compatibility compiler directives.

      Impact: All kernels.

v1.7.3g (March 10, 2008)
=======================
   Enhancements
   ------------
   1. Change: Updated to latest 5709 firmware version 4.4.7.

      Impact: 5709.

v1.7.3f (March 10, 2008)
=======================
   Fixes
   -----
   1. Problem: CNIC takes a long time to resolve ARP, causing iSCSI to fail.

      Cause: NETEVENT_NEIGH_UPDATE event notifier sometimes takes a long time
             to be called.

      Change: This is under investigation.  For now, the workaround is to
              use the existing neighbour entry if it is in NUD_VALID state.
              Previously, we would only use it if it was in NUD_CONNECTED
              state.

      Impact: iSCSI neighbour resolution.

   2. Problem: iSCSI sometimes fails to initialize.

      Cause: The KWQ is in full condition and prevents any KWQE to be sent
             to the firmware.  This is caused by the KWQ consumer index in
             the status block not initializing to 0.

      Change: Added workaround to skip the KWQ full condition check when
              sending the first KWQE.  This should be properly fixed in
              firmware.

      Impact: None.

v1.7.3d (February 15, 2008)
============================
   Fixes
   -----
   1. Problem: System hangs with iSCSI traffic.

      Cause: Infinite loop in NAPI poll.

      Change: Fixed the problem of not comparing the CNIC tag properly when
              determining whether there is more work in NAPI poll.

      Impact: None.

   2. Problem: iSCSI does not work on 5709

      Cause: Not initializing 5709 properly for iSCSI.  The chip_id field was
             not propagated to the CNIC driver.

      Change: Fixed the chip_id field.

      Impact: None.

v1.7.3c (February 09, 2008)
============================
   Enhancements
   ------------
   1. Change: Updated 5708 and 5709 firmware to version 4.4.2.

      Impact: All devices.

   2. Change: Updated RV2P firmware to the latest.  This may fix the jumbo
              frame issue.

      Impact: All devices, especially jumbo frames on 5709 Bx.

   3. Change: Modified CNIC interface in preparation for 57710 devices.

      Impact: iSCSI.

v1.7.2f (February 04, 2008)
============================
   Fixes
   -----
   1. Problem: Temporary workaround for one prototype 5709S mezz. card not
               working.

      Cause: The driver was looking at the wrong shared memory location to
             identify the card.

      Change: Fixed the code to check the correct BNX2_SHARED_HW_CFG_CONFIG
              location.

      Impact: 5709S.

v1.7.2e (January 31, 2008)
============================
   Fixes
   -----
   1. Problem: (CQ33704) CNIC driver fails MSI-X mode on 5709.

      Cause: When implementing the fix, the wrong constant was used
             for the CNIC MSI-X vector.

      Change: Corrected to use the correct constant BNX2_CNIC_VEC.

      Impact: None.

   2. Problem: iSCSI outgoing packets over IPv6 are bigger than 1518 bytes.

      Cause: MSS calculation was based on IPv4 and did not accout for the
             IPv6 header size.

      Change: Adjusted MSS calculation for IPv6.

      Impact: None.

v1.7.2c (January 30, 2008)
============================
   Fixes
   -----
   1. Problem: CNIC driver does not work in MSI-X mode on 5709.

      Cause:  This is a regression caused by moving the CNIC MSI-X
              vector from 8 to 2.  The context memory did not get
              updated with the new vector.

      Change: Changed the definition.  All bits that depend on the
              MSI-X vector will now have the proper definitions automatically.

      Impact: None.

v1.7.2b (January 30, 2008)
============================
   Enhancements
   ------------
   1. Change: Updated 5709 firmware to 4.4.1.

      Impact: 5709.

   2. Change: Added temporary workaround for one prototype 5709S mezz. card.
              The workaround will be removed once newer cards are available.

      Impact: 5709S.

v1.7.1e (January 14, 2008)
============================
   Enhancements
   ------------
   1. Change: Updated 5709 firmware to 4.1.1 for IPv6 iSCSI support.

      Impact: 5709.

   2. Change: Updated 5708 RXP firmware to 4.1.1.

      Impact: 5706/5708.

   3. Change: Updated RV2P firmware for 5709.

      Impact: 5709.

   4. Change: Added IPv6 support to CNIC driver.

      Impact: New BNX2I driver must be used with this new CNIC driver.

v1.7.1d.3 (February 7, 2008)
============================
   Fixes
   -----
   1. Problem: 5706S continues to not link down occasionally on some blade
               systems.

      Cause:  In some cases, even turning off the tx current does not
              cause the link to go down.

      Change: Link transition can be triggered based on the SYNC_FAILED bit
              in the AN_DEBUG register when all else fails.

      Impact: 5706S.

v1.7.1d.1 (February 1, 2008)
============================
   Fixes
   -----
   1. Problem: 5706S still not linking down occasionally on some blade
               systems when the switch blade is disconnected.

      Cause:  Occasionally, all the bits that we check will falsely
              indicate link up and trigger the parallel detect logic on
              this blade platform. Once in parallel detect mode with
              autoneg disabled, the driver will never detect link down.

      Change: Disabled parallel detect on this platform by checking
              PCI sub IDs to identify the device.

      Impact: Parallel detect not supported on this vendor device.

v1.7.1d (January 25, 2008)
============================
   Fixes
   -----
   1. Problem: 5706S still not linking down on some blade systems when the
               switch blade is disconnected.

      Cause:  This is the same problem that was fixed in 1.7.0b.  After
              switch module is removed, the SYNC_FAILED bit sometimes
              toggles low, and this causes the parallel detect logic in the
              driver to trigger and disable autoneg.  Disabling autoneg
              causes false link to come up immediately.

      Change: It seems that the RUDI_INVALID bit can be used to prevent the
              above from happening.  Modified parallel detect code to
              additionally check the RUDI_INVALID bit and trigger only when
              the bit is cleared.

      Impact: Parallel detect logic in 5706S.

v1.7.1c (December 27, 2007)
============================
   Fixes
   -----
   1. Problem: Driver crashes when adding VLAN and bonding.

      Cause: Bonding calls driver's VLAN function in interrupt context with lock
             held.  We recently added a VLAN feature in 1.6.8b which requires
             chip reset when VLANs are added or removed.  The reset will call
             vmalloc/vfree which must not be called in interrupt context.

      Change: Reverted the VLAN feature for now.  Will workaround it in the
              future.

      Impact: 5709 only. This new VLAN feature is no longer available.

v1.7.1b (December 24, 2007)
============================
   Fixes
   -----
   1. Problem: Driver crashes when using jumbo frames on 5709 A1.

      Cause: RV2P firmware problem.

      Change: Disabled jumbo page ring on 5709 Ax chips.

      Impact: Jumbo receive page rings not supported on 5709 Ax.

   2. Problem: CNIC driver prints "Failed waiting for ref count to go to zero"
               when unloading the driver. This is a minor cosmetic issue.

      Cause: Minor bug in driver comparing ref_count to 1 instead of zero
             during exit.

      Change: Fixed the code to check for ref_count == 0.

      Impact: None.

v1.7.0b (December 12, 2007)
============================
   Fixes
   -----
   1. Problem: (CQ33032) CPU utilization increases dramatically when TSO
               is enabled.

      Cause: Driver is spending a lot of unnecessary time in TX handling
             code when TSO is enabled.  This regression was introduced when
             the TX handling code was changed to match the RX handling code.
             The RX handling code was changed to fix a packet rot problem.
             When TSO is enabled, the tx index can stop at non-packet
             boundaries and the code will keep waiting until it gets to the
             next packet boundary.

      Change: Fixed it to handle this condition properly.

      Impact: None.

   2. Problem:  5706S does not link down in some blade systems.

      Cause: Hardware problem.

      Change: Added workaround logic to check periodically and force a
              link down when the PHY reports SYNC status failed.  This
              only works when autoneg is enabled.

      Impact: 5706S.

v1.6.8e (December 10, 2007)
============================
   Fixes
   -----
   1. Problem: When using jumbo MTU with large RX ring sizes, system will
               crash or the driver won't load.

      Cause: Bug in driver where the page descriptor array was declared
             too small.

      Change: Fixed the array size.

      Impact: None.

   2. Problem: CNIC driver won't compile on kernels without CONFIG_PCI_MSI.

      Cause: Some code needs to be conditionally compiled only when
             CONFIG_PCI_MSI is set.

      Change: Added #ifdef CONFIG_PCI_MSI where necessary.

      Impact: None.

   3. Change: Disabled iSCSI on 5709 until next release.

      Impact: None.

v1.6.8d (December 07, 2007)
============================
   Change: Reverted the 5706S workaround made in 1.6.8c because it was
           unreliable.

   Impact: None.

v1.6.8c (December 07, 2007)
============================
   Fixes
   -----
   1. Problem: (CQ32794) Kernel panic (skb_over_panic) with jumbo frames.

      Cause: RV2P firmware incorrectly placed jumbo data into SKB.

      Change: New RV2P firmware.

      Impact: Jumbo frames on all hardware.

   2. Problem: (CQ32817) ethtool loopback test fails.
   3. Problem: (CQ32842) Chariot test fails.

      Cause: RX buffer size too small to contain MTU-sized frame.
             This was introduced by the new Jumbo RX logic.

      Change: Fixed RX buffer size logic.

      Impact: Traffic on all hardware.

   4. Problem: (CQ32862) Fails to compile on RH9u9.

      Cause: Kernel API skb_fill_page_desc() backported to RH kernel
             causing duplicate definition.

      Change: Adjusted compatibility code.

      Impact: None.

   5. Problem: (CQ32866) ISCSI driver fails to compile with 1.6.8b.

      Cause: print_mac() multiply defined when bnx2.h is included
             in the bnx2i driver.

      Change: Changed print_mac() to static inline.

      Impact: None.

   6. Problem:  5706S does not link down in some blade systems.

      Cause: Hardware problem.

      Change: Added workaround logic to check periodically.

      Impact: 5706S.

   Enhancements
   ------------
   1. Change: Added flow control logic on 5709.

      Impact: 5709.

   2. Change: Updated all firmware to 4.0.5.

      Impact: All hardware.

v1.6.8b (November 28, 2007)
============================
   Enhancements
   ------------
   1. Change:  Added MSIX support for 5709 B0.

      Impact: 5709 B0.

   2. Change:  Added multi-page buffer support for Receive Jumbo frames.

      Impact: All chips.  This feature is experimental at this point.

   3. Change:  Allow VLAN tags in receive packets when management firmware
               is enabled.

      Impact: 5709 only. This feature is experimental and requires new
              boot code and UMP/IPMI code.

   4. Change: Updated firmware to 4.0.3.

      Impact:  All chips.

v1.6.7b (October 16, 2007)
============================
   Fixes
   -----
   1. Problem: (CQ31861) Remote copper PHY does not link up if WoL is enabled.

      Cause: bnx2_set_power_state() assumes that only copper devices support
             WoL and proceeds to configure the copper PHY to 10/100 Mbps.
             This assumption is no longer valid after Serdes WoL support
             was added in 1.6.3c.

      Change: Fixed the code to take check for Serdes and copper when setting
              up the PHY for WoL.

      Impact: WoL.

v1.6.6b (October 10, 2007)
============================
   1. Change: Update 5708 firmware to 3.7.19.

v1.6.5k (October 10, 2007)
============================
   1. Problem: Will not compile on 2.6.23 kernel.

      Cause: get_perm_addr no longer defined in struct ethtool_ops

      Change: Adjusted kernel compatibility #ifdef.

      Impact: None.

v1.6.5j (October 10, 2007)
============================
   No change to bnx2.  Updated cnic driver to 1.1.24.

v1.6.5i (October 8, 2007)
============================
   Enhancements
   ------------
   1. Change: Update 5708 firmware to 3.7.18.

v1.6.5h (October 4, 2007)
============================
   Enhancements
   ------------
   1. Change: Update 5708 firmware to 3.7.17.

v1.6.5g (October 1, 2007)
============================
   Enhancements
   ------------
   1. Change: Update 5708 firmware to 3.7.16.

v1.6.5f (September 30, 2007)
============================
   Enhancements
   ------------
   1. Change: Update 5708 firmware to newer 3.7.15.

v1.6.5e (September 29, 2007)
============================
   Enhancements
   ------------
   1. Change: Update 5708 firmware to 3.7.15.

v1.6.5d (September 28, 2007)
============================
   Enhancements
   ------------
   1. Change: Combined RPM package and tar file with CNIC driver.

v1.6.5c (September 26, 2007)
============================
   Enhancements
   ------------
   1. Change: Update 5708 firmware to 3.7.14.

v1.6.5b (September 25, 2007)
============================
   Fixes
   -----
   1. Problem: (CQ30086) 5709 A1 does not link up when connected to
               some Broadcom devices.

      Cause: Early DAC wakeup workaround needed for 5709 A1.

      Change: Added workaround.

      Impact: None.

   Enhancements
   ------------
   1. Change: Added CNIC support for iSCSI.

      Impact: Only enabled on 2.6.16 and newer kernels.

v1.6.3c (July 23, 2007)
=======================
   Fixes
   -----
   1. Problem: (CQ30591) ethtool -t fails on remote PHY systems.

      Cause: Link test and loopback test were not modified to support
             remote PHY.

      Change: Added remote PHY support to link test and changed the code
              to skip PHY loopback on remote PHY since it's not supported.

      Impact: None.

   2. Problem: (CQ30625) ethtool speed settings are lost after ifdown.

      Cause: The remote PHY settings stored in firmware is not the same
             as the driver's last setting.

      Change: Modified the code to keep the driver's setting unless there's
              is change in the remote PHY media.

      Impact: ethtool -s on remote PHY systems.

   Enhancements
   ------------
   1. Change: Change ethtool's wol setting to NVRAM's default and
              add support for Serdes WoL if NVRAM supports it.

      Impact: ethtool wol's default setting.

v1.6.3b (July 13, 2007)
=======================
   1. Problem: Problems reading and writing flash on 5709.

      Cause: Hardware changes in 5709.

      Change: Rearranged current flash code to properly support 5709.

      Impact: Changes will impact flash operations on 5706/5708/5709 devices.

   2. Problem: (CQ30516) Management firmware version string disappears
               on 2nd modprobe of the driver.

      Cause:  The 2nd modprobe will program the device back to D0 from D3hot.
              This causes a reset and it will take some time before the
              management firmware information will be available.

      Change: Added a proper wait loop to wait for the firmware information
              to be deposited in shared memory.

      Impact: None.

v1.6.2f (July 3, 2007)
=======================
   1. Problem: The fix for CQ29488 in the previous version is problematic
               and needs to be reverted.

      Cause: Adding the netif_carrier_off() call before register_netdev()
             in bnx2_init_one() can cause problems if register_netdev()
             fails.  netif_carrier_off() can queue a link watch event
             that can run later.  If register_netdev() fails, the netdev
             structure will be freed and the link watch event may panic
             when it is scheduled to run.

      Change: Moving the netif_carrier_off() to after register_netdev()
              also will not work as it can cause race conditions with
              the interrupt handler.  So the best thing to do is to
              revert the earlier fix and not address the CQ29488 issue.

      Impact: CQ29488 is not fixed.

v1.6.2e (July 3, 2007)
=======================
   Fixes:
   ------
   1. Problem: (CQ29528) Link does not come up using remote PHY (continued).

      Cause: ifup script may be using mii-tool to obtain link status,
             and interfering with remote PHY firmware.

      Change: Block mii-tool ioctl access when remote PHY firmware is present.

      Impact: None.

   2. Problem: (CQ29488) Driver reports link up in ethtool before the interface
               is brought up.

      Cause: The netdevice structure's initial link setting is up and that
             gets reported directly by ethtool.

      Change: Added netif_carrier_off() call in bnx2_init_one().

      Impact: None.

v1.6.2d (June 22, 2007)
=======================
   Fixes:
   ------
   1. Problem: (CQ29528) Link does not come up using remote PHY.

      Cause: The fix in 1.6.2b still has a problem.  The copper or Serdes
             default link setting does not follow the correct port when
             the port is changed during chip reset.

      Change: Fix the code to always refresh the port and link setting
              during chip reset.

      Impact: None.

   2. Problem: (CQ30181) Cannot compile on 2.4 kernels.

      Cause: USEC_TO_SEC constant is not defined on older kernels.

      Change: Added conditional #define for this constant on older kernels.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Update 5709 firmware to 3.7.1.

      Impact: 5709 devices.

v1.6.2b (June 21, 2007)
=======================
   Enhancements:
   -------------
   1. Change: Added management firmware version to ethtool -i.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQ29528) Link does not come up using remote PHY.

      Cause: The driver is using the wrong port when setting up the remote
             PHY link.

      Change: Fixed bug to always use the correct requested port or
              default port when setting remote PHY link.

      Impact: None.

   2. Problem: (CQ30028) Advertised Autoneg not set in ethtool.

      Cause: Remote PHY code is not setting the flag which is for
             information only.

      Change: Added code the set the flag for consistency.

      Impact: None.

v1.6.1c (May 22, 2007)
=====================
   Enhancements:
   -------------
   1. Change: (CQ28907) Added support for setting copper and fibre speeds.

      Impact: Only available on Remote PHY systems.

v1.6.1b (May 7, 2007)
=====================
   Fixes:
   ------
   1. Problem: (CQ29301) Setting invalid speed setting causes driver to
               crash.

      Cause: Lock taken without unlock when exiting iwith error the
             procedure to set speed.

      Change: Fixed the code with proper unlock.

      Impact: None.

v1.6.0b (April 30, 2007)
========================
   Enhancements:
   -------------
   1. Change: Improved handshake with remote PHY firmware.

      Impact: None.

v1.5.10c (May 4 , 2007)
=======================
   Fixes:
   ------
   1. Problem: Extremely low TSO performance when destination has a
               smaller MSS than the source.

      Cause: Packets smaller than MTU are not processed as TSO packets.

      Change: Removed the SKB length check when doing TSO.

      Impact: None.

v1.5.10b (May 1, 2007)
=========================
   Enhancements:
   -------------
   1. Change: Removed Remote PHY until next release.

      Impact: No Remote PHY support.

   2. Change: Added check for 2.5G capability before enabling 2.5G on
              5709S.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQ28438) NETDEV WATCHDOG after OS boot.

      Cause:  The mailbox queue is halted after the OS reads config.
              register 0x94.

      Change: Set MQ_CONFIG_HALT_DIS in register MQ_CONFIG on 5709 A0 and
              A1.

      Impact: None.

v1.5.9b (April 20, 2007)
=======================
   Enhancements:
   -------------
   1. Change: Enhanced remote PHY support for 5708S.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQ29056) Driver does not compile on SLES 10 SP1 kernel.

      Cause:   Backported netif_tx_lock() causes compatibility problem.

      Change:  Adjuested compatibility #ifdef.

      Impact:  None.

   2. Problem: (CQ28880) Driver fails register test after running traffic.

      Cause:   A reserved register 0x500c was mistakenly included in the test.

      Change:  Removed this register from the test.

      Impact: None.

v1.5.8b (March 13, 2007)
=======================
   Enhancements:
   -------------
   1. Change: Added remote PHY support for 5708S.

      Impact: None.

v1.5.7b (March 2, 2007)
=======================
   Enhancements:
   -------------
   1. Change: Added IPV6 TSO for 5709.

      Impact: None.

   2. Change: Added 2.5G parallel detection for 5709s.

      Impact: None.

v1.5.6b (February 28, 2007)
===========================
   Enhancements:
   -------------
   1. Change: Added Serdes support for 5709.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQ28433) Driver does not compile on some early 2.6 and
               2.4 kernels.

      Cause: Kernel compatibility issue.

      Change: Added some missing #ifdef CONFIG_PCI_MSI.

      Impact: None.

   2. Problem: (CQ28527) System hangs when running bonding scripts on 5709.

      Cause: Bonding driver reads MDIO registers after the device is in
             D3hot state.

      Change: Added check to disallow MDIO access after the device is down.

      Impact: None.

v1.5.5b (January 31, 2007)
===========================
   Fixes:
   ------
   1. Problem: (CQ28252) Driver reports the same MAC address for both
               ports of 5709.

      Cause: The driver was obtaining the MAC address from the same
             shared memory area for both ports.

      Change: Updated driver to read from the deicated shared memory
              area for each port.

      Impact: None.

   2. Problem: (CQ28226) 5709C does not link up when connected to Dell
               5324 and some other switches.

      Cause:  PHY's Early DAC Wakeup Enable bit's strapped value is set.

      Change: Disable Early DAC Wakeup enable on 5709 A0 after PHY reset.

      Impact: None.

v1.5.4b (January 8, 2006)
===========================
   Fixes:
   ------
   1. Problem: 5709 copper device detected as serdes.

      Cause:  Media detection code not complete.

      Change: Added complete media detection code.

      Impact: None.

   Enhancement:
   ------------
   1. Change: Add IPv6 checksum support.

      Impact: None.

v1.5.2b (December 22, 2006)
===========================
   Merged in all latest changes.

v1.5.1c (November 30, 2006)
===========================
   Enhancement:
   ------------
   1. Change: Remove 5709 FPGA code.

      Impact: None.

v1.5.1b (November 15, 2006)
===========================
   Enhancement:
   ------------
   1. Change: Added support for 5709.

      Impact: None.

v1.4.52c (March 07, 2007)
=========================
   Enhancement:
   ------------
   1. Change: Increase maximum receive ring size to 4080.
              The default is kept the same at 255.

      Impact: None.

v1.4.51b (December 21, 2006)
============================
   Fixes:
   ------
   1. Problem: (CQ27802) Cannot enable flow control in some cases.

      Cause:  In some cases when flow control is forced to on, the
              driver detects no changes in advertisement, and as a
              result, will not re-autoneg.  Without the link change,
              flow control settings will not change.

      Change:  Added some code to setup flow control when no other
               PHY settings are made.  This will ensure that flow
               control changes will take effect immediately.

      Impact: None.

v1.4.50b (December 15, 2006)
============================
   Fixes:
   ------
   1. Problem: (CQ27424) Panic when writing to nvram.

      Cause:  Bug in driver when an alignment buffer is used

      Change: Fixed the bug so that the alignment buffer is freed with the
              correct pointer.

      Impact: None.

v1.4.49b (December 13, 2006)
============================
   Fixes:
   ------
   1. Problem: (CQ27459) Driver reports link down when link is up.

      Cause:  Hotplug scripts can cause bnx2_open() to be called immediately
              after bnx2_init_one() calls register_netdev().  The initial
              link state set after register_netdev() may overwrite the actual
              link state set by the link handler on SMP systems.

      Change:  Move all initial state setup code to before calling
               register_netdev().

      Impact : None.

v1.4.48b (December 08, 2006)
============================
   Fixes:
   ------
   1. Problem: (RHBZ 212055)  Panic in bnx2_poll().

      Cause: Bug in determining tx ring space when the tx ring is
             completely full.

      Change: Fixed the flawed logic in bnx2_tx_avail().

      Impact: None.

   2. Problem: (CQ27424) Buffer overflow when writing to nvram.

      Cause:  Bug in driver when the beginning NVRAM offset is
              not 4-byte aligned.

      Change: Fixed the bug to allocate enough buffer space.

      Impact: None.

   3. Problem: (CQ27543) Loopback failed if MAC address is changed.

      Cause: Driver uses permanent MAC address for loopback which may
             be different from a locally administered address.

      Change: Fixed by alwaysing using the current MAC address in the
              netdevice structure.

      Impact: None.

v1.4.47b (November 02, 2006)
===========================
   Fixes:
   ------
   1. Problem: (CQ25922) 5708S does not pass PHY loopback test on
               some blade servers.

      Cause:  It takes longer (about 100msec) to link up in some
              backplane environments when the Serdes is set to PHY
              loopback mode.

      Change: Increase delay loop to up to 1 sec when waiting for
              link up after PHY loopback.  Previous wait time was
              100usec.

      Impact: None.

v1.4.46b (October 30, 2006)
===========================
   Fixes:
   ------
   1. Problem: (CQ25916) Device does not receive packets when configured
               by the Xen bridge script and when IPMI is enabled.

      Cause: Firmware does not forward packets to the host when the
             device is in promiscuous mode in some cases.

      Change: Firmware change and driver change to enable the
              BNX2_RPM_SORT_USER0_PROM_VLAN bit when going into
              promiscuous mode.

      Impact: None.
             
v1.4.45b (October 19, 2006)
===========================
   Enhancement:
   ------------
   1. Change: Added software parallel detection on 5708S to link at
              1000Mbps or 2500Mbps automatically if the link partner is
              forced at 2500Mbps.

      Impact: None.

   2. Change: Added 2500Mbps forced speed setting.  Setting it requires
              a future version of ethtool or custom apps.

      Impact: None.

   3. Change: Port driver to compile on 2.6.19 kernel.

      Impact: None.

   Fixes:
   ------
   1. Problem: Driver does not complile on 2.4 kernels.

      Cause: TSO symbols not defined in 2.4 kernels.

      Change: Added #ifdef for compatibility.

      Impact: None.

   2. Problem: MSI doesn't work on 5706 when the host bridge is AMD8132.

      Cause: Compatibility issue.

      Change: Added code to disable MSI when 5706 is on a systems with
              AMD8132.

      Impact: 5706 cannot use MSI on such systems.

v1.4.44b (August 10, 2006)
==========================
   Fixes:
   ------
   1. Problem: A rare tx race window exists in the tx path.

      Cause: CPU re-ordering can cause the tx queue to be stopped
             forever when the tx ring is full in a very rare
             condition.  See ChangeLog for more details.

      Change: Fixed the race condition with memory barriers.
              See ChangeLog for more details.

      Impact: None.

   Enhancement:
   ------------
   1. Change: Increase default rx ring size to 255 to prevent
              packet drops under heavy load.

      Impact: Higher memory usage.

   2. Change: Port driver to run on 2.6.18 kernel.

      Impact: None.


v1.4.43b (June 26, 2006)
=======================
   Enhancement:
   ------------
   1. Change: (CQ25508) Use DRV_MSG_CODE_UNLOAD_LNK_DN message on
              5708 B1 and older chips so that the link will turn
              off after ifdown.

      Impact: None.

v1.4.42b (June 2, 2006)
=======================
   Fixes:
   ------
   1. Problem: (CQ22585) WoL cannot be enabled on 5708 B2.

      Cause: Hardware limitation in previous 5708 versions required
             driver to always disable driver WoL on 5708.

      Change: With the issue fixed in B2, the driver was changed to
              allow 5708 B2 and above to support driver WoL.

      Impact: None.

   2. Problem: (CQ21779) Driver does not report dropped receive packets.

      Cause: Packets dropped by firmware are reported in a scratch pad
             location in memory separate from other counters.

      Change: Added code to report this firmware counter.

      Impact: None.

   Enhancements:
   -------------
   1. Change: (CQ24690) Allow driver to be compiled for non-running kernels.

      Impact: None.

v1.4.41b (May 17, 2006)
=======================
   Fixes:
   ------
   1. Problem: Driver writes wrong data to non-buffered flash.

      Cause: Bug in driver causing the unchanged portion of the page
             to be corrupted.

      Change: Fixed bug.

      Impact: None.

v1.4.40b (April 17, 2006)
=========================
   Enhancements:
   -------------
   1. Change: Combine 2 small memory allocations into 1.

      Impact: None.

   2. Change: Separate tx consumer and producer entries into separate
              cache lines for better performance.

      Impact: None.

   3. Change: Compress firmware data to reduce driver size.

      Impact: Driver now requires zib_inflate library which should be
              available on most vendor kernels.

v1.4.39b (Mar. 10, 2006)
=======================
   Fixes:
   ------
   1. Problem: (CQ23181) Driver loses track of link changes in some cases.

      Cause: In some cases, the status block gets a link change indication
             that contradicts with the MII link status. This is due to
             transient link signals during link changes.

      Change: Add coalesce_now at the end of link change interrupt to flush
              out the transient behavior.

      Impact: None.

   2. Problem: 5708 only supports 40-bit DMA addresses.

      Cause: Limitation of the built-in PCIE-to-PCIX bridge.

      Change: Add workaround code to make sure all DMA addresses are
              less than 40 bits.

      Impact: Some minor impact on performance on some 64-bits systems.
              There should be practically no performance impact on i386 and
              x86_64 systems.

   3. Problem: "Copyright" deprecated in RPM spec file.

      Change: Changed to "License".

      Impact: Should be none on the distributions that we support.

v1.4.38b (Feb. 10, 2006)
=======================
   Fixes:
   ------
   1. Problem: Setting rx ring size to 255 causes memory allocation errors.

      Cause: Multiple bugs that do not handle the full ring properly.

      Change: Fixed all bugs related to full ring handling and changed
              maximum ring size from 4080 to 1020 after discussion with
              Dave Miller.

      Impact: Maximum rx ring size is now smaller.

   2. Problem: Compile warnings and panic on IA64.

      Cause: <vmalloc.h> not included.

      Change: Added include <vmalloc.h>.

      Impact: None.

v1.4.36b (Jan. 19, 2006)
=======================
   Version number update.

v1.3.36 (Jan. 17, 2006)
=======================
   Fixes:
   ------
   1. Problem: (CQ22827) bnx2 does not compile on 2.6.6 and earlier
               kernels. 

      Cause: Introduced bug while fixing CQ22666.

      Change: Fix compatibility code.

      Impact: None.

   2. Problem: (CQ22823) bnx2 reports extra .5 at the end of firmware
               version string.

      Change: Skip the last digit in the firmware version string.

      Impact: None.

   3. Problem: (CQ22585) WoL still does not work on 5708.

      Cause: New WoL mechanism introduced in 1.3.34 has a flaw.

      Change: Removed the workaround code and disabled WoL support
              on 5708. During shutdown and suspend, the driver will
              shutdown the device and WoL will be setup by the
              bootcode according to the nvram's out-of-box WoL
              setting.

      Impact: 5708 will not support driver-initiated (ethtool-intiated)
              WoL.
              
v1.3.35 (Jan. 17, 2006)
=======================
   Fixes:
   ------
   1. Problem: (CQ22666) bnx2 driver does not compile on RHEL3 U7.

      Cause: if_mii() back-ported to RHEL3 U7.

      Change: Adjusted the compatibility code.

      Impact: None.

   2. Problem: (CQ22718) UMP connection is lost after enabling WoL.

      Cause: FORCE LINK was mistakenly set during WoL setup.

      Change: Do not set FORCE LINK.

      Impact: None.

v1.3.34 (Jan. 13, 2006)
=======================
   Fixes:
   ------
   1. Problem: (CQ22585) WoL does not work on 5708.

      Cause: Internal bridge not in proper PME state.

      Change: Added new firmware message to allow bootcode to help set up
              WoL.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Added compile option to include crc32 function for RH2.4
              boot kernels.

      Impact: None.

   2. Change: Updated TSO firmware to handle ECN.

      Impact: None.

v1.3.33 (Dec. 12, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Increased firmware hand-shake timeout from 50 msec to
              100 msec. Also changed the delay from busy-wait udelay
              to non-busy-wait msleep.

      Impact: None.

   2. Change: Added code to read nvram size from shared memory if
              available. Otherwise, the size will come from the
              flash table which only gives the smallest size for
              that type of flash.

      Impact: None.

   3. Change: Added workaround to issue 2 separate IOs for interrupt
              acknowledgement. The workaround is only used for INTA
              (non-MSI) interrupts.

      Impact: Slightly higher overhead for INTA interrupts.

v1.3.32 (Dec. 01, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Added PHY loopback to the loopback selftest.

      Impact: None.

   2. Change: (CQ21810) Added ethtool -d register dump.

      Impact: None.

   3. Change: Reduce the number of registers tested in selftest to make
              the driver smaller.

      Impact: None.

   4. Change: Increased maximum rx ring size to 4080.

      Impact: None.

   5. Change: Changed rx checksum logic for better reliability.

      Impact: None.

   6. Change: Added 5708 B1 workarounds.

      Impact: None.

v1.3.31 (Nov. 18, 2005)
=======================
   Fixes:
   ------
   1. Problem: (CQTO2080) Cannot pass traffic during 2nd ifup if IPMI
               is enabled.

      Cause: A flaw in driver/firmware handshake.

      Change: Changed driver/firmware handshake by doing WAIT0 first before
              writing the first signature.

      Impact: None.

   2. Problem: (CQTO2056) VLAN-tagged IPMI traffic fails after driver is
               loaded.

      Cause: Driver configures the NIC to keep the VLAN tag by default,
             causing VLAN-tagged IPMI traffic to fail.

      Change: Changed driver to always strip VLAN tags if IPMI is enabled.

      Impact: VLAN will always be stripped when IPMI is enabled. This may
              affect some applications that rely on raw VLAN packets.

   Enhancements:
   -------------
   1. Change: Sync'ed up with latest upstream bnx2.

v1.3.29 (Oct. 6, 2005)
=======================
   Fixes:
   ------
   1. Problem: (CQTO1929) Traffic stops when MTU is greater than 1500
               with TSO enabled.

      Cause: TSO firmware bug.

      Change: Updated to latest firmware.

      Impact: None.

v1.3.28 (Sep. 29, 2005)
=======================
   Fixes:
   ------
   1. Problem: (CQTO1875) Traffic stops when running Nettack with TSO
               turned on.

      Cause: TSO firmware bug.

      Change: Updated to latest firmware.

      Impact: None.

   2. Problem: (CQTO1575) ethtool -S shows non-zero rx_error_bytes.

      Cause: Hardware errata.

      Change: Ignore this counter and always report zero.

      Impact: None.

v1.3.27 (Sep. 21, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Enabled ethernet@wirespeed on copper devices.

      Impact: None.

   2. Change: Enabled customized pre-emphasis and other serdes control
              settings on 5708S backplane devices. A special PHY
              register will be programmed according to the NVRAM value.

      Impact: None.

   3. Change: Modified Makefile to check for the source symbolic link
              in the kbuild environment.

      Impact: None.

   4. Change: Improved NAPI poll processing so that all events will be
              processed before interrupts are re-enabled. This will
              reduce the number of unnecessary interrupts.

      Impact: None.

   5. Change: Add support for ETHTOOL_GPERMADDR (from John Linville)

      Impact: None.

   Fixes:
   ------
   1. Problem: Bug in irq handler causing extra register read.

      Cause: Bug in bnx2_interrupt() reading BNX2_PCICFG_MISC_STATUS
             register when it is not necessary.

      Change: Fixed the logic bug and added prefetch of status block in
              msi handler.

      Impact: None. 

v1.3.25 (Aug. 22, 2005)
=======================
   Fixes:
   ------
   1. Problem: Ethtool register and memory tests fail on 5708.

      Cause: Some code was not merged properly many versions ago.

      Change: Merged in properly code.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Slow down flash clock speeds

      Impact: None.

   2. Change: Code re-sync'ed with upstream driver.

      Impact: None.

v1.3.24 (Aug. 16, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Changed all spin_lock_irqsave locks to spin_lock_bh for
              better overall system performance. All code requiring
              spin_lock runs in BH or user context.

      Impact: None.

   2. Change: Removed atomic operations in the transmit fast path.
              Code should run a bit faster as atomic operations can be
              quite slow.

      Impact: None.

v1.3.23 (Aug. 10, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Added reporting of link speed to firmware.

      Impact: None.

   2. Change: Added shared memory base look-up.

      Impact: None.

   3. Change: Possible sparse fixes (from Peter Hagervall)
              - use C99 struct initializers
              - make a few arrays and structs static
              - remove a few uses of literal 0 as NULL pointer
              - use convenience function instead of cast+dereference in
                bnx2_ioctl()
              - remove superfluous casts to u8 * in calls to readl/writel

      Impact: None.

   4. Change: Updated documentation with the crc32 library requirement and
              other minor updates.

      Impact: None.

v1.3.22 (July 25, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Added check for default link speed setting in shared memory.
              This allows some blade servers that don't support autoneg to
              default to forced speed to speed up link-up time.

      Impact: None.

   2. Change: Changed timer code to speed up the timer after serdes autoneg.
              This speeds up the time for parallel detection when the link
              partner does not autoneg. After autoneg or parallel detction
              completes, timer goes back to normal 1 HZ interval. With the
              new scheme, link should be detected up using parallel detection
              in less than 0.7 seconds. Autoneg normally completes in 120
              msec exchanging base pages and 3 next pages. 

      Impact: None.

v1.3.21 (July 21, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Updated firmware to properly handle TSO packets with ECN
              bits set.

      Impact: None.

   2. Change: Updated to latest rxp firmware.

      Impact: None.

   3. Change: Added check for the 2.5G capability in shared memory.

      Impact: None.

   4. Change: Expanded nvram support for 5708.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQTO1511) Downing a team of bnx2 adapters causes hang.

      Cause: Deadlock when the second adapter's close routine calls
             flush_scheduled_work() because the linkwatch_event
             is scheduled on the work queue when the first adapter
             is closed. The linkwatch_event will try to get the rtnl_lock
             which is already held by the bnx2_close routine.

      Change: Fixed by not calling flush_scheduled_work(). Instead,
              use a flag to indicate work is pending and wait until
              the flag is cleared.

      Impact: None.

   2. Problem: (CQTO1439) ethtool -S on 5708 causes oops.

      Cause: A pointer is not initialized if the device is 5708.

      Change: Added proper initialization.

      Impact: None.

   3. Problem: Some error counters are mis-reporting.

      Cause: The workaround for the hw errata is not applied properly
             on the chips with the errata.

      Change: Added proper checks for the workaround.

      Impact: None.

   4. Problem: High BER on 5708 SerDes.

      Cause: hardware errata.

      Change: Added workaround for 5708 A0 and B0.

      Impact: None.

v1.3.19 (May 27, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Merged 5708 code with the latest 1.1.19.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQTO1260) 5708S does not link at 1000Mbps when forced. It
               links at 2500Mbps when connected back-to-back with another
               5708S.

      Cause: 2.5G bit is still turned on.

      Change: Fixed by turning off 2.5G when the speed is forced.

      Impact: None.

v1.1.19 (May 26, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Made significant changes to merge into the kernel. Among
              them, consolidate all source files into bnx2.[ch] and
              bnx2_fw.h, change structure style register definitions
              to offset based.

      Impact: None.

   Fixes:
   ------
   1. Problem: Excessive stack usage.

      Cause: Use of local variable array.

      Change: Fix excessive stack usage in bnx2_alloc_bad_rbuf() by
              replacing local variable array with kmalloc array. Also
              changed function to return error code, and changed some
              of the callers to check for the return code.

      Impact: None.

   2. Problem: Bug in receive checksum.

      Cause: Software bug.

      Change: Fix bug in rx checksum by indicating CHECKSUM_UNNECESSARY
              only when the hw calculated checksum is 0xffff.

      Impact: None.

   3. Problem: Excessive busy loop.

      Cause: Software bug.

      Change: Replaced one excessive udelay of 15msec with msleep since
              the calling context is always process.

      Impact: None.

  4.  Problem: Need to call flush_scheduled_work() and bnx2_netif_stop().

      Cause: Bug in bnx2_close().

      Change: Fix bug in bnx2_close() by calling flush_scheduled_work()
              since we are using a work queue in netdev watchdog. Also
              added bnx2_netif_stop() call in bnx2_close().

      Impact: None.

   5. Problem: Some symbols do not have bnx2 prefix and are not static.

      Change: Add bnx2_ prefix to some remaining names and mark some
              remaining names static.

      Impact: None.

v1.1.17 (Apr. 7, 2005)
=======================
   Fixes:
   ------
   1. Problem: Driver does not compile on 2.6.12 kernel.

      Cause: pci_dev->slot_name has been deprecated.

      Change: replaced with pci_name.

      Impact: None. All kernels supported by bnx2 including 2.4.21-*EL have
              pci_name defined.

v1.1.16 (Mar. 16, 2005)
=======================
   Fixes:
   ------
   1. Problem: (CQTO936 & 1004) Tx carrier and rx_byte_errors reported
               during normal operations.

      Cause: 5706 hardware errata on these 2 statistics counters.

      Change: Modified driver to skip these 2 counters.

      Impact: These 2 counters will always report 0 and not the true
              statistics.

v1.3.15 (Mar. 11, 2005)
======================
   Enhancements:
   -------------
   1. Change: Added SGMII 10/100/1000 Mbps and fiber mode 1000/2500 Mbps
              support.

      Impact: None.

v1.1.15 (Mar. 09, 2005)
=======================
   Enhancements:
   -------------
   1. Change: Added code to program proper phy settings for jumbo
              frames on copper and serdes devices.

      Impact: None.

   2. Change: Changed INTx ISR to handle a valid case where INTx
              arrives before status block update.

      Impact: None.

   3. Change: Added a separate ISR for MSI to handle subtle differences
              between INTx and MSI.

      Impact: None.

v1.1.14 (Mar. 03, 2005)
======================
   Fixes:
   ------
   1. Problem: netdump does not work on latest RH3EL errata kernel.

      Cause: #define RED_HAT_LINUX_KERNEL removed from kernel
             include files, causing netdump poll function to
             be compiled wrong for RH kernels.

      Change: Changed Makefile to workaround the problem.

      Impact: None.

v1.1.12 (Feb. 25, 2005)
======================
   Fixes:
   ------
   1. Problem: (CQTO1062) Driver allows ethtool to set illegal speed/duplex
               on fiber cards.

      Cause: Missing checks for the case where autoneg is off.

      Change: Added proper checks.

      Impact: No.

v1.1.11 (Feb. 18, 2005)
======================
   Enhancements:
   -------------
   1. Change: (CQTO901) Added bnx2(4) man page.

      Impact: None.

v1.1.10 (Feb. 16, 2005)
======================
   Fixes:
   ------
   1. Problem: Wrong device ID in pci_dev_id table.

      Change: Fixed ID.

      Impact: None.

v1.1.9 (Feb. 10, 2005)
======================
   Fixes:
   ------
   1. Problem: (CQTO771) Driver fails to compile on RHEL3 update 4.

      Cause: The RH kernel has back-ported some netif functions
             not found in the same vanilla kernel version. Duplicate
             function names are defined.

      Change: Added intelligence in Makefile to detect such conditions
              and change the CFLAGS accordingly.

      Impact: None.

   2. Problem: (CQTO1017) Driver allows 1000 half duplex autoneg off.

      Cause: Missing validity check.

      Change: Added check.

      Impact: None.

   Enhancements:
   -------------
   1. Change: The code to handle tx queue full condition was redone
              to properly handle all boundary and race conditions.

      Impact: Minimum tx ring size is now MAX_SKB_FRAGS+1.

   2. Change: Tx timeout code was changed to work queue context.
              This allows netif to be shutdown gracefully before
              chip reset.

      Impact: None.

   3. Change: Added memory barriers to ISR and NAPI poll for
              correctness.

      Impact: None.

v1.1.8 (Feb. 01, 2005)
======================
   Fixes:
   ------
   1. Problem: (CQTO969) No interupts on a system that does not
               support MSI.

      Cause: On this system, the MSI generated in the MSI test
             terminates with Master Abort which is a fatal
             condition for the chip.

      Change: A chip reset is added when MSI test fails to bring
              the chip back to normal operations again (in INTx mode).

      Impact: None.

   Enhancements:
   -------------
   1. Change: Removed register 0x84 from the ethtool register test.
              This is an interrupt control register that should
              not be touched to prevent unwanted interrupts.

      Impact: None.

v1.1.7 (Jan. 28, 2005)
======================
   Enhancements:
   -------------
   1. Change: Added interrupt test when MSI is enabled. If MSI test
              fails, driver will fallback to INTx mode.

      Impact: None.

   2. Change: Added test for certain chipsets where MSI is known
              to fail, and disable MSI unconditionally when
              such chipsets are found.

      Impact: None.

   3. Change: Removed support for 1000 Mbps half duplex.

      Impact: 1000 Mbps half duplex will no longer work.

v1.1.6 (Jan. 26, 2005)
======================
   Fixes:
   ------
   1. Problem: (CQTO940) MTU size not set properly when device is down.

      Cause: bnx2_change_mtu only handled the "up" case.

      Change: Simple fix to handle the "down" case as well.

      Impact: None

   2. Problem: (CQTO926) 5706S does not autoneg properly after the
                tx cable is pulled.

      Cause: If the link partner is autonegotiating, autoneg will
             fail when the tx cable is pulled. The software will
             turn off autoneg seeing that the rx cable is still
             attached with SIGNAL_DETECT. When the tx cable is
             re-attached, autoneg is still off and the link partner
             will not establish link.

      Change: Added code to poll another PHY register to check if
              configs are received when autoneg is disabled.
              
      Impact: None
              
   Enhancements:
   -------------
   1. Change: Added OEM product name strings.

      Impact: None.

v1.1.5 (Jan. 25, 2005)
======================
   Fixes:
   ------
   1. Problem: PCI-X bus speed may not be detected correctly by the driver,
               causing failure because certain register settings are done
               based on bus speed.

      Cause: hardware problem.
 
      Change: Use a different register to detect PCI-X speed.

      Impact: None.

v1.1.4 (Jan. 17, 2005)
======================
   Fixes:
   ------
   1. Problem: 5706S does not reliably detect link up or down.

      Cause: hardware problem.

      Change: Enabled hardware workaround which is effective in
              A2 and newer chips only.

      Impact: None.

v1.1.3 (Jan. 13, 2005)
======================
   Fixes:
   ------
   1. Problem: netdump does not work.

      Cause: poll_controller routine does not work in NAPI mode.

      Change: Fixed poll_controller routine for NAPI mode.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Added the new mmiowb macro which is used mainly in NUMA
              machines to guarantee PCI ordering.

      Impact: None.

   2. Change: Added OEM product name strings.

      Impact: None.

   3. Change: Changed ONE_TDMA workaround on systems with P64H bridge to
              PING_PONG_DMA on all systems using PCI.

      Impact: Better performance and better compatibility on all PCI
              systems.

   4. Change: Added "disable_msi" parameter to allow disabling MSI.

      Impact: None.

   5. Change: Reduced default tx coalescing parameters for better
              tx only performance such as ttcp.

      Impact: None.

   6. Change: Changed NIC detection console message to display more
              information.

      Impact: None.

   7. Change: Cleaned up some Linux .h files that are not needed.

      Impact: None.

   8. Change: Cleaned up the nvram routines.

      Impact: None.

v1.1.2 (Nov. 11, 2004)
======================
   Fixes:
   ------
   1. Problem: Unable to load the driver on more than 2 or 3 devices.

      Cause: Default register space is too big. System fails to map
             the register space on the 3rd or 4th device.

      Change: Changed driver to map a smaller register space as the higher
              registers are not needed for standard operations.

      Impact: None.

v1.1.1 (Nov. 9, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO656) One remaining ethtool parameter can be set out of
               range.

      Cause: Wrong upper bounds in code.

      Change: Fixed upper bound.

      Impact: None.

   1. Problem: 5706 A1 cannot be run on a PCI bus.

      Cause: Hardware errata.

      Change: Added workaround to detect 5706 A1 on PCI bus and abort.

      Impact: Driver will not load 5706 A1 on PCI bus.

v1.1.0 (Oct. 29, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO663) No link on fiber NIC set to autoneg when
               the link partner is set to forced speed.

      Cause: No code to handle this case.

      Change: Added code to check SIGNAL DETECT when autoneg fails,
              and turn off autoneg when appropriate. Also added code
              to force a link down when speed settings are changed.

      Impact: None.

    2. Problem: (CQTO649) ifconfig up/down can cause system to
                hang on 2.6 kernels using mmconfig.

       Cause: Dummy read in the kernel's pci_mmcfg_write routine
              may cause system to hang during D3hot -> D0
              transition. The PLL may lose lock during the internal
              D0 transition chip reset and cause the dummy read to
              hang.

       Change: The PLL problem will be fixed in A2. Meanwhile, the
               driver is changed to go into D3hot only if wol is
               enabled.

       Impact: Minor impact in increased power consumption when
               the driver is shutdown with wol disabled.
              
    3. Change: Changed to use pci_get_device as pci_find_device
               will be deprecated soon.

       Impact: None.

    4. Problem: (CQTO656) Some ethtool parameters can be set out of range.

       Cause: Wrong upper bounds in code or documentation.

       Change: Fixed code and documentation.

       Impact: None.

v1.0.15 (Oct. 15, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO644) Data corruption when sending FTP traffic on
               Dell Precision 530MT.

      Cause: PCI bridge errata.

      Change: Added code to enable ONE_TDMA workaround when P64H
              PCI bridge is detected.

      Impact: Slower tx performance on systems using P64H bridge.

   2. Problem: (CQTO643) Driver allows MTU to be set up to 9004.

      Cause: Driver used the wrong upper bound limit.

      Change: Fixed the upper bound.

      Impact: None.

   3. Problem: Driver does not support forced speed on 5706S.

      Cause: Missing software logic.

      Change: Added code to support forced 1000 Full and Half duplex.

      Impact: None.

   4. Change: Added workaround to disable PERR generation on
              5706 A1 when it is in PCI 64-bit slot.

      Impact: None.

v1.0.14 (Oct. 05, 2004)
======================
   Fixes:
   ------
   1. Problem: Driver load/unload hangs on some machines.

      Cause: Transition delay required during D3hot -> D0 transition.

      Change: Added necessary delay.

      Impact: None.

v1.0.12 (Oct. 04, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO609) New flow control parameter does not take
               effect until ifdown/ifup or link down/up.

      Cause: New flow control settings are only configured during
             link up. The driver did not check flow control
             advertisement changes and therefore no re-negotiation
             and no link down.

      Change: Fixed logic so that link will always go down whenever
              there is a change a flow control advertisement.

      Impact: None.

   2. Problem: (CQTO612) VLAN packet reception not working.

      Cause: VLAN #define not setup properly.

      Change: Fixed #define for VLAN.

      Impact: None.

   3. Problem: (CQTO628) WoL not functioning correctly.

      Cause: Multiple problems in the WoL code.

      Change: Fixed by:
                 1. using sort mode.
                 2. setting up mac address correctly.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Added support for non-dword and non-aligned write access
              to eeprom, allowing ethtool -E to work.

      Impact: None.

v1.0.11 (Sep. 24, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO600) Kernel panic when attempting to ftp on
               Fedora kernel.

      Cause: skbuffs are 4-byte aligned on Fedora, causing
             the rx headers to be misaligned. skbuffs are
             16-byte aligned on other standard kernels.

      Change: Removed any assumptions about skbuff alignment
              and added code to align all rx skbuffs to 8-byte
              boundaries.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Added netif_carrier_off to Driver init code so that
              the initial link state is off.

      Impact: None.

v1.0.10 (Sep. 23, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO599) Driver fails to compile on RH 3.0ES.

      Cause: Bug in poll_bcm5706 where bp is referenced without
             being defined.

      Change: Fixed the minor bug.

      Impact: None.

v1.0.9 (Sep. 23, 2004)
======================
   Fixes:
   ------
   1. Problem: Jumbo frames not working reliably.

      Cause: Bug in bcm5706_reuse_rx_skb.

      Change: Fixed the bug so that the host address is properly
              copied from one BD to the other.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Change the locking scheme for more reliable open/close/ioctl
              operations where the spinlock is needed.

      Impact: None.

   2. Change: Added minimum MTU size check for MTU changes.

      Impact: None.

v1.0.8 (Sep. 20, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO561) Kernel panic on RH30EL after repeated
               driver load/unload.

      Cause: Occasionally, the system is unable to map device
             registers, causing subsequent register access to fail.

      Change: Added check for the return value from ioremap, and exit
              gracefully if it fails.

      Impact: None.

   2. Problem: (CQTO574) NETDEV WATCHDOG when running 5706 A1 on
               PCIX 133MHz slot.

      Cause: Some hw register setup required for 133 Mhz.

      Change: Added the register setup code.

      Impact: None.

   3. Problem: (CQTO468) Link does not go down after changing from
               10Mbps full (forced) to 10Mbps half (forced) and vice versa
               when the link partner is also using forced speed. 

      Cause: Delay not long enough for the link to go down.

      Change: Not practical to increase delay as a very long delay is
              needed for the link to go down. Added code to record the
              proper link speed and duplex when speed is forced so that
              ethtool will return the proper speed without the link going
              down. Note that the link will go down if the link partner
              has autoneg turned on, ensuring that the link partner will
              see the link change.

      Impact: None.

   Enhancements:
   -------------
   1. Change: Added power management and WOL during device close. This
              will allow WOL to work after Linux shutdown.

      Impact: None.

   2. Change: Changed driver so that ethtool will report invalid
              speed after ifdown.

      Impact: None.

   3. Change: Updated tpatfw.h

      Impact: None.

v1.0.7 (Sep. 14, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO523) 5706 A1 hangs after a thousand iterations of
               load/ifup/ifdown/unload.

      Cause: The driver may be servicing an interrupt
             within 15 msec of chip reset, causing the chip to hang.
             The problem was aggravated by the timer mode
             coalescing which created an excessive number of
             interrupts (hardware problem).

             The Driver may also occasionally see
             the wrong firmware signature that will cause it to abort.

      Change: Added synchronization to make sure all pending interrupts
              are serviced before resetting the chip. Also changed to
              collect mode coalescing. The firmware signature problem
              will be fixed in boot code.

      Impact: The use of collect mode coalescing may affect performance.

   2. Problem: (CQTO558) Unable to load driver on some early 2.6 kernels.

      Cause: pci_dma_sync_single_for_* routines not defined on early
             2.6 kernels.

      Change: Added compatibility defines for earlier kernels.

      Impact: None.

v1.0.6 (Sep. 08, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO523) 5706 A1 hangs during repeated driver ifup/down. 

      Cause: No delay after chip reset for A1.

      Change: Added 15 msec delay after chip reset for A1.

      Impact: None.

   2. Problem: (CQTO468) Link does not go down after changing from
               10Mbps full (forced) to 10Mbps half (forced) and vice versa. 

      Cause: Not enough delay after forcing link down.

      Change: Added proper delay for link to go down.

      Impact: None.

v1.0.5 (Sep. 02, 2004)
======================
   Enhancements:
   -------------
   1. Change: Added support for ethtool -c, ethtool -C, ethtool -p,
              and firmware version for ethtool -i.

      Impact: None.

   Fixes:
   ------
   1. Problem: 5706C not advertising 1000 half duplex.

      Cause: 1000 full duplex overwrites 1000 half duplex.

      Change: Fixed the bug so that the 2 bits are or'ed together.

      Impact: None.

    2. Problem: ethtool -A does not change the flow control settings
                in all cases.

       Cause: Flow control settings not zeroed out before setting new
              values.

       Change: Minor bug fix to zero out the value.

       Impact: None.

v1.0.4 (Sep. 02, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO504) Multiple NFS transfers will hang some
               connections.

      Cause: Driver discards some receive packets when the
             error status is non-zero.

      Change: Changed the driver to only discard receive packets
              when the defined error bits in the error status are
              non-zero.

      Impact: None.

v1.0.3 (Sep. 01, 2004)
======================
   Enhancements:
   -------------
   1. Problem: Driver does not support ethtool -t self test and
               ethtool -S statistics.

      Change: Added ethtool self test and statistics.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQTO478) Kernel still panics when transmitting certain
               files using NFS after many iterations

      Cause: Tx DMA stalls on certain UDP packets, causing NFS
             client to stall.

      Change: More fixes made in firmware.

      Impact: None.

v1.0.2 (Aug. 26, 2004)
======================
   Enhancements:
   -------------
   1. Problem: Driver does not work on big endian machines.

      Change: Ported and tested on SPARC64 machine.

      Impact: None.

   Fixes:
   ------
   1. Problem: (CQTO478) Kernel panics when transmitting certain
               files using NFS.

      Cause: Tx DMA stalls on certain UDP packets, causing NFS
             client to stall.

      Change: Fixed in firmware.

      Impact: None.

   2. Problem: (CQTO469) Unable to modify flow control parameters

      Cause: Did not call setup_phy after the parameters are changed.

      Change: Added call to setup_phy after parameters are changed.

      Impact: None.

   3. Problem: (CQTO467) 5706 does not autonegotiate properly after
               changing settings with ethtool.

      Cause: This is an ethtool limitation as the proper advertising
             parameters are not passed to the driver properly.

      Change: Implemented a new scheme to work around the problem to
              allow users to specify full autoneg, single speed autoneg,
              and fixed speed.

      Impact: None.

   4. Problem: ethtool -e does not work.

      Cause: Various bugs in the nvram routines.

      Change: Fixed and tested nvram routines on little endian and big endian
              machines.

      Impact: None.

v1.0.1 (Aug. 18, 2004)
======================
   Fixes:
   ------
   1. Problem: (CQTO459) 5706 NIC does not get link.

      Cause: Boot code timing out in WAIT2 state before driver is ready.

      Change: Moved the WAIT2 state ahead in the driver reset sequence
              as a temporary workaround until it is fixed in boot code.

      Impact: None.

   2. Problem: (CQTO463) Kernel panics when loading the driver on
               RH30EL (2.4.21-4.EL)

      Cause: Older kernel used different API to allocate and register
             netdev.

      Change: Added older APIs to be used on older kernels.

      Impact: None.

v1.0.0 (Aug. 13, 2004)
======================
    Initial release
