                          ============================
                           R E L E A S E    N O T E S
                          ============================

                  Broadcom BCM57710/BCM57711/BCM57711E/BCM57712
                          10 GigE bnx2x driver For Linux

                      Broadcom BCM57800/BCM57810/BCM57840
                         10/20 GigE bnx2x driver For Linux

                  Copyright (c) 2007-2011 Broadcom Corporation
                              All rights reserved.

Version 1.70.36 (Dec 01, 2011)
==============================
Internal FW 7.0.29

Fixes:
------
 1. Problem:    CQ59651 - GRC-timeout messages run in syslog.

    Change:     Fix race between two statistic-related flows by using local
                state in bnx2x_stats_handle().

    Introduced: Day one.

    Relevance:  All.

 2. Problem:    CQ59765 - Link loss on 10G port after running ethtool test
                on 1G port, since the MAC loopback test was done on XMAC
		causing the 10G port to lose link.

    Change:     On 1G port, run UMAC loopback.

    Introduced: 1.70.32

    Relevance:  57800 only (2x10G + 2x1G)

 3. Problem:    CQ59904 - Unable to create VLAN interface on RHEL6.2.

    Change:     Adopt VLAN scheme to RHEL6.2 kernel.

    Introduced: Day one.

    Relevance:  RHEL6.2.

Enhancements:
-------------
 1. Request:    CQ60019 - Support DCBNL CEE calls on RHEL6.2.

Version 1.70.35 (Nov 08, 2011)
==============================
Internal FW 7.0.29

Fixes:
------
 1. Problem:    CQ59626 - set skb_record_rx_queue for FCoE ring out of range.

    Change:     Introduce fp->rx_queue and use it instead of fp->index.

    Introduced: 1.70.32.

    Relevance:  FCoE + kernel with skb_record_rx_queue support.


Version 1.70.34 (Nov 01, 2011)
==============================
Internal FW 7.0.29
Fixes:
------
 1. Problem:    CQ59454 - Port identify test fails on 54616 PHY.

    Change:     Updated driver to driver LEDs through MDIO for 54616

    Introduced: 1.70.00

    Relevance:  54616 PHY based boards.

 2. Problem:    CQ58580 - System becomes unresponsive or unstable after running
                self test. This was due to kernel stack overflow by the self
                test during load/unload.

    Change:     Located stack-hungry code in the nic load flow and modified it
                to consume reasonable amount of stack.

    Introduced: Day one

    Relevance:  All Chips. This issue only occurs in low stack kernels -
                specifically kernels using 4kb stack depth such as 32bit PAE
                kernel.

 3. Problem:    CQ59471 - DCBx does not work with NPAR on kernels with multi-CoS
                support.

    Change:     The DCBx negotiation result was not propagated to all functions.

    Introduced: Day one.

    Relevance:  DCBx and kernels with multi-CoS (2.6.39 and above).

 4. Problem:    Compilation failed on SLES11SP2 beta7 kernel.

    Change:     Fix compat.h.

    Introduced: Day one.

    Relevance:  SLES11SP2 beta7 kernel.

Version 1.70.33 (Oct 24, 2011)
==============================
Internal FW 7.0.29
Fixes:
------
 1. Problem:    CQ58884, CQ59376 - possible HW fatal attention issues after
                unload/load with 1G link.

    Change:     Close RX NIG in delay time after resetting the MAC.

    Introduced: 1.70.00.

    Relevance:  578xx.

 2. Problem:    CQ58990 - KR link occasionally comes up at 1G when 10G is
                expected. This is exposed only when a previous software
                entity (e.g. MFW, prior to OS driver loading up) that owns
                the KR PHY left it at 1G.

    Change:     Keep auto-neg disabled while configuring the capability
                advertisement. Re-enable it after configuration is done.

    Introduced: Day One

    Relevance:  578xx blade designs.

 3. Problem:    skb truesize is under estimated.

    Change:     bnx2x allocates a full page per fragment. It should  account in
                skb->truesize, the size of the fragment, not the used part of
                it.

    Introduced: Day One

    Relevance:  All.

Version 1.70.32 (Oct 16, 2011)
==============================
Internal FW 7.0.29

Fixes:
------
 1. Problem:    CQ58887 - System with low memory PSOD when running mtu change.

    Change:     Switch between FP indices in order to avoid mapping of
                FP with napi to the one napi-less, during memory allocation.

    Introduced: Version 1.60.27.

    Relevance:  ESX-5.0.

 2. Problem:    CQ58996 - After 20 iterations of reboot test, adapter does not
                dcbx-sync with switch.

    Change:     Perform hard reset to the XMAC during link establishment to
                clear possible left-overs.

    Introduced: Version 1.70.00.

    Relevance:  57810/57800.

 3. Problem:    CQ58912: Port identification not working on 54618SE PHY when
                link is not present.

    Change:     Add ON functionality to the 54618SE PHY link LED.

    Introduced: T7.0

    Relevance:  54618SE PHY based boards.


Version 1.70.31 (Oct 10, 2011)
==============================
Internal FW 7.0.29

Fixes:
------
 1. Problem:    Unable to change the speed with ethtool while using DAC (direct
                attached cable).

    Change:     The port was matched against fiber only without considering DAC.

    Introduced: Version 1.60.28.

    Relevance:  Optic ports with DAC.

 2. Problem:    On 1G copper ports, the RX UMAC is not close to prevent arrival
                of partial segments during link reset process.

    Change:     Close the UMAC and the NIG RX during link reset process.

    Introduced: Version 1.70.00.

    Relevance:  578xx.

 3. Problem:    Traffic blink rate LED is too fast.

    Change:     Adjust the blink rate to 578xx clock.

    Introduced: Version 1.70.00.

    Relevance:  578xx.

 4. Problem:    Arrival of FCoE packets beyond task IO size can lead to crash.

    Change:     (FCoE FW) Fix firmware data-in flow.

    Relevance:  FCoE.

Version 1.70.30 (Oct 03, 2011)
==============================
Internal FW 7.0.28

Fixes:
------
 1. Problem:    Lack of handling some HW failure indications.

    Change:     Fix improper initialization of mask register.

    Introduced: 1.60.00.

    Relevance:  57712/578xx only.

 2. Problem:    CQ57952 - Chip consumes too much power in case of fan failure.

    Change:     unload driver and power down chip.

    Relevance:  57810.

 3. Problem:    bnx2x_dcbnl_get_cap returns error for DCB_CAP_ATTR_DCBX.

    Change:     Add missing brake statement.

    Relevance:  DCB capable devices.

 6. Problem:    CQ57274 - Zero queues are used when num_queues was set to -1.

    change:     Make sure num_queue is treated as unsigned number.

    Relevance:  All.

 7. Problem:    CQ57927 - Chip hangs when in case of retransmission not aligned
                to 4-bytes from the beginning of iSCSI PDU.

    Change:     (iSCSI FW) Firmware implementation fixed to support arbitrary
                aligned retransmissions.

    Introduced: Version 1.70.09 (FW 7.0.16).

    Relevance:  All

Enhancements:
-------------
 1. Request:    Changed 'pri_map' module parameter to control mapping from
                priority to traffic class instead of deprecated role in SAFC
                configuration.

 2. Request:    Allow DCBNL functionality for RHEL6.1 and RHEL6.2.

Version 1.70.29 (Sep 19, 2011)
==============================
Internal FW 7.0.27

Fixes:
------
 1. Problem:    CQ58418 - WoL does not work after driver unload.

    Change:     The PME was not enabled in the configuration space.

    Introduced: Day one.

 2. Problem:    CQ58516 - DCBX ioctls return without error on
                non-DCB capable devices.

    Change:     Check DCB state in IOCTLs code.

    Introduced: 1.64.00.

    Relevance:  Non-DCB capable devices.

 3. Problem:    Compilation failed on RHEL6.2 kernel.

    Change:     Fix in compat.h.

    Relevance:  RHEL6.2 - alpha.

Version 1.70.28 (Sep 13, 2011)
==============================
Internal FW 7.0.27

Fixes:
------
 1. Problem:    Compilation failed when FCOE selected but FCOELIB is not in
                kernel config.

    Change:     Fix #if condition.

    Introduced: 1.70.00.

    Relevance:  Specific kernel configuration.

 2. Problem:    CQ57274 - kernel panic when trying to load bnx2x with negative
                amount of receive queues.

    Change:     Changed all module parameter's from integer to unsigned integer.

    Introduced: Day 1.

 3. Problem:    Overflow occurs during init, when generating statistics ramrod
                towards the FW (writing to index outside of array bounds).

    Change:     Increase number of elements in the array inside struct
                bnx2x_fw_stats_req.

    Introduced: Day 1.

 4. Problem:    CQ58271 - Improper array initialization in call to
                get_dcbx_params_ioctl.

    Change:     Take array size into account when data is copied.

    Introduced: 1.64.00.

    Relevance:  57712/578xx.

 5. Problem:    Ethtool Advertised pause frame use don't show the pause
                capability when flow-control not set to autoneg.

    Change:     Display the advertised pause frame use even if flow-control is
                not set to autoneg.

    Introduced: 1.70.27.

 6. Problem:    CQ55140 - Arrival of target-initiated NOP-IN during intense
                iSCSI traffic might lead to driver crash.

    Change:     (iSCSI FW) Fix in relevant flow.

    Introduced: 1.60.00.

Version 1.70.27 (Sep 01, 2011)
==============================
Internal FW 7.0.26

Fixes:
------
 1. Problem:    Compilation failed when FCOE selected but FCOELIB is not in
                kernel config.

    Change:     Fix #if condition.

    Introduced: 1.70.00.

    Relevance:  Specific kernel configuration.

 2. Problem:    CQ55751 - Setting advertise speed in ethtool is not working, and
                displaying "Advertised pause frame use" was incorrect.

    Change:     Fix ethtool functionality.

    Introduced: Day one.

    Relevance:  All.

 3. Problem:    FCoE feature is not recognized by device.

    Change:     Initialize FCoE license info at driver init.

    Introduced: 1.70.26.

Version 1.70.26 (Aug 29, 2011)
==============================
Internal FW 7.0.26


Fixes:
------
 1. Problem:    Compilation failed on kernel-3.0.x.

    Change:     Fix compat.h.

    Introduced: Day one.

 2. Problem:    Improper RX ring configuration showed in some case via
                ethtool -g.

    Change:     Allow configuration to be read if device is down.

    Introduced: 1.64.14.

 3. Problem:    CQ58086 - on 578xx B0 ETS BW 0% is not allowed by driver.

    Change:     Provide alternative HW configuration for this case.

    Introduced: 1.70.00.

    Relevance:  578xx with DCB support.

 4. Problem:    Driver allowed DCBX queries on non-pmf interfaces.

    Change:     Disable the queries on non-pmf interfaces.

    Introduced: 1.70.00.

    Relevance:  MF devices with DCB support.

 5. Problem:    Degradation in latency benchmarks noted (multiple TCP_RR). This
                was because driver configured FW to use the same state machine
                for rx and tx indices in status block.

    Change:     Use.seperate state machines for tx and rx.

    Introduced: 1.60.00.

 6. Problem:    Driver may get out of sync with FW when UNDI is present.

    Change:     Init fw_seq after undi_unload is done.

    Introduced: Day one.

    Relevance:  All.

 7. Problem:    GRC-timeout messages may appear in syslog during driver load.

    Change:     1. Remove access to removed registers in 57712/578xx.
                2. Do not allow device reset while reading IGU HW block info.

    Introduced: 1.64.00.

    Relevance:  57712/578xx.

 8. Problem:    MC assert while initializing iSCSI on some boards.

    Change:     Move cnic_info initialization to bnx2x_open.

    Introduced: 1.64.00.

    Relevance:  57711E.

Enhancements:
-------------
 1. Request:    Enable FEC (Forward Error Correction) on 57810-KR.

Version 1.70.25 (Aug 22, 2011)
==============================
Internal FW 7.0.26

Fixes:
------
 1. Problem:    CQ56409, CQ57534 -  Initiator periodically sends out Discovery
                Solicitation after login is established. This was caused by a
                missing VLAN filtering on the bnx2fc side. To enable such a
                filtering on the ESX bnx2fc needs to be aware of the currently
                configured VLANs on the CNA device.

    Change:     Expose the CNA VLANs configuration to the CNIC.

    Relevance:  FCoE on the ESX only.

    Introduced: Day one.

 2. Problem:    Theoretical problem that FW will drop incoming packet due to
                incorrect RX ring size when dropless_fc=1.

    Change:     Increase ring size according to FW implementation.

    Relevance:  Driver loaded with dropless_fc=1.

    Introduced: Day one.

 3. Problem:    CQ57841 - NIG timer error and connection loss after driver is
                loaded.

    Change:     Apply NIG drain when remote fault is detected.

    Introduced: In 1.70.00.

    Relevance:  Fiber ports.

 4. Problem:    CQ57738, CQ57719, CQ55158 - Remote fault detection occasionally
                causes link issues, and traffic problems.

    Change:     Remove remote-fault detection for T7.0.

    Introduced: In 1.70.00.

    Relevance:  Fiber ports.

 5. Problem:    CQ57987 - Compilation error on RHEL6.2 kernels.

    Change:     Fix compat.h.

    Introduced: In 1.70.00.

Version 1.70.24 (Aug 18, 2011)
==============================
Internal FW 7.0.26

Fixes:
------
 1. Problem:    FCoE traffic causes null pointer deref on kernels below 2.6.38.

    Change:     Path correct parameter to netdev_alloc_ms()

    Introduced: In 1.70.15

 2. Problem:    CQ57250 - The LED Link light does not turn on at 1Gb/s speed

    Change:     Adjust elink_set_led to allow for correct LED behavior.

    Introduced: Day one.

    Relevance:  578xx with direct connection.

 3. Problem:    CQ56820 - XMAC loopback (within "ethtool -t" test) may fail due
                to timing issue related to the CORE loopback type used.

    Change:     Change XMAC loopback to local line loopback.

    Introduced: In 1.70.00.

    Relevance:  578xx.

 4. Problem:    CQ57842 - Message "Illegal configuration detected for Max BW"
                appears in syslog when link toggles.

    Change:     Adjust number of VNICs for 4-port devices.

    Introduced: In 1.70.00.

    Relevance:  578xx 4-port.

 5. Problem:    Message "Illegal configuration detected for Max BW"
                appears in syslog when link toggles.

    Change:     Reduce msglvl for the message to debug only.

    Introduced: In 1.70.00.

    Relevance:  MF devices.

 6. Problem:    CQ56894 - packet drops during UDP stress test on 578xx.

    Change:     Recalculate thresholds configuration according to 578xx HW.

    Introduced: In 1.70.00.

    Relevance:  578xx.

Version 1.70.23 (Aug 08, 2011)
==============================
Internal FW 7.0.26

Fixes:
------
 1. Problem:    CQ57469, CQ57377, CQ56861, CQ57296 - CFC HW attention,
                XSTORM assert or kernel panic when changing the MTU under the
                TCP traffic (on the Tx side). Tx queues were stopped before
                bp->state was changed to a value different from
                BNX2X_STATE_OPEN, which allowed the bnx2x_tx_int() called from
                the NAPI context to re-enable it. This then allowed the
                netdev->ndo_start_xmit() to be called in the middle of the
                function reset and rings freeing, which caused the above
                failures.

    Change:     Change bp->state to a value different from BNX2X_STATE_OPEN
                BEFORE disabling the Tx queues in order to restore the
                protection against the above race in the bnx2x_tx_int().

    Introduced: In 1.70.16 in the fix for CQ56438.

 2. Problem:    CQ56991, CQ57007 - PFC pauses non pausible traffic. This was
                because FW was configured to work in STATIC_COS on 57712 and
                578xx regardless of kernel version. In kernels where multiple
                traffic classes are not supported this essentially blocked
                network traffic from being assigned any tc other than 0. If
                pausible traffic was assigned tc 0 the network traffic would
                necessarily collide with it.

    Change:     Configure FW to work in STATIC_COS only in kernels which support
                multiple traffic classes.

    Introduced: 1.70.15.

    Relevance:  57712 and 578xx on kernels before 2.6.39.

 3. Problem:    CQ57566 - During link down event "stats updated but no MAC
                active" messages appear in system log.

    Change:     Lowered the debug level of the message.

    Introduced: Day one.

    Relevance:  All.

 4. Problem:    PMF migration during remote fault result in invalid link state.

    Change:     Sync link attributes during remote fault periodic check.

    Introduced: 1.70.09.

    Relevance:  Fiber ports.

Version 1.70.22 (Jul 31, 2011)
==============================
Internal FW 7.0.26

Fixes:
------
 1. Problem:    Error messages "FATAL HW block attention set2 0x20" in the
                kernel log on specific systems.

    Change:     Recoverable LCRC errors due to not masking CPL_OF caused the
                print while it should be ignored.

    Introduced: Day one.

    Relevance:  57710 and 57711.

 2. Problem:    The GPHY ports are not completely powered down on
                driver unload if the GPHYs have no external pins to
                bring them to reset state. As a result, their link
                partner may still see link.

    Change:     Put the GPHY in low power mode.

    Introduced: 1.70.00.

    Relevance:  T0000G boards.

 3. Problem:    Driver compilation failed on 2.6.38.x kernels.

    Change:     Fix compat for these kernels.

    Introduced: 1.70.21.

 4. Problem:    PCI scan could lead to GRC read.

    Change:     Second function indirect windows were not cleared by the driver
                since the driver used the port index before it was initialized
                and therefore cleared only function 0. Since the driver is not
                using these indirect windows, it will clear them all.

    Introduced: Day one.

 5. Problem:    CQ57061 - GRC timeout messages appear on some systems during
                driver load.

    Change:     Take HW LOCK  before resetting the HW, which prevents from
                undi_unload read registers while block is in reset state.

    Introduced: Day one.

 6. Problem:    Compilation failed on SLES11 SP1 update 1.

    Change:     Fix conflict on backported feature in bnx2x_compat.h.

    Introduced: 1.70.20.

    Relevance:  SLES11 SP1 update 1 only.

 7. Problem:    IP and TCP ECN related TPA aggregation rules do not comply with
                LRO requirements. Firmware followed requirements for RSC which
                are incompatible with LRO requirements:
                1. Allow TPA aggregation even if TCP ECE and CWR flags are set.
                2. Allow TPA aggregation only if IP ECN CE and ECT bits are
                   either 00 or 11.

    Change:     (FW ETH) Firmware now allow TPA aggregation only if:
                1. TCP ECE and CWR are both 0's.
                2. IP ECN CE and ECT bits are other than 11.

    Introduced: 1.64.00 (FW 6.4.0.).

    Relevance:  All.

 8. Problem:    CQ56960 - Arrival of un-solicited ASYNC message causes firmware
                to abort the connection with RST.

    Change:     (FW iSCSI) Firmware fix to relevant flow.

    Introduced: 1.64.00 (FW 6.4.0.).

    Relevance:  All.

 9. Problem:    There is a probability that truncated FCoE packet on RX path
                won't get detected which might lead to crash.

    Change:     (FW FCoE) Verify the length of the FCOE packet.

    Introduced: 1.64.00 (FW 6.4.0.).

    Relevance:  FCoE only.

Enhancements:
-------------
 1. Request:    Add remote fault link detection for 578xx based on LSS errors
                in the MAC layer.

    Relevance:  578xx.

 2. Request:    Added 54616 PHY support.

    Relevance:  54616 PHY.

Version 1.70.21 (Jul 25, 2011)
==============================
Internal FW 7.0.23

Fixes:
------
 1. Problem:    Warning about the pending bit coming from the VLAN_MAC object
                if parity error happens under the rtnl_lock().

    Change:     Clear the internal VLAN_MAC object pending bit if
                bnx2x_config_vlan_mac() is called with RAMROD_DRV_ONLY flag.

    Introduced: Day one.

 2. Problem:    bp->sp_state bits stayed set forever set if there was a parity
                error under rtnl_lock()

    Change:     Clear bp->sp_state after interrupts are disabled.

    Introduced: Day one.

 3. Problem:    No flow-control on 578xx when link is up at 1G and below.

    Change:     Add pause functionality to UMAC

    Introduced: 7.0.0.

    Relevance:  578xx

 4. Problem:    CQ56991, CQ57007 - Networking traffic priority was mapped to the
                COS configured at startup which was 0 by default. If FCOE or
                ISCSI were configured by DCBX negotiation result to COS 0 the
                network traffic would cause drops on a dropless traffic class
                and could foul up ETS or PFC.

    Change:     When DCBX negotiation result occurs configure all priorities
                other than FCOE and ISCSI to the Networking COS.

    Introduced: 1.70.15

    Relevance:  57712/578xx with DCB support.

 5. Problem:    CQ57063 - tx checksum offload feature would not turn off when
                'ethtool -K eth<xxx> tx off' was used.

    Change:     Since at startup bnx2x declares support for ipv4 and ipv6
                checksum offload, connect the ethtool ipv6 set checksum premade
                op to the set_tx_csum op which affects both ipv4 and ipv6
                instead of the ipv4 op which affects only ipv4.

    Introduced: 7.0.0.

 6. Problem:    CQ56294 - Incorrect Remote fault detection may lead to link
                down on 5771x fiber devices.

    Change:     Fix LSS fault mechanism to detect remote fault and transmit
                local fault through the BMAC. This change requires leaving the
                BMAC out of reset in case link of 10G goes down

    Introduced: 7.0.0.

    Relevance:  5771x-fiber devices (8706/8726/8727), 10G only.

Version 1.70.20 (Jul 19, 2011)
==============================
Internal FW 7.0.23

Fixes:
------
 1. Problem:    CQ56950 - When speed is set to 1G on SFP+ device, link may
                fail to come up and system may hang due to incorrect
                initialization of the XGXS mode in the NIG.

    Change:     Fix typo.

    Introduced: 1.70.13.

    Relevance:  57712+8727 and 57711+87x6.

 2. Problem:    Possible race between Queues UPDATE from the NIV_FUNCTION_UPDATE
                and from VLAN HW stripping configuration.

    Change:     Move Queues UPDATE in NIV_FUNCTION_UPDATE flow to be executed
                from inside bnx2x_sp_rtnl_task (under rtnl_lock()).

    Introduced: 1.70.14.

    Relevance:  NIV only.

 3. Problem:    Link down when running iSCSI reboot test.

    Change:     Ensure that PHY_TX_ERROR_CHECK_FLAG is asserted before error
                checking.

    Introduced: 7.0.8.

    Relevance:  57712 with non-optic phys.

 4. Problem:    CQ57055 - ESX doesn't support LRO on top of IPv6.

    Change:     Separate TPA queue configuration: introduce
                BNX2X_Q_FLG_TPA_IPV6.

    Introduced: Day one.

    Relevance:  ESX only.

 5. Problem:    CQ57125 - Missing configuration for the FIP MAC in single
                function mode and for WWN in multi function mode.

    Change:     Add the missing configuration.

    Introduced: Day one.

    Relevance:  FCoE only.

 6. Problem:    CQ56784 - LED doesn't flash during LED test.

    Change:     Add the missing configuration.

    Introduced: Day one.

    Relevance:  578xx.

 7. Problem:    During error handling "FW failed to respond" message appears.

    Change:     Add missing command from driver to FW.

    Introduced: 1.70.08.

 8. Problem:    CQ56687 - Traffic LED do not blink under multiple OSes and dim.

    Change:     Enable LED blink and set rate.

    Introduced: 7.0.0.

    Relevance:  57712 + 8727.

 9. Problem:    Parity attentions clearing code didn't cover ATC and PGLUE_B
                blocks for 57712.

    Change:     Add the ATC and PGLUE_B blocks to the parity mask registers data
                base.

    Introduced: Day one.

    Relevance:  57712 only.

10. Problem:    Parity errors recovery flow for 578xx was broken.

    Change:     Fix the above flow:
                 - Add a separate column for the 578xx in the parity mask
                   registers DB.
                 - Fix the bnx2x_process_kill_chip_reset() to handle the blocks
                   newly introduced in the 578xx.

    Introduced: Day one.

    Relevance:  578xx only.

11. Problem     CQ56870 - ethtool -d (register dump) causes bnx2x panic on E3
                boards.

    Change      Add support for E3 A0 and E3 B0 in register dump.

    Introduced: Day one.

    Relevance   578xx only.

Enhancements
------------
 1. Request:    Fix the direction of the dma_sync() to synchronize towards CPU
                as it's supposed to be.

 2. Request:    CQ56857 - Add support for AutoGrEEEn using nvram configuration
                as default with module parameter to force it to on or off.

 3. Request:    CQ56737 - Disable TX_DIS Signal when SFP+ module is plugged out
                to prevent current leakage.

    Relevance:  578xx.

Version 1.70.19 (Jul 13, 2011)
==============================
Internal FW 7.0.23

Fixes:
------
 1. Problem:    578xx B0 - HW attention during traffic.

    Change:     properly configure 578xx B0 mode.

    Introduced: 1.70.00.

    Relevance:  578xx B0.

 2. Problem:    Possible no link when DAC is connected to 578xx device

    Change:     Restart WC microcode after module is plugged in and detected.

    Introduced: Day one.

    Relevance:  578x0 only.

Version 1.70.18 (Jul 12, 2011)
==============================
Fixes:
------
 1. Problem:    CQ56434 - System crash after running IO and pulling cable.
                Occurs since TX pipe is stalled due to missed XON indication
                (from MAC did to NIG).

    Change:     Force XON on NIG on link down/up.

    Introduced: T7.0.

 2. Problem:    84833 PHY link does not come up. The extra PHY write to
                the auto-neg register is bringing the PHY to auto-neg
                failure, resulting in constant retry.

    Change:     Remove the extra write to this register when auto-neg is
                enabled.

    Introduced: Day one.

    Relevance:  84833 PHY only.

 3. Problem:    CQ56462 - Unable to get link on both ports on several systems.

    Change:     Initialize warpcore twice in succession.

    Introduced: 1.70.03

    Relevance:  578xx.

 4. Problem:    84833 link still comes up at 10G even when configured to
                be forced 100.

    Change:     Disable 10G advertisement.

    Introduced: Day one.

    Relevance:  84833 PHY only, may affect 84823.

 5. Problem:    CQ56785 - Soft lockup/NULL pointer dereference while running
                FCoE traffic.

    Change:     Properly calculate TX queue for FCoE L2 traffic.

    Introduced: 1.70.15.

    Relevance:  57712/578xx with FCoE.

 6. Problem:    Kernel warning messages regarding the attempt to access the Tx
                queue with index more or equal to netdev->real_num_tx_queues.

    Change:     Align the initialization of the netdev with the Tx multi-CoS
                logic.

    Introduced: 1.70.15.

 7. Problem:    CQ56790 - During the loading of the bnx2x module there is an
                error indicating that the symbol bnx2x_dbg_buf could not be
                found.

    Change:     Declare bnx2x_dbg_buf as a non-static variable.

    Relevance:  ESX only.

 8. Problem:    Setting Warpcore registers may be ignored due to missing cycle
                in MDC/MDIO.

    Change:     On 578xx-B0, set free running counter on EMAC before each cl45
                access, and clear it at the end. This is not done globally,
                to prevent clock collisions between the four MDIO masters
                (One per EMAC).

    Introduced: Not applicable.

    Relevance:  578xx-B0.

Enhancements
------------
 1. Request:    Use vmalloc for a zlib inflate buffer.

 2. Request:    Remove unnecessary read of PCI_CAP_ID_EXP
                The PCIE capability offset is saved during PCI bus walking.
                It will remove an unnecessary search in the PCI configuration
                space if this value is referenced instead of reacquiring it.
                Also, pci_is_pcie is a better way of determining if the device
                is PCIE or not (as it uses the same saved PCIE capability
                offset).

 3. Request:    CQ56790 - Pass the mf_mode to the CNIC so that CNIC can
                determine if it needs to call the
                DRV_CTL_START_NPAR_CMD/DRV_CTL_STOP_NPAR_CMD to setup the NIG
                when in NPAR mode.

    Relevance:  ESX only.

Version 1.70.17 (Jul 05, 2011)
==============================
Internal FW: 7.0.23

Fixes:
------
 1. Problem:    PFC is not configured for ports 1,3 on 4-port devices.

    Change:     Enable the configuration for every port.

    Relevance:  DCBX, 578xx 4-port devices.

 2. Problem:    Warning message: "MDC/MDIO access timeout" on the first driver
                load. This warning appears during the link reset sequence, but
                it has no significant meaning, since it occur prior to the
                first phy initialization command.

    Change:     Adjust AER and CL45 clock during link reset sequence.

    Introduced: Day one.

    Relevance:  57712+8727.

 3. Problem:    "Soft lockup" errors. Caused by race between bnx2x_sp_task() and
                local IRQ both calling for napi_schedule(), which adds elements
                to a local NAPI list.

    Change:     Disable local IRQs when calling for napi_schedule() from
                bnx2x_sp_task().

    Introduced: 1.60.17.

    Relevance:  FCoE only.

 4. Problem:    (CQ56741, CQ56744, CQ56697, CQ56590) "Soft lockup". Caused by
                race between dcb negotiation update flow and nic unload flow.
                The dcb update flow, which is an element in the sp work queue
                waits for rtnl lock in order to call bnx2x_setup_tc while nic
                unload flow which takes the rtnl lock waits for the sp work
                queue to be flushed.

    Change:     The dcb negotiation update flow now schedules the call to the
                bnx2x_setup_tc on the rtnl_sp task.

 5. Problem:    Possible problems in using fcoe and iscsi concurrently. The same
                cid was assigned to both.

    Change:     Allocate each its own cid.

    Introduced: 1.70.15.

 6. Problem:    Compilation failed on vanilla kernels below 2.6.33 when FCOE
                module is selected.

    Change:     Add appropriate #ifdef structure.

    Introduced: 1.70.15.

Enhancements
------------
 1. Request:    CQ56174 - Add AutogrEEEn support to 54618SE PHY.

    Relevance:  578xx.

 2. Request:    Support sharing of PFC configuration between functions
                on the same port.

    Relevance:  MF devices with DCB support.

 3. Request:    CQ54245 - Add Operational DCB state to GET_DCBX_PARAMS
                structure.

    Relevance:  57712/578xx with DCB support.

 4. Request:    Add ability to Enable/Disable DCB according to remote
                configuration/absence.

    Relevance:  57712/578xx with DCB support.

 5. Request:    Add statistics ramrods to EQ resources accounting.

Version 1.70.16 (Jun 29, 2011)
==============================
Internal FW: 7.0.23

Fixes:
------
 1. Problem:    CQ56500 - ESX driver didn't compile.

    Change:     Change the ESX grcDump function to use the standard functions
                for disabling/clearing/enabling parity attentions.

    Introduced: 1.70.15.

    Relevance:  ESX only.

 2. Problem:    CQ56438 - Tx timeout was hit when there was a parity error
                and offloaded drivers (bnx2i/bnx2fc) loaded. It takes too long
                for the offloaded drivers to close (CNIC_STOP)
                bnx2x disabled a carrier after the CNIC_STOP completed.

    Change:     Moved the bnx2x_tx_disable() call to be before the CNIC_STOP
                call.

    Introduced: Day one.

 3. Problem:    When DAC (Direct Attached Cable) is used, there's not actual
                link down event on the far side since transmitter output is not
                disabled.

    Change:     Disable transmitter output when link is disabled. The same
                change in MFW (since v7.0.20) will cause link to stay down
                using earlier version of this software (CQ56652). This version
                and after fixes it.

    Introduced: Day one.

    Relevance:  57712+8727.

 4. Problem:    CQ53144 - Repeating "NOHZ: local_softirq_pending 08" messages in
                the syslog: NAPI softirq was scheduled on a local CPU but
                ksoftirqd wasn't invoked. This was caused by calling the
                napi_schedule() for the FCoE L2 ring from a workqueue and not
                from the ISR as it is supposed to, which caused the above
                phenomenon.

    Change:     Disable local softirqs before napi_schedule() call
                (local_bh_disable()) and then re-enable them
                (local_bh_enable()). This will invoke the ksoftirqd if needed.

    Introduced: 1.60.17.

    Relevance:  FCoE only.

 5. Problem:    In MF mode, when DCBX enabled, ifconfig down of PMF function
                may cause stop traffic on other function.

    Change:     Use generic scheme when configuring HW and FW for DCBX;
                Protect function from going down during inappropriate state.

    Relevance:  MF, DCBX only.

 6. Problem:    CQ56292 - bnx2x assert dump when setting MTU to 9000. This was
                caused by an improper initialization of the fp->rx_buf_size for
                none-FCoE rings which led to improper initialization of BD
                buffer sizes for those rings.

    Change:     Fix the code that initializes the fp->rx_buf_size value.

    Introduced: 1.70.08.

    Relevance:  FCoE on ESX only (CNA).

 7. Problem:    CQ56531 - Kernel crash due to page fault. Num of queues supplied
                to kernel erroneously included the iscsi queues which resulted
                with kernel choosing a transmission queue index beyond the
                boundary of the bxn2x's tx queues array.

    Change:     Supply the kernel with correct number of tx queues.

    Introduced:  1.70.15.

    Relevance:  iSCSI OOO (since kernels 2.6.34 or Red Hat 6.0).

 8. Problem:    CQ56582 - BCM57810 may exhibit link down when connected to KR
                switch.

    Change:     Don't overwrite the value for other reg.

    Introduced: 1.70.15.

    Relevance:  578xx KR.

 9. Problem:    CQ56538 - DCBX: The PFC pause frames being sent have source MAC
                address of 00:00:00:00:00:00.

    Change:     Initialize source MAC address in the MAC

    Introduced: Day one.

    Relevance:  578xx.

10. Problem:    CQ56507 - Panic Dump after DCBX negotiation completed.

    Change:     (FW) Fix TX queue allocation scheme and DCB related firmware
                flows.

    Introduced: 1.70.15 (FW 7.0.19).

    Relevance:  57712/57810A0/57840A0, when multiple-priorities is activated
                together with DCB.

11. Problem:    CQ54938 - Driver asserts on CFC delete command, when running
                stress test against an Equalogic target, while issuing RESET_LUN
                commands.

    Change:     (FW iSCSI) Decrease activity counter in the cleanup flow, to
                compensate for later activity counter increase.

    Introduced: 1.70.01 (FW 7.0.0).

    Relevance:  iSCSI.

12. Problem:    Basic FCoE over NIV is not working when there is inner vlan on
                packet.

    Change:     (FW ETH) Fixed the flow in NIV mode to change a zero inner vlan
                vid to the NIV default vlan.

    Introduced: 1.70.15 (FW 7.0.21).

    Relevance:  BCM57712/BCM578xx, only with NIV on packets with inner vlan.

13. Problem:    CQ55328 - FCoE discovery does not work with ESX CNA device.
                The ESX stack would complain about the number of filters for the
                CNA NetQueue.

    Change:     Call netif_set_poll_cna() after the FCoE NAPI structure has been
                initialized.

    Introduced: 1.70.08.

    Relevance:  ESX CNA only.


Enhancements
------------
 1. Request:    Optimized the memory barriers usage in the slow path.

 2. Request:    Add AutogrEEEn support to 84833 PHY.

 3. Request:    Implement the netdev->ndo_fcoe_get_wwn().

Version 1.70.15 (Jun 22, 2011)
==============================
Internal FW: 7.0.21

Fixes:
------
 1. Problem:    Need to update references from 54616 PHY to 54618SE.

    Change:     Updated references from 54616 PHY to 54618SE.

    Introduced: Day one

    Relevance:  No functional impact.

 2. Problem:    Need to update T0000G to enable AutogrEEEn by default.

    Change:     Updated T0000G to enable AutogrEEEn by default.

    Introduced: Day one.

    Relevance:  T0000G boards.

 3. Problem:    Driver loading problems on 4 port device with active MF mode.
                Problem occurs due to wrong calculation of mailbox function.

    Change:     In 4 port mode, change calculation of BP_FW_MB_IDX to be:
                port_id + vnic_id*2.

    Introduced: Day one.

    Relevance:  4 port device (578xx) with active MF mode.

 4. Problem:    Wrong calculation of the available slow path elements. As a
                result possible false "ring is full" messages and failures of
                slow path commands.

    Change:     Fixed the above calculations.

    Introduced: 1.70.12.

 5. Problem:    CQ56287 - STOP_ON_ERROR compilation was broken.

    Change:     Make the bnx2x_int_disable() function public.

    Introduced: 1.70.13.

 6. Problem:    Compilation failed on 2.6.39 kernels.

    Change:     Fix compat for the kernels.

    Introduced: 1.70.13.

 7. Problem:    CQ56325 - 57800 does not send LLDP frames.

    Change:     Enable DCBX for 4-port devices.

    Introduced: 1.70.01.

    Relevance:  578xx 4 port devices.

 8. Problem:    Storm clocks were not initialized properly in E3.

    Change:     (FW) Remove wrong clock initialization from init tool
                and move it to MCP.

    Introduced: Version 1.70.13 (FW 7.0.20).

    Relevance:  BCM57800.
                Power-cycle of the device is needed in order to fix the
                Storm frequency, a regular driver update is not enough.

 9. Problem:    Possible race between writing event-ring element and
                updating the host-coalescing index.

    Change:     (FW) Fix the flow by sending host-coalescing index update
                only after the completion of the event-ring writing.

    Introduced: Version 1.70.01 (FW 7.0.0).

10. Problem:    Basic FCoE on NPAR-SD was not working.

    Change:     (FW-FCoE) Fixed the flow in NPAR-SD mode to add default vlan
                also when there is vlan with vid=0 on packet.

    Relevance:  BCM57712 and BCM578xx, only NPAR-SD mode.

Enhancements
------------
 1. Request:    Propagate WWN info up to bnx2fc driver.

    Relevance:  FCoE only.

 2. Request:    CQ56040 - Enable DCBX on ESX5.0 and newer.

    Relevance:  ESX with DCB only.

 3. Request:    Honor BAM on KR NVRAM config for 578xx.

    Relevance:  578xx KR only.

 4. Request:    CQ56086 - Integrate VMware ESX grcDump gdb patch.

    Relevance:  ESX only.

 5. Request:    Add fan failure detection for 578xx-SFI

    Relevance:  578xx with fan mounted.

 6. Request:    Support multiple concurrent classes of service for network
                traffic. Support mapping of skb priority to traffic class and
                traffic class to transmission queue in kernel. Update said
                mapping according to multi class queue discipline and DCBX
                negotiaton.

    Relevance:  Kernel 2.6.39 or Red Hat 6.1.


Version 1.70.14 (Jun 14, 2011)
==============================
Internal FW: 7.0.20

Fixes:
------
 1. Problem:    Possible spurious cnic interrupt.

    Change:     Properly disable cnic sb.

    Introduced: 1.60.00.

    Relevance:  (Theoretical) when CNIC is supported.

 2. Problem:    In NPAR-SD mode, VIF SET request for FCoE function takes more
                than 40 seconds to be completed and ACKed back to the MCP.

    Change:     Queue update ramrod sent to FCoE ring couldn't wait for
                completion in the same context. Therefore, don't wait for
                completion for this ramrod on FCoE ring.

    Introduced: 1.70.00.

    Relevance:  FCoE in NPAR-SD mode.

 3. Problem:    In NPAR-SD mode, theoretically traffic can be dropped due to
                early VIF SET ACK sent back to the switch.

    Change:     Send VIF SET ACK from driver to MCP only after function update
                ramrod is completed + all queue updates ramrods are completed.

    Introduced: 1.70.10 (when silent vlan removal was added).

    Relevance:  NPAR-SD mode.

Enhancements
------------
 1. Request:    CQ53961 - Remove 10Mbps from 84833 PHY. Honor PHY speed
                attributes for 10/100. If the driver is set up to advertise
                only 10M, no speed capability will be advertised. And
                no link will be established.

    Relevance:  84833 PHY based boards.

 2. Request:    Add definition for autogreen in eLink.

    Relevance:  84833 PHY and 54618SE PHY based boards.

Version 1.70.13 (Jun 12, 2011)
==============================
Internal FW: 7.0.20

Fixes:
------
 1. Problem:    Driver might set NPAR-SD mf_mode even if that mode can't be
                set. Driver sets NPAR-SD according to value written to NVRAM,
                without considering error cases such as missing NVRAM images
                etc.

    Change:     Set mf_mode to NPAR-SD only if mac address in shmem is valid.
                If address in shmem is valid, then MFW performed all checks
                and found that mode as valid.

    Introduced: Day one.

    Relevance:  NPAR-SD mode only.

 2. Problem:    Memory leak in during selftest. Driver mapped skb twice.

    Change:     Do it once.

    Introduced: 1.70.09.

 3. Problem:    CQ55933 - ESX CNA enabled driver tries to configure Rx mode
                for an FCoE ETH queue for NICs that do not support an FCoE.

    Change:     Configure Rx mode for an FCoE ETH queue only for the NICs
                that support FCoE (57712 and newer).

    Introduced: 1.70.08.

    Relevance:  ESX CNA only.

 4. Problem:    CQ55928 - Tx traffic stop in DCB update flow.

    Change:     (FW) Fix wrong address calculation in DCB update ramrod.

    Introduced: Version 1.70.09 (FW 7.0.16).

    Relevance:  BCM57712 and BCM578xx, only when DCB is enabled and FCOE is
                running.

 5. Problem:    No TX in Firmware WRR mode.

    Change:     (FW ETH) Fix CoS mapping to VOQs.

    Introduced: Version 1.64.00 (FW 6.4.0).

 6. Problem:    CQ55598 - During fast retransmit, the TCP sequence is advanced
                by the size of the TCP data retransmitted.

    Change:     (FW iSCSI) Fix firmware to avoid update of in-order TCP
                sequence.

    Introduced: Version 1.70.09 (FW 7.0.16).

    Relevance:  iSCSI.

 7. Problem:    Chip may stop transmission after DCB update in NPAR-SD mode.

    Change:     (FW FCoE) Fix firmware calculation of transmission credit.

    Introduced: Version 1.70.00 (FW 7.0.0).

    Relevance:  FCoE, NPAR-SD mode.

 8. Problem:    VLAN packets are not received on kernels above 2.6.37.

    Change:     Improper FW configuration.

    Introduced: Version 1.70.10.

    Relevance:  When DCB enabled in NVRAM.

 9. Problem:    CQ56073 - PFC feature is not functional.

    Change:     Fix handling of DCB negotiation.

    Introduced: Version 1.70.02.

    Relevance:  57712 only.

10. Problem:    CQ56019 - Compilation fails on RHEL 6.1.

    Change:     Fix bnx2x_compat.h.

    Introduced: Version 1.70.11.

Enhancements:
-------------
 1. Request:    Update PMD settings for 578xx SFI/XFI/DXGXS according to the
                new recommended values.

 2. Request:    Add support for 3 COSes for 578xx (B0) devices.

 3. Request:    Add elink_84833_hw_reset_phy function.

    Relevance:  84833 PHY based boards.

 4. Request:    Added support for 2 queues on different CoSes in 57712 and
                578xx A0.

 5. Request:    Performance improvements in order to resolve PCI bottleneck on
                short packet PPS test on multiple connections.

Version 1.70.12 (May 24, 2011)
==============================
    Fixes
    -----
   1.  Problem:  (CQ55655) WOL is not functional on functions 2-7.

        Cause:   Incorrect register configuration.

        Change:  Allow WOL via HW registers.

        Impact:  Introduced in 1.64.01.

    2.  Problem: Undefined device behaviour when bringing up more
                 than 16 eth queues with CNIC enabled.

        Cause:   Resource management mechanism does not allow more than 16
                 queues without actual limiting the number.

        Change:  Limit number of eth queues to 16.

        Impact:  57712 only.

    3.  Problem: Possible no link on 578xx SFP+.

        Cause:   Failed reading from SFP+ module EEPROM due to I2C register not
                 returning acknowledge over successful operation.

        Change:  Add work-around of up to 3 retries in case of I2C failure.

        Impact:  578xx SFI.

    4.  Problem: (CQ55748) Link loss during up/down test.

        Cause:   Race in driver code causes it to get out of sync.

        Change:  Fix assignment with the lock.

    5.  Problem: In NPAR-SD mode, iSCSI and FCoE MAC addresses for relevant
                 functions are zero.

        Cause:   In NPAR-SD mode, iSCSI and FCoE MAC addresses were not taken
                 from shmem for functions in which these protocols are enabled.

        Change:  If NPAR-SD mode is used and the function is iSCSI/FCoE enabled,
                 read suitable MAC addresses from shmem.

    6.  Problem: In NPAR-SD mode, default vlan tag might not be silently removed
                 by the FW.

        Cause:   default vlan value and mask sent to FW in function update
                 ramrod (for NPAR-SD mode) includes 3 bits of priority.

        Change:  default vlan value and mask in function update ramrod will
                 include only 12 bits of vlan id.

    7.  Problem: Parity recovery was broken.

        Cause:   Improper handling of starting and termination of the
                 'periodic_task'.

        Change:  Ensure that only a PMF is running a periodic task. Stop a
                 periodic task when a function is shut down.

        Impact:  Introduced in 1.70.09.

    8.  Problem: Chip may crush under PF FLR.

        Cause:   Driver could get interrupt on a disabled function.

        Change:  (In FW 7.0.18) Fixed relevant firmware flow.

        Impact:  Introduced in 1.70.00 (FW 7.0.0)

    9.  Problem: Improper device behaviour on BE platform.

        Cause:   Use improper calculation for FW offsets.

        Change:  Use FW offsets instead.

        Impact:  Introduced in 1.64.01

    Enhancements
    ------------
    1.  Request: Add the ability to switch settings from one speed to
                 another in the Warpcore without having to unload the
                 driver.

        Change:  Add a routine to restore the Warpcore register settings
                 back to default. The routine is called before configuring
                 the Warpcore to the desired speed settings.

        Impact:  578xx only.

    2.  Request: Separate the accounting of the context-less SP commands and
                 those that complete on the FP Rx ring.

        Change:  As requested.

    3.  Request: Reduce loading time when not in hotplug flow.

        Change:  As requested.

    4.  Request: Updates the bnx2x_set_features() to handle loopback mode.

        Change:  When enabled, it sets internal-MAC loopback.

        Impact:  Backport from upstream.

    5.  Request: Add 20G supported display for ethtool.

        Change:  As requested.

    6.  Request: (CQ55781) Allow GDB script to poke at the hardware registers.

        Change:  As requested.

        Impact:  ESX only.

    7.  Request: Reduce number of pcie transactions in high PPS rate scenarios.

        Change:  (In FW 7.0.18) Changing Status block DMA to host to be read
                 from RAM instead of 3 IMM DMA's. This reduces the number of
                 transactions on PCI and resolves with faster replenishment of
                 PCI credits, since we reduced the number of read modify write
                 transaction on host cash lines.

    8.  Request: Use FW 7.0.18.

        Change:  As requested.

Version 1.70.11 (May 18, 2011)
==============================
    Fixes
    -----
    1.  Problem: (CQ55251) "BAD MCP validity signature" shown when device
                 hot-plugged.

        Cause:   Race between FW initialization and driver load.

        Change:  Let FW to complete initialization by adding msleep in driver.

    2.  Problem: TPA is not functional on platforms where
                 CONFIG_NEED_DMA_MAP_STATE is not defined.

        Cause:   We used dma_unmap_addr_set() and dma_unmap_addr() macros for
                 internal storing and for further retrieving of the DMA mappings
                 which were then used for BDs configuration in the TPA Rx flow
                 while dma_unmap_addr() will always return zero on the mentioned
                 above platforms.

        Change:  Don't use the mentioned above macros in flows others than
                 "map->unmap".

        Impact:  TPA only. Introduced in 1.70.09.

    3.  Problem: Compilation failed on SLES11 SP1 update 1.

        Cause:   Conflict on backported feature.

        Change:  Fix bnx2x_compat.h.

        Impact:  SLES11 SP1 update 1 only.

    4.  Problem: Wrong link LED when speed lower than 10G on 578xx devices.

        Cause:   Incorrect LED mode setting.

        Change:  Set correct LED mode setting.

        Impact:  578xx devices only.

    5.  Problem: One queue is not selected for transmission in kernels
                 below 2.6.38.

        Cause:   Incorrect mapping function.

        Change:  Fix compat to implement mapping similar to 2.6.38.

        Impact:  Kernels below 2.6.38 with multi queue support.

    6.  Problem: TCM, DMAE, PBF, TIMERS, XCM, DMAE parity errors were ignored,
                 while still asserting the "close the gates" bit.

        Cause:   The appropriate bits were not checked when checking for parity
                 errors.

        Change:  Added the missing bits handling to the parity recovery code.

    7.  Problem: Compilation failed on RHEL 5.7.

        Cause:   Conflict on backported feature.

        Change:  Fix in bnx2x_compat.h.

    8.  Problem: (CQ55312) DMAE timeout message shown in the syslog when loading
                 the first function on the port.

        Cause:   BMAC was reset after the NIG-to-BRB channel was open and before
                 the FW was initialized. This caused the parity error in TCM.

        Change:  Reset BMAC before opening NIG-to-BRB channel.

        Impact:  Introduced in 1.70.04.

    Enhancements
    ------------
    1.  Request: Optimize buffer mapping manipulations in the TPA flow.

        Change:  As requested.

    2.  Request: Don't use atomic bit operations unless needed.

        Change:  As requested.

    3.  Request: Propagate the CFC_DEL ramrod error code up to CNIC.

        Change:  As requested.


Version 1.70.10 (May 5, 2011)
==============================
    Fixes
    -----
    1.  Problem: LRO failure in IPv6 case.

        Cause:   Erroneous calculation of lro_mss size for IPv6 case.

        Change:  Fix LRO MSS calculation in IPv6 case.

        Impact:  57712 and newer IPv6 LRO only.

    2.  Request: Potential link issue.

        Cause:   Incorrect code alignment led to bad PHY struct initialization.

        Change:  Fix PHY struct initialization.

        Impact:  Introduced on 1.70.09.

    3.  Request: Potential inconsistent link state report towards OS.

        Cause:   Possible race between netdev->open() and link attention
                 handling flows both reporting link state towards OS.

        Change:  Protect the link reporting code with the same locking scheme
                 as used for the link state handling protection.

    Enhancements
    ------------
    1.  Request: Use FW 7.0.17.

        Change:  As requested.

    2.  Request: Employ silent vlan removal feature.

        Change:  Silent vlan removal use:
                 1. In NPAR-SD mode silently remove the default vlan.
                 2. In ESX Network Plug-in Architecture silently remove the NPA
                    default vlan.
                 3. When DCB is enabled in kernels which don't treat vlan-0 as
                    non-vlan use silent vlan removal to:
                        a. Remove vlan 0 with priority 0 if non fcoe queue.
                        b. Remove vlan 0 with any priority if fcoe queue.

    3.  Request: Do not add VLAN tag or modify the priority of an explicit vlan
                 tag of packets with TC_PRIO_CONTROL value in the skb priority.

        Change:  As requested.

Version 1.70.09 (May 3, 2011)
==============================
    Fixes
    -----
    1.  Problem: (CQ53629) System spontaneously reboots.

        Cause:   PCI/DMA address mapping error not properly handled by driver,
                 which may cause chip to access improper addresses in host
                 memory.

        Change:  Add proper handling for mapping errors.

    2.  Request: (CQ49132) Link seen as up when cable(mostly fiber) is not fully
                 connected.

        Cause :  In this scenario, the physical link is up, while error are
                 detected on the MAC layer.

        Change:  Add periodic check for LSS errors on the MAC layer, since
                 they don't provide indication by interrupt.

        Impact:  Currently only 57712.
                 Note that this fix will not discover a case where one of two
                 wires of fiber cable is plugged out.

    3.  Problem: Storms get stuck shortly after a single-engine recovery.

        Cause:   Functions were not unloading against MCP in case of parity
                 error thus later LOAD request was always returning a FUNCTION
                 load code. This lead to improper HW/FW initialization.

        Change:  Added unloading against the MCP in case of parity error.

        Impact:  57712 and newer only. Introduced in 1.70.06.

    4.  Problem: Kernel panic when handling egress UDP packet for which checksum
                 offload has been requested.

        Cause:   The above case hasn't been properly handled in the code.

        Change:  Add a proper handling for the above case.

    5.  Problem: In case of VLAN removal of a first small packet in TPA
                 aggregation, driver may access uninitialized address.

        Cause:   Firmware places a corrupted RX completion element in this case.

        Change:  (in FW 7.0.16) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.02 (FW 6.4.0).

    6.  Problem: (FCoE)(CQ54302) Unexpected FW behavior causes driver assert.

        Cause:   Task SP-RAM address is not updated and the thread uses wrong
                 SP-RAM address.

        Change:  (in FW 7.0.16) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.02 (FW 6.4.0).

    7.  Problem: (FCoE)(CQ53330) on 578XX 4-port mode FW causes driver assert.

        Cause:   The firmware KCQEs on wrong EQ.

        Change:  (in FW 7.0.16) Fixed relevant firmware flow.

        Impact:  Introduced in 1.70.01 (FW 6.4.0). 578XX 4-port only.

    8.  Problem: (CQ53924) Ethtool Self Test fails loopback test.

        Cause:   Unmapping of dma memory was not performed before accessing it.

        Change:  Added unmap of the relevant memory.

    9.  Problem: MDC/MDIO access to Warpcore registers may fail with low
                 probability.

        Cause:   Warpcore PCB controller may get stuck without having MDC free
                 running in the system.

        Change:  Add work-around for 578xx-A0 by adding another write to the
                 MDIO bus after each MDC access to the Warpcore. This will be
                 fixed in HW for 578xx-B0.

        Impact:  578xx.

    10. Problem: (DCB)(CQ54899) PMF migration may cause DCB get out-of-sync.

        Cause:   Driver did not update port structure correctly.

        Change:  Fixed DCB update code.

        Impact:  Introduced in 1.70.06.

    11. Problem: The following error is logged as soon as bnx2fcd service is
                 started: "kernel: 8021q: device eth# has buggy VLAN hw accel".

        Cause:   Under Red Hat 6.1 the bnx2x was compiled assuming the netdev
                 centralized handling of hardware acceleration exists in kernel.

        Change:  Changed the bnx2x to compile using the old scheme of handling
                 of hardware acceleration in RH6.1.

        Impact:  RH6.1

    12. Problem: (CQ53276) 578xx ethtool display and settings are not done per
                 board type.

        Cause:   Missing distinctions between various Warpcore interfaces.

        Change:  Check Warpcore network interface during init stage, and update
                 the supported network attributes accordingly.

        Impact:  578xx

    13. Problem: (CQ54552) System breaks once link is up after PMF migration
                 when speed is 1G.

        Cause:   Missing synchronization flag between PMF and non-PMF which
                 indicate the XGXS type, led to incorrect initialization once
                 link is up after PMF migration.

        Change:  Initialize this flag during synchronization

    14. Problem: ethtool will not show the correct media type after
                 PMF migration and changing the SFP+ module type

        Cause:   Media type was not synchronized after it is changed

        Change:  Synchronize media type between PMF and non-PMF

        Impact:  SFP+ based boards.
                 Introduce on 1.64.19

    15. Problem: Over-current message displays with port0 instead of port1 on
                 57712 SFP+ devices.

        Cause:   57712 port enumeration is per path.

        Change:  Set the correct port number of the over-current display message
                 according to the device type.

        Impact:  57712 with SFP+ boards.

    16. Problem: Possible dead locks in slow path flows involving interface
                 toggling.

        Cause:   vlan_mac object was using spin_lock() semantics instead of
                 spin_lock_bh() semantics while it may be called under a spin
                 lock with BHs disabled in the ndo_set_rx_mode() flow.

        Change:  Fixed the mentioned above code.

        Impact:  Introduced in 1.70.06.

    17. Problem: A possible deadlock in flows involving the DMAE operations.

        Cause:   We protected the DMAE engine with mutex (suspends a task when
                 lock can't be taken) in the bnx2x_issue_dmae_with_comp()
                 function while it is also called under a spinlock in the
                 ndo_set_rx_mode() flow.

        Change:  Protect the above DMAE engine with a spinlock instead of a
                 mutex.

        Impact:  Introduced in 1.70.06. 57712 and newer in the NPAR mode only.

    Enhancements
    ------------
    1.  Request: Add preliminary support for E3+84833 to pass extlb_test. Caveat
                 that both drivers must be loaded at this time to function
                 correctly.

        Change:  As requested.

    2.  Request: Disable FCoE and DCB on unsupported platforms.

        Change:  Determine allowed platforms by kernel version.

        Impact:  FCoE/DCB.

    3.  Request: Add over-current check for 578xx

        Change:  As requested

        Impact:  578xx

    4.  Request: Add default TX PMD settings (de-emphasis) for 578xx.

        Change:  Set the TX settings per PMD type (SFI/XFI/DXGXS/KR) according
                 to DVT measurements to achieve optimal link.

        Impact:  578xx.

    5.  Request: Use FW 7.0.16.

        Change:  As requested.

    6.  Request: Write driver version string to specified offset in scratchpad
                 for NC-SI OEM commands.

        Change:  Read scratchpad offset from ncsi_oem_data_addr field of shmem2.
                 Then, write driver version to appropriate offset.

    7.  Request: Remove zeroing of Ram0 from driver as it is performed by init
                 tool.

        Change:  Removed relevant code and the defines.


Version 1.70.08 (Apr 11, 2011)
==============================
    Fixes
    -----
    1.  Problem: Possible chip hang in case of parity error in QM.

        Cause:   QM was reset before PXP causing 'close the gates' to be
                 de-activated shortly before resetting PXP, PSWRQ sends a write
                 request to PGLUE, PXP is reset, PGLUE tries to read the payload
                 data from PSWWR, but PSWWR does not respond. The write queue in
                 PGLUE will be stuck, DMAE commands will not return.

        Change:  Change reset order of PXP and QM blocks so that PXP is reset
                 before QM.

        Impact:  During error recovery flow of QM parity attention only.
                 Introduced in 1.53.1.

    2.  Problem: Tx of a CNA netdev wasn't properly disabled.

        Cause:   Typo in a bnx2x_tx_disable().

        Change:  Fix the above typo.

        Impact:  ESX CNA only. Introduced in 1.64.13.

    3.  Problem: Fairness issue between functions 0, 1 and functions 2,3 on
                 57840 4x10G.

        Cause:   BRB threshold registers weren't initialized properly.

        Change:  Use reset values of BRB threshold registers.

        Impact:  57840 4-Port only.

    4.  Problem: CNIC module would try to load iSCSI and/or FCoE despite invalid
                 MF/MAC configuration of the appropriate.

        Cause:   bnx2x_register_cnic() overwrites cnic_eth_dev->drv_state.

        Change:  Do not overwrites cnic_eth_dev->drv_state in
                 bnx2x_register_cnic().

        Impact:  iSCSI and FCoE only.

    5.  Problem: Possible inconsistent rx_mode state for iSCSI L2 queue.

        Cause:   Both BNX2X_FILTER_ISCSI_ETH_START_SCHED and
                 BNX2X_FILTER_ISCSI_ETH_STOP_SCHED bits might be set, which in
                 line might cause the situation when the rx_mode that is finally
                 configured is not the one that has been requested the last.

        Change:  Clear the already pending state when configuring the new one.

        Impact:  iSCSI L2 only.

    6.  Problem: (CQ51066) Link status in port mailbox indicates AUTONEG is
                 disabled and no Serdes.

        Cause:   Link status was zeroed during link down state.

        Change:  Set AUTONEG and SERDES indications when needed.

    7.  Problem: Possible pending SP ramrod completion after FUNC_STOP ramrod is
                 sent.

        Cause:   Missing protection when checking bits in bnx2x_wait_sp_comp().

        Change:  Added the protection with netif_addr_lock for the mentioned
                 check.

        Impact:  Introduced in 1.64.00.

     8. Problem: (CQ54422) Compilation Failed on RHEL 6.1.

        Cause:   Backported features complict.

        Change:  Adopt features in compat.

     9. Problem: Potentioal race in NPAR-SD mode might cause sending of function
                 update ramrod before function start ramrod is completed.

        Cause:   LOAD_DONE message to MCP is sent before function start ramrod.
                 LOAD_DONE request starts VIF initialization process that
                 ends with VIF_SET request from the switch that triggers
                 function update ramrod.

        Change:  Perform function start ramrod before sending LOAD_DONE message
                 to MCP.

    Enhancements
    ------------
    1.  Request: Add CNA dummy device.

        Change:  As requested. ESX 5.x only.

    2.  Request: Integrate the upstream "Support for managing RX indirection
                 table" patch by Tom Herbert implementing the support for
                 ethtool -X/-x options.

        Change:  Integrated the mentioned patch taking into the account all
                 remarks of the netdev people about this patch.

    3.  Request: Add 1G support for XFI serdes network interface type of
                 Warpcore

        Change:  As requested

        Impact:  578xx - XFI

Version 1.70.07 (Apr 04, 2011)
==============================
    Fixes
    -----
    1.  Problem: TX fault LED doesn't work upon module validation.

        Cause:   Incorrect GPIO assignment.

        Change:  Fix GPIO setting that controls the TX fault LED.

        Impact:  578xx - SFP+.

    2.  Problem: DAC may not link up.

        Cause:   Register read was missing after setting EDC mode.

        Change:  Read EDC register after setting it.

        Impact:  578xx - DAC.

    3.  Problem: Parity errors prevent device from load on
                 emulation environment.

        Cause:   Emulation environment limitation.

        Change:  Disable parity on emulation environment.

        Impact:  Emulation environment only.

    4.  Problem: Incorrect SFP+ module power setting.

        Cause:   Value was swapped.

        Change:  Reverse value to fit board scheme.

        Impact:  578xx SFP+ when nvm cfg #160 is set.

    5.  Problem: When accept all TX packets is enabled (all TX packets are
                 duplicated to both the physical and loopback ports), LSO
                 traffic throughput is less than expected.

        Cause:   Firmware accounted duplicated LSO (and also some non-LSO)
                 packets twice in the rate shaping algorithm, instead of only
                 once.

        Change:  (In FW 7.0.15) Fixed relevant firmware rate shaping bytes
                 calculation for duplicated TX packets.

        Impact:  Introduced in 1.64.01 (FW 6.4.0).

    6.  Problem: PF FLR while VFs are running may cause system to get stuck.

        Cause:   If VF FLR happens after PF is down, the VF may try to send an
                 event message to the PF by mistake.

        Change:  (In FW 7.0.15) Fixed relevant firmware flow.

        Impact:  Introduced in 1.70.00 (FW 7.0.0).

    7.  Problem: When TPA is enable, tcp packets with erroneous length might
                 add wrong bytes to packet.

        Cause:   Firmware didn't verify the packet length is equal Ethernet
                 header + IP total length.

        Change:  (In FW 7.0.15) Added the required verification.

        Impact:  Introduced in 1.64.01 (FW 6.4.0).

    8.  Problem: (FCoE) FCoE on physical port 1 can't be enabled.

        Cause:   Wrong cos allocation.

        Change:  (In FW 7.0.15) Fixed relevant firmware flow.

        Impact:  57810/57840 only. Introduced in 1.70.00 (FW 7.0.0).

    9.  Problem: (iSCSI) Chip hangs upon arrival of iSCSI packet with split
                 digest.

        Cause:   Firmware sends erroneous hardware read command.

        Change:  (In FW 7.0.15) Fixed relevant firmware flow.

        Impact:  Introduced in 1.70.00 (FW 7.0.0).

    Enhancements
    ------------
    1.  Request: Add an ability for a separate configuration of internal (Tx)
                 switching filtering options.

        Change:  As requested.

        Impact:  SRIOV and virtualization only.

Version 1.70.06 (Mar 29, 2011)
==============================

    1.  Problem: (CQ53274) Pci names are incorrect/inaccurate.

        Cause:   Pci names are not updated.

        Change:  Removed 57713 et al. Added 578xx family with MF and VF flavors.

    2.  Problem: (DCB MF) PMF migration caused to lose DCBX results.

        Cause:   DCBX results is hidden from other PFs.

        Change:  Add DCBX notification mechanism during PMF migration.

    3.  Problem: (DCB) Static configuration is not properly handled.

        Cause:   Static configuration flow does not handle HW interrupt, because
                 of state where DCBX initialization performed.

        Change:  Move DCBX initialization to the end of nic_load.

        Impact:  DCBX involved flows.

    4.  Problem: (CQ53768) Kernel panic at  bnx2x_cnic_reuse_ooo_pkt.

        Cause:   Wrong arithmetics on Tx HW consumer for a Forwarding ring.

        Change:  Fixed the above arithmetics.

        Impact:  iSCSI OOO only. Introduced in 1.64.00.

    5.  Problem: (CQ53347) Data does not validate reported while running Chariot
                 for RH6.0 x64.

        Cause:   In case of VLAN removal of a first packet in TPA aggregation,
                 firmware may add padding bytes in the middle of the packet.

        Change:  (in FW 7.0.14) Fixed relevant firmware flow.

        Impact:  Introduced in 1.70.00.

    6.  Problem: (CQ53523) System stuck during load/unload under traffic.

        Cause:   RX processor can get stuck in infinite loop when a set mac
                 configuration is done during traffic.

        Change:  (in FW 7.0.14) Fixed relevant firmware flow.

        Impact:  Introduced in 1.70.00.

    7.  Problem: Link may not come up after SFP+ module plug in on BCM8726
                 based boards

        Cause:   Module detection was not triggered by module insertion, which
                 may lead to incorrect setting of EDC mode

        Change:  Initialize AEU before collecting the group of signals in
                 charge for generating interrupts

        Impact:  BCM8726 based boards
                 Introduced in 1.52.50

    8.  Problem: (CQ54040) Unable to perform iSCSI login.

        Cause:   Missing iSCSI L2 and Netq MAC ramrods completion handling.

        Change:  Added a missing code.

        Impact:  iSCSI and ESX only.

    9.  Problem: bnx2x_func_state_change() and bnx2x_queue_state_change return a
        negative value while PENDING (1) value should be returned.

        Cause:   test_bit(nr, vec) returns all-F's if nr is a variable and the
                 requested bit is set.

        Change:  Chaged test_bit(nr, vec) to !!test_bit(nr, vec) when nr is a
                 variable.

        Impact:  Introduced in 1.64.08.

   10.  Problem: If MCP sends to driver second NPAR-SD event before first one
                 handling is done, no NPAR-SD events will be handled since now
                 on.
                 Note that second event from MCP while first one is not done
                 yet should not happen due to "one pending" mode, but it is good
                 practice to handle both messages if such a scenario occures
                 in some way.

        Cause:   drv_status field was checked to match exact value instead
                 of bit masking the value to match various events.

        Change:  Check drv_status bits to know which NPAR-SD events should be
                 handled.

        Impact:  NPAR-SD mode only.

   11.  Problem: (CQ52000 & CQ51697 Cont.) XAUI short detection mechanism only
                 applies to 10G.

        Change:  Remove 1G XAUI short detection.

        Impact:  8727 and 8706 PHYs.

    Enhancements
    ------------
    1.  Request: Enable CL37 1G parallel detect

        Change:  As requested.

        Impact:  578xx KR.

    2.  Request: (CQ53138) Disable fairness algorithm, when ETS is enabled.

        Change:  As requested.

    3.  Request: Use FW 7.0.14.

        Change:  As requested.

    4.  Request: Configure netdev unicast addresses list.

        Change:  As requested.

    5.  Request: Add a support for a parity errors recovery for 57712 and newer.

        Change:  As requested.

    6.  Request: Add MOD_ABS support for 578xx SFP+ modules

        Change:  As requested.

    7.  Request: Invert OPTRXLOS signal on SFP/XFP interface for 578xx

        Change:  As requested.

Version 1.70.05 (Mar 17, 2011)
==============================
***** This version does not support CNIC *****

    1.  Problem: (CQ53457) in MF mode actual TX max bandwidth differs from
                 configured for the device.

        Cause:   non-pmf function has overwritten configuration according to
                 10G link speed in UP flow.

        Change:  Fix device load flow for non-pmf functions.

        Impact:  MF mode with link speed other than 10G.

    2.  Problem: (CQ5772) (NPAR) Some configuration of Bandwidth Weight and
                 Maximum Bandwidth is not functional.

        Cause:   MAX algorithm timer was set to smaller value then MIN
                 algorithm. In some cases this may cause under-run on the line.

        Change:  Increase MAX algorithm timeout from 100usec to 400usec.

        Impact:  Introduced in 1.64.09.

    3.  Problem: (CQ52834) (iSCSI) connection/login issues in DCBX environment.

        Cause:   Erroneous context override by firmware.

        Change:  (in FW 7.0.12) Fixed relevant firmware flow.

        Impact:  DCBX environment only.

    4.  Problem: (CQ53526) (NPAR) Driver asserts while running iSCSI/L2 traffic.

        Cause:   Forward channel configured for TX switching.

        Change:  Disable TX switching for FWD channel.

        Impact:  NPAR mode.

    5.  Problem: (CQ53414) bnx2x reports link down when loaded.

        Cause:   The code was set to report the link state on load time.

        Change:  Assume the link is down when loading and only report link up
                 after loading.

    6.  Problem: (CQ53427) ethtool reports incorrect info for 10GE Passive
                 Copper Cable connections

        Cause:   Cable type was not taken into consideration

        Change:  Determine port type using cable type information acquired from
                 external SFP+ module if exists

        Impact:  SFP+ type

    7.  Problem: No fan failure notification when the fan failed and nvram
                 option 83 is set to enabled.

        Cause:   The fan failure worked only for specific external PHYs and not
                 according to option 83.

        Change:  Enable fan failure regardless of the PHY type if option 83 is
                 set to enable.

        Impact:  No fan failure notification unless the PHY is SFX7101, BCM8073,
                 BCM8481, BCM84823 or BCM84833 - other PHYs or designs without
                 external PHY will not report fan failures (but the FW will stop
                 the PHY).

    8.  Problem: Ethtool self test idle check tests erroneously for active
                 connections.

        Cause:   1. Input registers were confused.
                 2. Connection type bit offset has changed since 57712.

        Change:  Converted self test idle check to work with static record array
                 Corrected register confusion and location of connection type.

        Impact:  Saved 18% off linux driver compilation time.

    9.  Problem: Rx and Tx coalescing timeout parameters are reversed.

        Cause:   Parameters passed erroneously between functions.

        Change:  Swapped parameters in function call.

        Impact:  Bug exists in all bnx2x versions supporting interrupt
                 coalescing.

    10. Problem: (CQ52887) Interrupt test using ethtool's self test fails.

        Cause:   The ramrod, RAMROD_CMD_ID_ETH_EMPTY, is used for both the
                 interrupt test and NetQueue commands.  When self test is
                 ran, the NetQueue would always intercept this ramrod but
                 not complete the command.

        Change:  Do not explicitly intercept the EMPTY ramrod in the netq code.
                 Instead use the appropriate SP queue object to send the EMPTY
                 ramrod.

        Impact:  ESX only.

    11. Problem: ethtool shows the wrong port connected.

        Cause:   Dual media port presentation was swapped.

        Change:  Show the active port.

        Impact:  Dual media board.

    12. Problem: (CQ53303, CQ52600) Firmware doesn't support FLR on both ports
                 on the same path simultaneously on 578xx.

        Cause:   The Flr flow hold some variables only for the last port
                 treated.

        Change:  (in FW 7.0.13) Added an array to hold separate variables
                 for each port.

        Impact:  Only 578xx.

    13. Problem: FCoE doesn't identify function in NPAR-SD mode.

        Cause:   FW use MAC classification.

        Change:  (in FW 7.0.13) Classify function according to ID.

        Impact:  Introduced in 1.70.01.

    14. Problem: (iSCSI) Chip hangs upon arrival of iSCSI packet with
                 FIN flag set.

        Cause:   Tstorm signals Ustorm to release same BRB block twice.

        Change:  (in FW 7.0.13) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.01.

    Enhancements
    ------------
    1.  Request: Add initial support for 1G over fiber.

        Change:  As requested.

        Impact:  578xx fiber.

    2.  Request: (CQ50798) Add support for BCM8722.

        Change:  As requested.

    3.  Request: Allow set speed in NPAR mode when device still closed.

        Change:  As requested.

    4.  Request: Use FW 7.0.13.

        Change:  As requested.

    5.  Request: Use DCBNL app-list to store negotiated app tlvs.

        Change:  As requested.

    6.  Request: Add support for DCBNL peer information.

        Change:  As requested.

    7.  Request: Honor GPIO configuration values on Tx laser control,
                 on top of existing EPIOs.

        Change:  As requested.

        Impact:  578x0 SFP+ designs.

    8.  Request: Link support for Everest 57810 + 84833B0PHY.

        Change:  As requested.

        Impact:  Everest 57810 + 84833B0PHY combination can pass traffic for
                 testing.

    9.  Request: Add SGMII support for a specific OEM design.

        Change:  Clear signal detect and configure internal PHY before
                 BCM54618SE establishes link.

        Impact:  SGMII ports of 57800 only.

    10. Request: (CQ52000 & CQ51697) Short on XAUI lanes on the MAC side of 8727
                 and 8706 PHYs needs to generate link down event.

        Change:  Tx fault detection has been added. In addition link
                 qualification includes checking for Tx fault. The fault
                 detection bit is read twice to clear any stale value.

        Impact:  8727 and 8706 PHYs.

    11. Request: Support added for E3 + 84833B0 PHY firmware upgrade.

        Change:  As requested.

        Impact:  E3 + 84833B0 PHY combinations.

    12. Request: Disable Tx switching for 57712/578xx.

        Change:  As requested.

        Impact:  57712/578xx in NPAR mode, ESX.

Version 1.70.04 (Mar 01, 2011)
==============================
***** This version does not support CNIC *****
    Fixes
    -----
    1.  Problem: (CQ53258) Ethtool self test fails loopback_test (offline)
                 when run on the copper ports

        Cause:   Test was done over 10G rather than 1G, and test did not wait
                 long enough for the link to come up

        Change:  When speed capability doesn't include 10G, then perform the
                 self test using 1G. In addition, for PHY loopback test, wait
                 for the link to come and not assuming it is already up.

        Impact:  57800 copper ports

    2.  Problem: (CQ51134) NC-SI functionality dependant on Port initialization
                 Sequence

        Cause:   During common init, the driver resets both BMACs such that if
                 NCSI was enabled on the other port, it will stop working

        Change:  BMAC will be reset during port initialization only

        Impact:  5771x with NCSI enabled

Version 1.70.03 (Feb 24, 2011)
==============================
    Fixes
    -----
    1.  Problem: ethtool -t under heavy traffic may show idle_check error.

        Cause:   idle_check mistakenly reported error.

        Change:  Fix idle_check routine.

    2.  Problem: (CQ53143) Configuring a primary ETH MAC with ifconfig tool
                 didn't clear the old MAC configuration.

        Cause:   Missing code that clears the old MAC configuration.

        Change:  Added a missing code.

        Impact:  Introduced in 1.64.00.

    3.  Problem: (CQ51593) Statistics are inaccurate on 578xx devices.

        Cause:   Improper handling data from MSTAT HW block.

        Change:  Fix data handling.

        Impact:  578xx only.

    4.  Problem: "DMAE timeout" appears in syslog and chip halts.

        Cause:   Improper HW initialization sequence.

        Change:  (v2) Fixed relevant init sequence.

        Impact:  Introduced in 1.70.00.

    Enhancements
    ------------
    1.  Request: Translate 10G-Force KR and 1G-Force KR to autoneg with
                 advertisement of 10G and 1G in accordance.

        Change:  As requested.

        Impact:  578xx KR interface.

    2.  Request: Support NVRAM configuration of EPIO assignment on Tx
                 laser control.

        Change:  As requested.

        Impact:  578xx SFP+ interface, existing boards with this parameter
                 unconfigured should still work using hardcoded default EPIO.

Version 1.70.02 (Feb 21, 2011)
==============================
    Fixes
    -----
    1.  Problem: (CQ52452, CQ50960) VLAN stripping is not enabled for higher
                 functions when function 0 is not up.

        Cause:   Function ID field was always set to zero in UPDATE ramrod data.

        Change:  Properly configure the above field in the ramrod data.

        Impact:  Multi-function only. Introduced in 1.64.00.

    2.  Problem: NULL pointer dereference in a flow of closing iSCSI L2 queue.

        Cause:   SW bug that caused cnic handler routine not to be called for
                 CFC_DEL ramrod completion of iSCSI L2 queue.

        Change:  Fix the above SW bug.

        Impact:  iSCSI only. Introduced in 1.70.01.

    3.  Problem: (CQ52417), (CQ52845) Flow control doesn't work for 20G.

        Cause:   Flow control wasn't enabled for 20G.

        Change:  Set flow control on 20G according to settings.

        Impact:  57840 20G.

    4.  Problem: (CQ52023) Driver asserts with HW attention.

        Cause:   Traffic type to priority/COS table was reset after link down
                 by driver causing transmission on the wrong COS.

        Change:  (In FW 7.0.10) Removing the table in RAM from HSI section.

        Impact:  Introduced in 1.64.00 (FW 6.4.0).

    5.  Problem: System may crash when configuring some RX rings with TPA
                 enabled and some with TPA disabled.

        Cause:   Firmware tries to do TPA also for the non-TPA clients.

        Change:  (In FW 7.0.10) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.9 (FW  6.4.15).
                 BCM57710/57711/57711E only.

    6.  Problem: System crash under TCP traffic when driver is toggling TPA.

        Cause:   Firmware bug.

        Change:  (In FW 7.0.10) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.03 (FW 6.4.7).

    7.  Problem: Firmware aggregated packets with wrong checksum.

        Cause:   Firmware didn't check checksum as a requirement
                 for aggregation.

        Change:  (In FW 7.0.10) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.0 (FW 6.4.0).

    8.  Problem: 10G-KR doesn't link up on an OEM design.

        Cause:   CL72 should not be disabled in KR environment.

        Change:  Removed codes that disables CL72.

        Impact:  578xx 10G-KR.

    9.  Problem: Possible packet corruption when resetting the primary interface
                 when there are VLAN interfaces configured for this interface.

        Cause:   VLAN HW acceleration (stripping) is configured after Rx packets
                 are allowed at the end of netdev->open().

        Change:  Configure VLAN stripping in Client SETUP if there are VLAN
                 interface already configured for this interface.

        Impact:  Kernels below 2.6.37. Introduced in 1.62.01.

    10. Problem: System locks up after loading driver on 1Gb copper ports.

        Cause:   Incorrect interrupt acknowledge when link change occurs lead to
                 interrupt storm.

        Change:  Acknowledge the interrupt correctly on 1G ports.

        Impact:  578xx with 2x1G and 2x10 port.
                 Introduced in 1.70.01.

    11. Problem: When resetting/disabling link in 578xx boards output for
                 TX PAUSE signal to the MAC is not disabled

        Cause:   Relevant register in the NIG is not cleared when link is
                 disabled.

        Change:  Set value to 0 in that register if link is disabled.

        Impact:  578xx.

    12. Problem: BCM578xx may misconfigure the link on some OEM designs.

        Cause:   ELink determines 4-port mode strictly from the input pin,
                 not from override register that MFW always configures.

        Change:  Changed to determine the 4-port mode by reading the
                 override register.

        Impact:  578xx.

    13. Problem: Driver unload may halt under traffic fails.

        Cause:   Incorrect order of disabling XMAC.

        Change:  Close the XMAC RX path before issuing XMAC soft reset.

        Impact:  578xx.

    14. Problem: (CQ51417) ethtool -t may cause device to hang.

        Cause:   Race in interrupt handling during self test.

        Change:  Wait for SP completions in load flow to avoid the race.

        Impact:  Introduced in 1.64.01.

    15. Problem: Drivers assert while transmitting packets.

        Cause:   Firmware lose packets synchronization during transmission
                 (Xstorm Assert).

        Change:  (In FW 7.0.11) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.10. (FW 6.4.15). 57712/578xx only.

    16. Problem: (CQ52536) Extra bytes might be added in the middle of the
                 payload when a packet with padding after the TCP payload is
                 received, while TPA is enabled.

        Cause:   Firmware wrongly places padding bytes on RX SGEs.

        Change:  (In FW 7.0.11) Fixed relevant firmware flow.

        Impact:  Exists in all previous versions. The problem will be exposed
                 only in very rare case in which a device on the network pads
                 the Ethernet packet to longer than 72 bytes.

    17. Problem: "DMAE timeout" appears in syslog and chip halts.

        Cause:   Improper HW initialization sequence.

        Change:  Fixed relevant init sequence.

        Impact:  Introduced in 1.70.00.

    18. Problem: ethtool -t fails on 578xx B0.

        Cause:   test accessed unexistent registers.

        Change:  remove improper access.

        Impact:  578xx only.

    Enhancements
    ------------
    1.  Request: Remove support for 57710 emulation and FPGA.

        Change:  As requested.

    2.  Request: Add performance improvements to Ethernet TX flows in BCM57711.

        Change:  (In FW 7.0.10) Added optimizations in TX flow.

    3.  Request: Use FW 7.0.11.

        Change:  As requested.

    4.  Request: CQ52000 Short on XAUI lines between Everest 2 and 8727 PHY
                 needs to generate link down event.

        Change:  Tx fault detection has been added. In addition link
                 qualification includes checking for Tx fault.

    5.  Request: Collect FW TPA statistics: aggregations, bytes in
                 aggregations and a number of aggregated network frames.

        Change:  As requested.

Version 1.70.01 (Feb 07, 2011)
==============================
    Fixes
    -----
    1.  Problem: Potential wrong PHY initialization when loading the first
                 function on a port, after another function from this port was
                 unloaded.

        Cause:   In this case, the driver won't lock PHY access, which may cause
                 MDC/MDIO collision.

        Change:  Initialize the lock flag on the probe stage, instead of the
                 common and port init stage.

        Impact:  Multi-function mode.

    2.  Problem: CQ52212 8073PHY intermittently exhibits signs of disconnected
                 devices upon loading/unloading.

        Cause:   Microcontroller and Driver both controlling Xaui Low Power
                 Mode.

        Change:  Remove Driver control of Xaui Low Power Mode.

        Impact:  8073PHY based boards.

    3.  Problem: CQ51624 PHY TXONOFF_PWRDN_DIS bit set to "1" instead of default
                 0 to prevent reset & power down of PHY.

        Cause:   When GPIO controls TX Laser on 8727 and 8706, turning off laser
                 will put PHY in low power mode.

        Change:  Set TXONOFF_PWRDN_DIS accordingly.

        Impact:  8727PHY and 8706PHY based boards with TX laser controlled by
                 GPIO_0.

    4.  Problem: L2 TX LSO Packets with LLC-SNAP header and in-band VLAN header
                 are corrupted (BCM57710/BCM57711/BCM57711E).

        Cause:   Firmware sends an illegal command, resulting with a corrupted
                 header in such cases.

        Change:  (in FW 7.0.9) Fixed relevant firmware flow.

        Impact:  BCM57710, BCM57711 and BCM57711E only.

    5.  Problem: (iSCSI) Chip hangs when running iSCSI IOs bigger than 32KBs.

        Cause:   Firmware bug.

        Change:  (in FW 7.0.9) Fixed relevant firmware flow.

        Impact:  Introduced in 1.64.01 (FW 6.4.0).

    6.  Problem: 57710 constantly get a parity errors in PBF and TM blocks
                 during TCP/UDP traffic.

        Cause:   False parity errors in the above blocks. PBF and TM blocks
                 parity error attentions are not implemented in 57710.

        Change:  Don't enable parity attentions in the PBF and TM blocks on
                 57710.

        Impact:  57710 only. Introduced in 1.70.00.04.

    7.  Problem: The atempt to configure iSCSI MAC address would cause a "NULL
                 pointer dereference" error when CNIC module was loaded before
                 L2 interface is opened.

        Cause:   iSCSI L2 MAC object was initialized before bp->slowpath memory
                 was allocated (bp->slowpath was NULL at that stage). So, as
                 long as the object used references to bp->slowpath memory, it
                 caused the above error, when we tried to utilize it.

        Change:  Move iSCSI L2 MAC object initialization from bnx2x_cnic_probe()
                 to the DRV_CTL_START_L2_CMD callback.

        Impact:  iSCSI L2 only. Introduced in 1.64.00.

    8.  Problem: iSCSI L2 queue wasn't receiving any packet.

        Cause:   Rx mode of this queue didn't have ACCEPT_ANY_VLAN option.
                 Therefore FW filtered every packet by VLAN (assuming untagged
                 frames having VLAN_ID 0) and as long as there were no HW VLAN
                 acceleration configured, no frames were delivered to iSCSI L2
                 queue.

        Change:  Added ACCEPT_ANY_VLAN option to iSCSI L2 queue rx mode.

        Impact:  iSCSI UIO only. Introduced in firmware version 1.64.00.

    9.  Problem: (CQ52656) In NPAR mode "ethtool -t ethX" does not report error
                 on some partitions while no link.

        Cause:   Link is not tested for non PMF partitions.

        Change:  Allow link testing for non PMF partitions.

        Impact:  NPAR mode only.

    10. Problem: (CQ52402) In NPAR mode setting some speed via ethtool -s causes
                 device to hang.

        Cause:   FW configured with illegal configuration.

        Change:  Limit allowed speed to range from 1%-100% of actual line speed.

        Impact:  NPAR mode only.

    11. Problem: (CQ51417) Running ethtool -t causes the interface to hang.

        Cause:   Link test was checked according to 57711/2 scheme rather than
                 578xx.

        Change:  Test link according to the chip type.

        Impact:  BCM578xx.

    12. Problem: Possible problems with buffers mapping in iSCSI OOO flow on
                 kernels 2.6.34 and newer.

        Cause:   Improper mapping functions used (pci_xxx instead of dma_xxx).

        Change:  Use the proper mapping functions in the above flow.

        Impact:  iSCSI OOO only. Kernels 2.6.34 and newer.
                 Introduced in 1.60.15.

    Enhancements
    ------------
    1.  Request: Add autoneg parallel detect and pause support for 578xx KR.

        Change:  As requested.

        Impact:  578xx-KR.

    2.  Request: Use FW 7.0.9.

        Change:  As requested.

    3.  Request: Set default number of rx buffers to be divided equally
                 between rx queues to decrease amount of pre-allocated buffers
                 on systems with multiple CPUs.

        Change:  As requested.

    4.  Request: Configure a mini-jumbo (2500) MTU for FCoE L2 ring. Don't
                 change it when NIC's MTU changes.

        Change:  As requested.

    5.  Request: Call for a cnic handler routine for CFC_DEL ramrod completion
                 of iSCSI L2 queue.

        Change:  As requested.

Version 1.70.00.4 (Jan 19, 2011)
==============================
    Fixes
    -----
    1.  Problem: VIF_LIST_GET request in NPAR-SD mode responded always with zero
                 value.

        Cause:   drv mailbox param value was cleared after valid value was
                 written, and therefore zero was read by the MCP and sent
                 to the switch.

        Change:  Fix the logic.

        Impact:  NPAR-SD mode only.

    2.  Problem: Warpcore microcode wasn't loaded as image from nvram.

        Cause:   Non-clear loading sequence from the nvram forced loading
                 microcode statically as temporary work-around.

        Change:  Warpcore microcode will be loaded solely from the nvram by
                 the bootcode.

        Impact:  578xx only; Requires bootcode 7.0.0.0/6.4.3 and above.

    3.  Problem: Statistics is not displayed correctly on 578xx.

        Cause:   Improper initialization.

        Change:  Fix initialization flow.

        Impact:  578xx only.

    4.  Problem: NPAR-SD packets did not reach MCP after driver is loaded.

        Cause:   NIG registers initialization by the driver did not mark that
                 NPAR-SD tag header can be included in rx packets, and overwrote
                 value inserted by the MCP.

        Change:  Write correct value to that register in NPAR-SD mode.

        Impact:  NPAR-SD mode only.

    5.  Request: BCM8727 Link LED not functioning properly during BACS LED test.

        Change:  Not blinking correct link light.

        Impact:  BCM57712 + BCM8727 based boards.

    6.  Problem: (CQ51134) NC-SI functionality dependant on Port initialization
                 Sequence.

        Cause:   When the driver loads the first port, some PHYs require reset
                 and loading their microcode on both ports. In case NCSI was
                 enabled on the other port, the traffic was stopped since PHY
                 was reset.

        Change:  Load PHY microcode during common init, only if the PHY
                 microcode wasn't loaded.

        Impact:  Requires bootcode 6.2.9 to resolve this problem
                 PHY firmware upgrade will require reboot from now on.

    7.  Problem: (CQ51367) - BCM84823/84833 activity LED blinks at lower rate on
                 10G link.

        Cause:   The activity LED control registers are not configured right.

        Change:  Enabled activity LED stretch_en bit. Made activity LED blink on
                 source.

        Impact:  BCM57712 + BCM84823/84833 based boards.

    8.  Problem: ESX - CNIC 'change MTU' would fail or result in a PSOD.

        Cause:   Mismatched module IDs for request/free IRQ.

        Change:  Masquerade as CNIC when cnic ops are called form bnx2x.

        Impact:  ESX only.

    9.  Problem: (NPAR, FCoE) FCoE MAC wasn't read in NPAR mode.

        Cause:   Missing code.

        Change:  Add the missing code.

        Impact:  FCoE in NPAR mode only.

    10. Problem: (iSCSI) If iSCSI offload is requested in switch dependent MF
                 mode zero MAC would be configured for iSCSI L2 queue.

        Cause:   Bug in a driver.

        Change:  Prevent the configuration of an illegal MAC.

        Impact:  iSCSI in switch dependent mode only.

    11. Problem: (CQ51413) Driver crashed, when number of queues was set to a
                 value smaller than a default one due to SAFC configuration.

        Cause:   Broken connection between an SAFC initialization and a memory
                 allocation code.

        Change:  Fixed the above flaw.

        Impact:  SAFC only. Introduced in 1.62.06.

    12. Problem: "Statistics sequence counter out of order" storm assert.

        Cause:   Race between the LINK_UP event handler and the timer which both
                 are calling the bnx2x_storm_stats_post() thus sending
                 consequent statistics ramrods without waiting for a
                 completion of the first. Therefore FW will read the ramrod data
                 of the second ramrod while handling the first one, which will
                 cause the above assert.

        Change:  Prevent the above race.

    13. Problem: Possible sending of a spurious MSI-X message after MSI-X is
                 disabled.

        Cause:   MSI-X configuration wasn't properly cleared when MSI-X was
                 disabled.

        Change:  Properly clear MSI-X configuration.

        Impact:  Introduced in 1.60.28.

    14. Problem: Kernel panic when loading bnx2x with int_mode=1 and
                 disable_iscsi_ooo=1.

        Cause:   INT#x ISR was scheduling iSCSI OOO ring's NAPI regardless
                 NO_ISCSI_OOO flag.

        Change:  Consider NO_ISCSI_OOO flag before scheduling iSCSI OOO ring's
                 NAPI.

        Impact:  Introduced in 1.64.07.

    15. Problem: XSTORM assert due to wrong values in XSTORM RAM, occurring
                 after turning up first interface on the other path
                 (specifically traffic_type_to_priority_cos table was cleared
                 in XSTORM RAM).

        Cause:   driver used to reset LCPLL in bnx2x_init_hw_common process,
                 which is performed per each path. That configuration is
                 not needed as it is done by the MCP, and is wrong because
                 LCPLL is common and not per path.

        Change:  Remove that configuration from driver (it is done by MCP).

    16. Problem: In NPAR-SD mode - DCBX configuration was not updated in FW.

        Cause:   Relevant implementation was removed as a workaround because
                 of the side effects it caused. Those side effects were caused
                 by two bugs resolved in this version (problem #12 and problem
                 #15 above).

        Change:  Re-enable DCBX configuration implementation in NPAR-SD mode
                 (remove workaround that prevented it).

        Impact:  NPAR-SD mode only.

    17. Problem: 578xx B0 can't receive traffic in SD mode.

        Cause:   Inverted port configuration.

        Change:  Fix port configuration.

        Impact:  578xx B0 only.

    18. Problem: (FCoE) There was no licensing for FCoE.

        Cause:   Missing FCoE licensing handling code.

        Change:  Added the missing code.

        Impact:  FCoE only.

    19. Problem: (NIV) VIF_SET ack was sent twice from driver to MCP and
                 causing logic errors.

        Cause:   Wrong implementation that if bnx2x_func_state_change returns
                 non zero value it is an error, while in fact only negative
                 value is error.

        Change:  Assume error only if bnx2x_func_state_change returns negative
                 value.

        Impact:  NPAR-SD only.

    20. Problem: 57840: 4 port mode is not functional.

        Cause:   Incorrect initialization for this mode.

        Change:  Fix driver and FW (7.0.7) initialization.

        Impact:  57840 only.

    21. Problem: 57840: 4 port mode - Grc-timeout appears in syslog.

        Cause:   Statistics HW is not properly initialized.

        Change:  Init MSTAT1 correctly.

        Impact:  57840 4 port mode only.

    22. Problem: DMAE timeout after a few modprobe->ifup->rmmod iterations.

        Cause:   PGLUE_B was disabled before BMAC reset is completed.

        Change:  Fixed the relevant driver flow.

        Impact:  Introduced in 1.64.08.

    23. Problem: a. rx error packets detailed in ethtool were increasing all
                    the time while NPAR-SD session is up.
                 b. rx error packets detailed in NPAR-SD protocol
                    STATS_ARRAY_GET request were increasing all the time while
                    NPAR-SD session is up (in UIF type request only).

        Cause:   all NPAR-SD messages reached host, but are destinated to vif_id
                 of the MCP which is unknown to FW. Therefore, FW marks these
                 packets as per port mf_tag_discard packets.

                 Yet, these per port statistics were also counted in PMF's
                 per func statistics as rx error packets, and were also
                 sent as rx error bytes in per port stats request of NPAR-SD
                 protocol.

        Change:  a. Don't count per port mf_tag_discard/outer_vlan_discard
                    packets as per func rx error packets of the PMF.
                 b. Don't count per port mf_tag_discard/outer_vlan_discard
                    packets as per port rx error packets sent in stats
                    request of NPAR-SD protocol.

    24. Problem: The module date was not updated since 2010/08/01.

        Cause:   The date was moved to another source file which did not updated
                 it automatically on submission to the version control system.

        Change:  Update the file properties so the version control system will
                 update the date automatically.

        Impact:  Introduced in 1.60.32.

    25. Problem: 578xx unable to link after unload-load sequence.

        Cause:   Incomplete reset sequence.

        Change:  Fix reset sequence.

        Impact:  578xx.

    26. Problem: 578xx 4-port: load/unload test fails when compiled with CNIC.

        Cause:   Inappropriate client_id configuration for non eth clients.

        Change:  Fix initialization for 4-port mode.

        Impact:  578xx 4port.

    27. Problem: 57800 GPHY port (SGMII) LEDs don't work.

        Cause:   The LED setting routine is called only on 10G link.

        Change:  Call the LED setting routine even for non-10G link.

        Impact:  578xx.

    28. Problem: Unable to receive multicast frames on high functions in a
                 multi-function mode.

        Cause:   approx_mcast_engine_id was not properly initialized in setup
                 ramrod data.

        Change:  Fixed the relevant driver code.

        Impact:  Mutli-function mode only.

    29. Problem: 578xx 4-port: load/unload test fails when compiled with CNIC.

        Cause:   Inappropriate client_id configuration for non eth clients.

        Change:  Fix initialization for 4-port mode.

        Impact:  578xx 4port.

    30. Problem: ifup returned error when device has illegal iSCSI mac.

        Cause:   FCoE/iSCSI features were enabled even with illegal mac.

        Change:  Disable the features if mac is illegal.

        Impact:  57712 SF mode.

    Enhancements
    ------------
    1.  Request: CQ51710 - Disable CMS (common mode sense) feature in 84823
                 PHY, as this reduces power consumption and allows a better
                 10G link stability.

        Change:  Clear the CMS bit in PHY register in PHY configuration routine.

        Impact:  BCM84823B based boards.

    2.  Request: (CQ51889) Add Common Mode Sense (CMS) enable/disable functionality.

        Change:  Adding field 156 to nvm cfg, as well as support in eLink.

        Impact:  NVM config and Common Mode Sense capable PHYs.

    3.  Request: Increase RX ring size to 512 when using Jumbo Frames.

        Change:  As requested.

        Impact:  ESX only.

    4.  Request: Enable OOO by default and have the OOO ring match
                 in size with a RX ring.

        Change:  As requested.

        Impact:  ESX only.

    5.  Request: Add statistics collection for NPAR-SD, and copy results to
                 expected location in scratchpad if requested by the MCP
                 due to request from the switch.

        Change:  Added NPAR-SD fields to qstats strcuture and
                 collecting info for these fields each time stats are
                 collected. When requested by the switch, writing relevant
                 fields to exact location in scratchpad according to NPAR-SD
                 protocol.

        Impact:  NPAR-SD enabled boards only.

    6.  Request: Support for 578XX B0.

        Change:  As requested.

    7.  Request: Use FW 7.0.8.

        Change:  As requested.

    8.  Request: Add dcbnl implementation supporting the FW DCBX engine.

        Change:  As requested.

        Impact:  57712 only.

    9.  Request: Support SGMII with 54618SE GPHY for 57800.

        Change:  As requested.

        Impact:  Devices 3 and 4 of 57800 and small Warpcore changes only.

    10. Request: Get all CNIC related info from shmem in the bnx2x.

        Change:  As requested.

        Impact:  iSCSI and FCoE only.

    11. Request: Replace ethtool stats counter "rx_outer_vlan_discard" name
                 with "rx_mf_tag_discard".

        Change:  As requested.

    12. Request: Preserve temperature input setting for PCIE and Warpcore
                 Serdes equalization logic.

        Change:  As requested, Warpcore initialization is now preserving
                 that register value (no longer blindly overwrite it).

        Impact:  578xx

    13. Request: Support multi-function and DCBX in 4 ports mode (BCM578xx).

        Change:  (In FW 7.0.8) As requested.

Version 1.64.10 (Dec 7, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ50681) Device hangs on up/down test when PFC is enabled

        Cause:   If the device is going down while in PFC Xoff it will not set
                 it to Xon and therefore, on the next load it will remain in
                 constant Xoff

        Change:  Force PFC Xon when enabling the device

        Impact:  57712 and 578xx

    2.  Problem: Tx packets are sent with wrong TCP checksum in case of
                 TCP bi-directional scenarios

        Cause:   Firmware didn't update the L4/L3 checksum correctly in mixed
                 traffic of packets with/without checksum offload

        Change:  Fixed the relevant firmware flow

        Impact:  Introduced in 1.64.08

    3.  Problem: A possible dead-lock situation between sch_direct_xmit() and
                 bnx2x_run_loopback() (calling bnx2x_tx_int()) on
                 netif_tx_lock()

        Cause:   Both functions above take a netif_tx_lock() but
                 bnx2x_run_loopback() is called in a syscall context and takes a
                 lock without disabling BHes on a local CPU, which may cause a
                 dead lock as long as sch_direct_xmit() is called in a
                 soft_irq() context

        Change:  Explicitly disable local BHes in bnx2x_run_loopback() to
                 prevent a mentioned above dead-lock situation

        Impact:  Introduced in 1.60.25

    4.  Problem: (MF) ethtool -s speed has no effect in multi-function mode

        Cause:   Address calcutated using func_id instead of vn_id

        Change:  Fix address calculation

        Impact:  Introduced in 1.64.09, MF only

    5.  Problem: ethtool -t failed on sigle port boards and 57712 (nvram test)

        Cause:   Erroneous access to unexistent port info

        Change:  remove the access

    6.  Problem: All ingress packets were dropped by 57712 on Big Endian
                 machines

        Cause:   Rx mode wasn't properly configured for 57712 on Big Endian
                 machines

        Change:  Fix Rx mode configuration code for 57712

        Impact:  Introduced in 1.64.00, 57712 only

    7.  Problem: PCI bus error when trying to transmit LSO packets from 57712 on
                 Big Endian machines

        Cause:   Parsing BD parsing_data field was malformed when running
                 57712 on Big Endian machines

        Change:  Fix the code handling the parsing_data field of a parsing BD
                 for 57712

        Impact:  Introduced in 1.53.0a, 57712 only

    8.  Problem: Kernel panic when receiving in none-MSI-X interrupt mode

        Cause:   Indirection table was configured with none-existing queues when
                 MSI-X was not attainable and RSS queues set was cut to a single
                 queue. The reason for the above was an improper location of
                 SAFC initialization code and usage of the SAFC parameters for
                 the indirection table configuration despite the fact that an
                 SAFC MF mode was not requested/not available

        Change:  Don't use SAFC parameters unless SAFC MF mode is requested

        Impact:  Introduced in 1.64.00

    9.  Problem: Single connection performance is much lower than expected in
                 57712

        Cause:   The firmware uses a malfunctioning bit in the HW for single
                 connection optimization

        Change:  The firmware uses a different bit with similar functionality

        Impact:  Introduced in 1.64.00 when the optimization was
                 implemented. Doesn't cause any penalty compare to older
                 versions

    10. Problem: (FCoE) An FCP_CONF frame was not transmitted when required

        Cause:   A confirmation indication was not handle properly if
                 the task was from middle path type

        Change:  Fixed relevant firmware flow

        Impact:  FCoE only. Exist in all previous FCoE releases

    11. Problem: CQ48350, CQ49176, CQ50911 and CQ51200. BCM57712 not linking up
                 after wake on S4 and S5.

        Cause:   PHY firmware does not have enough time to download in 8073 and
                 8727 common init.

        Change:  Poll until firmware is downloaded, and then timeout at 300ms.

        Impact:  8727 and 8073 PHY

    12. Problem: Statistics were updated in wrong counters

        Cause:   The per-queue statistic address was miscalculated

        Change:  Fixed address calculation

        Impact:  Introduced in 1.64.00

    13. Problem: Firmware assert will occur when LSO packets is duplicated
                 in case Tx-switching is enabled and packet is sent without VLAN

        Cause:   Firmware looses synchronization with packet index which is
                 enforced by firmware for debugging purposes

        Change:  Fixed relevant firmware flow

        Impact:  Introduced in 1.64.00

    14. Problem: L2 packets which are duplicated in case Tx-switching is enabled
                 may be counted twice in the Tx statistics

        Cause:   Firmware counts statistics each time a transmission command is
                 sent to hardware, even if the duplicated packet was already
                 sent

        Change:  Fixed relevant firmware flow

        Impact:  Introduced in 1.64.00

    Enhancements
    ------------
    1.  Request: Use FW 6.4.16

        Change:  As requested

    2.  Request: Integrate VLAN enhancements from the net-next

        Change:  As requested

    3.  Request: Use slow path function object mechanism to synchronize
                 between function stop ramrod to NPAR-SD ramrods, instead of
                 sleep work around in NPAR-SD mode used today

        Change:  As requested. Logic was added to function object

    4.  Request: Remove unrequired clearance of specific VIF from NIV VIF lists
                 if that function is unloaded from host side (as anyway
                 VIF_LIST_SET commands will be sent from switch).

        Change:  Don't call FW NIV_VIF_LISTS ramrod for the sub command of
                 VIF_LIST_RULE_CLEAR_FUNC from the driver unload flow

    5.  Request: Use NIV_VIF_LISTS hsi new echo field to distinguish in ramrod
                 completion flow for which sub command the respones is relevant,
                 instead of using a bp dedicated field for that

        Change:  As requested (instead of using last_viflist_req_to_fw field).

    6.  Request: treat NPAR-SD driver_niv_support as a global shmem2 field, and
                 write its value only in LOAD_COMMON flows

        Change:  As requested

    7.  Request: Add a support for TPA over IPv6 for 57712 and above

        Change:  As requested

        Impact:  Introduced in 1.64.10. 57712 and above only

    8.  Request: Support for forward connection traffic in NPAR-SD mode

        Change:  TX packets are sent with destination field, on NPAR-SD tag
                 header, which is equal to the source VIF value

        Impact:  NPAR-SD mode is supported in BCM57712 only

    9.  Request: Enable Tx switching for 57712

        Change:  As requested

        Impact:  57712 in NPAR mode only

Version 1.64.09 (Nov 18, 2010)
==============================
    Fixes
    -----
    1.  Problem: CRC errors are seen with line-rate traffic on BCM578xx

        Cause:   Warpcore microcode was not loaded, and its clock wasn't
                 synchronized well

        Change:  Load Warpcore microcode and apply clock compensation
                 This change is a temporary work-around which will be embedded
                 in the bootcode later on

        Impact:  578xx Only

    2.  Problem: (CQ50748) MinBW not functioning as expected in certain
                 NPAR configuration

        Cause:   MinBW algorithm coefficients were not calculated properly and
                 cause the algorithm to not function well in extreme cases

        Change:  Re-calculate the algorithm coefficients to allow
                 granularity of 1:100

        Impact:  Affects NPAR mode in which MAX bandwidth can be configured
                 to over-subscription

    3.  Problem: Single Tx L2 connection enhancement feature is broken when FLR
                 is sent on function which is under traffic

        Cause:   Tx firmware didn't release internal resources, which may be
                 taken by connections that belong to FLRed functions

        Change:  (in FW 6.4.13) Fixed relevant firmware flow

        Impact:  Introduced in 1.64.01 (in FW 6.4.0)

    4.  Problem: Broadcast packets are received on a client which isn't
                 configured to receive them

        Cause:   The firmware always passed broadcast packets to the leading
                 client even when it wasn't configured to received them

        Change:  (in FW 6.4.13) Fixed relevant firmware flow

        Impact:  BCM57711 only, introduced in 1.64.05 (in FW 6.4.7)

    5.  Problem: TPA does not aggregate packet when RSS disable

        Cause:   Wrong initialization by firmware

        Change:  (in FW 6.4.13) Fixed firmware initialization

        Impact:  Introduced in 1.64.06 (in FW 6.4.9)

    6.  Problem: (iSCSI, CQ50672) Chip hangs when running iSCSI traffic on one
                 function and toggling load/unload on the other function

        Cause:   Firmware initialized the CAM incorrectly, causing iSCSI out of
                 order client to receive an unexpected packet

        Change:  (in FW 6.4.13) Fixed relevant firmware flow

        Impact:  BCM57710 only, introduced in 1.64.01 (in FW 6.0.0)

    7.  Problem: Compilation failed on RH5.6

        Cause:   Redefinition of backported function

        Change:  Remove the definition from bnx2x code for RH5.6

    Enhancements
    ------------
    1.  Request: Add NPAR-SD support

        Change:  As requested

    2.  Request: (CQ49959) Request to log event log in case the PHY does
                 not come out of reset, and MDC/MDIO timeout

        Change:  As requested

    3.  Request: (CQ51065) NPAR mode: change Max BW from units of "intervals of
                 [100Mbps]" to units of "% of physical link speed"

        Change:  As requested

        Impact:  NPAR mode only

    4.  Request: (FCoE) Synchronize all storms with ABTS operation before the
                 transmission of ABTS packet, in order to avoid potential races

        Change:  As requested


Version 1.64.08 (Nov 08, 2010)
==============================
    Fixes
    -----
    1.  Problem: 4-port MF/SF combined mode on 578xx is not functional

        Cause:   Improper HW initialization

        Change:  Common for both ports HW properly configured

        Impact:  578xx only

    2.  Problem: Compilation failed on 2.6.36 kernels

        Cause:   Improper conditions in bnx2x_compat.h layer

        Change:  Fix condition for functions' definitions

    3.  Problem: (CQ50903) Driver prints some debug info when dcbx enabled

        Cause:   Debug info printed with error dbg level

        Change:  Remove the prints

    4.  Problem: Weighted fair queuing congestion management doesn't work on
                 BCM57712

        Cause:   Firmware might send packet to wrong port in case weighted fair
                 queuing is enabled

        Change:  (in FW 6.4.10) Fixed firmware flow

        Impact:  Introduced in 1.64.00

    5.  Problem: Firmware doesn't work correctly for 2 TCP connections with the
                 same toeplitz hash result, when TPA is enabled

        Cause:   The firmware wrongly invalidated the aggregation for the first
                 connection, when a packet from the second connection arrived

        Change:  (in FW 6.4.10) Fixed firmware flow

        Impact:  Introduced in 1.64.03

    6.  Problem: (CQ50722) When more than 16 TPA aggregations are open,
                 aggregations might not close properly

        Cause:   The firmware miscalculated the TPA timer address

        Change:  (in FW 6.4.10) Fixed firmware flow

        Impact:  Introduced in 1.64.03


    7.  Problem: (iSCSI, CQ50380) Event viewer shows NOP events

        Cause:   TCP window is closed and initiator cannot properly process
                 incoming in-order packets

        Change:  (in FW 6.4.10) Fixed firmware flow

        Impact:  Introduced in 1.64.00

    8.  Problem: False bug-check when trying to set speed in NPAR mode when link
                 is down

        Cause:   The FW should be configured only after the physical link is up

        Change:  Do not configure the FW while link is down with the new speed
                 settings

        Impact:  57712 NPAR mode only

    9.  Problem: (iSCSI) in NPAR mode devices have incorrect iSCSI mac address

        Cause:   Mac address is taken from port configuration

        Change:  Take the addreses from NPAR configuration

        Impact:  57712 NPAR mode only

    Enhancements
    ------------
    1.  Request: Use FW 6.4.11.1

        Change:  As requested


Version 1.64.07 (Nov 03, 2010)
==============================
    Fixes
    -----
    1.  Problem: No RSS in a multi-function mode

        Cause:   RSS engine ID was not initialized in Client SETUP ramrod data

        Change:  Set RSS engine ID in the SETUP ramrod data

        Impact:  Introduced in 1.64.00. 57711 and 57712 only

    2.  Problem: (CQ50624) Race between the netdev->open() and the last part of
                 pci_dev->probe() that configures the interrupt mode and adds
                 NAPIs causes kernel panic

        Cause:   Improper operations order: netdev_register() should be called
                 after driver is completely configured

        Change:  Move all driver initializations before the netdev_register()
                 call

        Impact:  Introduced in 1.60.28

    Enhancements
    ------------
    1.  Request: Unify the slow path flows for all types Client

        Change:  Handle iSCSI OOO slow path in a NAPI (interrupt driven instead
                 of polling as it used to)

    2.  Request: Add support for 57800 HW

        Change:  As requested

    3.  Request: Add hw statistics support for 578xx

        Change:  As requested

    4.  Request: (CQ50053) Add "Dual Media Support" section to README/Man pages

        Change:  As requested

Version 1.64.06 (Oct 27, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ49515, CQ50024) Occasionally losing link on force 10/100
                 connections on BCM84823 based boads

        Cause:   Not waiting for GPHY to complete reset

        Change:  Add 50ms delay after 84823 PHY comes out of reset

        Impact:  BCM84823 based boards

    2.  Problem: (CQ50559) Build fails with RHEL6 kernel

        Cause:   Redefinition of backported function

        Change:  Remove the definition for RH kernels

        Impact:  Introduced in 1.64.05

    3.  Problem: (iSCSI OOO) When in MF mode, Hardware may get PCI error in case
                 of iSCSI out-of-order flow

        Cause:   Firmware set the wrong PCI function ID

        Change:  Fixed firmware flow in FW 6.4.9

        Impact:  Introduced in 1.64.03, 57712 iSCSI OOO only

    4.  Problem: (CQ50483) Chip got stuck during stress test

        Cause:   Context was not initialized correctly by the Firmware

        Change:  Fix the initialization in FW 6.4.9

        Impact:  Introduced in 1.64.03, BCM57710/11/11E only

    5.  Problem: (FCoE) Trying to transmit from invalid host memory address

        Cause:   Receiving incorrect FCP_XFR_RDY second packet

        Change:  Rejecting the second FCP_XFR_RDY packet for the specific task

        Impact:  Introduced in 1.64.00. FCoE only

    6.  Problem: (FCoE) False timer REC_TOV expiration

        Cause:   Inappropriate advance of timer counter

        Change:  Fixed firmware flow in FW 6.4.9

        Impact:  Exists in all previous FCoE releases

    7.  Problem: (FCoE) Transmitting FCP_DATA frames with wrong OX_ID

        Cause:   Changing OX_ID once REC_TOV expiration is detected

        Change:  Fixed firmware flow in FW 6.4.9

        Impact:  Exists in all previous FCoE releases

    Enhancements
    ------------
    1.  Request: Use FW 6.4.9

        Change:  As requested


Version 1.64.05 (Oct 20, 2010)
==============================
    Fixes
    -----
    1.  Problem: ESX Non LRO net-queues were still aggregating incoming TCP
                 frames

        Cause:   net-queues not reserved for LRO were not internally marked
                 as such (tpa not disabled)

        Change:  correctly disable tpa for such queues

        Impact:  ESX only

    2.  Problem: RX broken in MF SD mode

        Cause:   Improper hw configuration

        Change:  Write correct values to HW registers

        Impact:  Intoduced in 1.64.04

    3.  Problem: Link up event is not reported to the OS

        Cause:   Inconsistent link report state handling

        Change:  Change the link report state handling

    4.  Problem: (ESX, PR379952/PR405074) FW asserts on invalid value in a VLAN
                 field in the start BD (xmit flow)

        Cause:   The first sg element might not contain all the headers

        Change:  Do a simple check and if this holds pull tail on the skb

        Impact:  ESX only. This may happen only when the VMs are using 3.0.x
                 tools

    5.  Problem: Broadcast packets can be received on the wrong L2 client

        Cause:   Classification flow was using "unmatched unicast" flag also
                 for broadcast packets

        Change:  Fixed firmware flow

        Impact:  57710 only. Introduced in 1.64.03

    6.  Problem: When more than 16 TPA aggregations are open, aggregations are
                 not closed properly

        Cause:   Firmware miscalculated the address for the TPA timers

        Change:  Fixed firmware flow

        Impact:  Introduced in 1.64.03

    7.  Problem: (FCoE) RRQ frame was not sent after abort operation

        Cause:   Corrupted ABTS ACC frame reported to the driver

        Change:  Firmware updates the correct R_CTL field in task context

        Impact:  Introduced in 1.64.00

    8.  Problem: (CQ49968) DMAE timeout on specific system during init

        Cause:   The DMAE can take up to 200ms to complete on some systems

        Change:  Update the DMAE timeout from 2ms to 200ms

    9.  Problem: Incorrect HW statistic on 578xx

        Cause:   Read stats from inexistent address

        Change:  Adopt statistics collection to avoid reading from the address

        Impact:  578xx only

    Enhancements
    ------------
    1.  Request: (CQ49997) Implement Bandwidth allocation for Nic partitioning
                 mode

        Change:  As requested

        Impact:  57712 only

    2.  Request: Use FW 6.4.8

        Change:  As requested

    3.  Request: Properly calculate the LRO MSS value (needed for TCP delayed
                 ACK handling)

        Change:  As requested

    4.  Request: Add support for BCM57810/57840 adapters

        Change:  As requested


Version 1.64.04 (Oct 14, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ49886) MC Assert on 57710 with more than 4 queues

        Cause:   ESX does not align physical memory to requested size. Thus ILT
                 pages do not adhere to 57710 alignment requirements

        Change:  Allocate extra memory and manually align CDU ILT pages. Define
                 ILT pages for all other clients to be 4K

        Impact:  ESX only

    2.  Problem: (CQ49827, CQ49844) pNic Link/Unlink test fails when the pNic
                 eventually fails to load

        Cause:   During load skb allocation for L2 queues is stopped on the
                 first failure. If this happens on the default queue before a
                 minimal number of skbs were successfully allocated nic load
                 fails

        Change:  Do not break upon first skb allocation failure. Fail only if
                 after queues size allocation attempts not enough skbs were
                 successfully allocated

        Impact:  ESX only

    3.  Problem: (CQ50208) ESX4.0/4.1 pNic statstics are not updated

        Cause:   Using a local statistics structure for ESX instead of the
                 net_device statistics structure

        Change:  Use the correct statistics structure for ESX

        Impact:  ESX only

    4.  Problem: (CQ49826) Wrong skb queue mapping passed to hard_xmit

        Cause:   FCoE L2 queue is not disabled and is used by the stack

        Change:  Disable FCoE L2 queue for E1x in general and all devices in
                 ESX

        Impact:  ESX only

    5.  Problem: ethtool -S shows all possible queues including disabled queues
                 such as FCoE or queues with no stats such as iSCSI OOO queues

        Cause:   ethtool statistics call-backs iterate over all queues.

        Change:  Iterate only over L2 queues and FCoE queue if not disabled.

    6.  Problem: (ESX) packets received on a net queue may arrive after its
                  filters are removed

        Cause:   filter removal completion is not syncronized with the
                 net-queue fast-path completions

        Change:  Send a flush command for the net-queue after deleting the
                 filter and before returning from the filter removal call-back

        Impact:  ESX only

    7.  Problem: (CQ50308) Compilation failure on RHEL6RC1

        Cause:   Definition of list_rotate_left in bnx2x_compat.h for all
                 kernels from 2.6.34

        Change:  Remove the definitions for non IOV kernels


Version 1.64.03 (Oct 11, 2010)
==============================
    Fixes
    -----
    1.  Problem: (ESX) MSI-X was disabled forever after NIC down/up sequence

        Cause:   MSI-X was explicitly disabled in the bnx2x_close() in ESX
                 driver

        Change:  Cancel the explicit MSI-X disabling

        Impact:  ESX only

    2.  Problem: (CQ50033) Link remains down on the PMF despite the DCC
                 "link up" indication

        Cause:   DCC event handler wasn't handling the event for the PMF

        Change:  Fix the DCC event handler code

        Impact:  57711 and 57712 only

    3.  Problem: (iSCSI) Occasional HW attentions in iSCSI OOO offload/upload
                 scenarios

        Cause:   When multiple consecutive packets are sent on L2 forward
                 connection, firmware might incorrectly manage internal
                 transmission credit

        Change:  Fixed in FW 6.4.6

        Impact:  Introduced in 1.64.00 (FW 6.2.0)

    4.  Problem: LSO packets with large contiguous buffers may not be properly
                 sent to the network

        Cause:   Firmware didn't calculate the number of segments to be sent to
                 the network for LSO packet with large contiguous buffers
                 correctly

        Change:  Fixed in FW 6.4.6

        Impact:  Introduced in 1.64.02 (FW 6.4.5)

    5.  Problem: (FCoE) FCP_XFR_RDY verification failure leads to the task abort

        Cause:   Error in a verification procedure in the second FCP_XFR_RDY
                 packet on a single task

        Change:  Fixed in FW 6.4.6

        Impact:  Introduced in 1.64.00 (FW 6.4.0)

    6.  Problem: Malicious VF detection flow may cause memory corruption on
                 TX processor

        Cause:   Bug in relevant firmware flow

        Change:  (Fixed in FW 6.4.7) Fixed firmware flow

        Impact:  Introduced in 1.64.00 (FW 6.4.0)

    7.  Problem: (FCoE)(CQ50211) InvalidCrcCount value after collecting
                 statistics

        Cause:   Wrong statistics collection in firmware

        Change:  (Fixed in FW 6.4.7) Fixed firmware flow

        Impact:  Introduced in 1.64.00 (FW 6.4.0)

    8.  Problem: (FCoE)(CQ50267) ABTS sent with incorrect RX_ID value

        Cause:   Firmware reported incorrect task information when detecting
                 the error

        Change:  (Fixed in FW 6.4.7) Fixed firmware flow

        Impact:  Introduced in 1.64.00 (FW 6.4.0)

    Enhancements
    ------------
    1.  Request: Use FW 6.4.7

        Change:  As requested


Version 1.64.02 (Sep 27, 2010)
==============================
    Fixes
    -----
    1.  Problem: (FCoE) panic dump while opening FCoE connection

        Cause:   FCoE ramrods were counted on incorrect SPE pool

        Change:  Use L5 pool

        Impact:  Introduced in 1.64.00

    2.  Problem: Wrong statistic counter might be updated

        Cause:   (Fixed in FW 6.4.5) In client init the queue statistic address
                 might be calculated wrongly

        Change:  Fixed the calculation in client init

        Impact:  Introduced in 1.64.00 (FW 6.2.1)

    3.  Problem: Congestion management doesn't work properly in case of a single
                 L2 connection scenario on 57712

        Cause:   In case of a single connection L2 firmware didn't allow pausing
                 transmission which is needed for the congestion management
                 functionality

        Change:  (Fixed in FW 6.4.5) Firmware now considers congestion
                 management decision to pause transmission

        Impact:  Introduced in 1.64.00 (FW 6.2.1)

    4.  Problem: The firmware returned the wrong error state for Ethernet
                 ramrods

        Cause:   The code in Xstorm didn't save error state correctly

        Change:  (Fixed in FW 6.4.5) Fixed the relevant flow

        Impact:  Introduced in 1.64.00 (FW 6.2.0)

    5.  Problem: PF FLR could hang the chip

        Cause:   The firmware didn't return activity counter to CFC correctly

        Change:  (Fixed in FW 6.4.5) Fixed the relevant flow

        Impact:  Introduced in 1.64.00 (FW 6.2.0)

    6.  Problem: (CQ49299, PR57004) HW stuck after 8 hours of heavy LSO traffic

        Cause:   When driver send an LSO packet with total length longer than
                 64K, the firmware calculate the total SGL length in a uint16
                 variable
                 which overlaps and causing an erroneous PBF command

        Change:  (Fixed in FW 6.4.5) Change the counter to be uint32

    7.  Problem: L2 traffic might be stopped in case of dcb updates COS value
                 for some traffic types

        Cause:   The firmware didn't return activity counter to CFC correctly

        Change:  (Fixed in FW 6.4.5) Fixed the relevant flow

        Impact:  Exists in all previous releases that support dcb updates

    Enhancements
    ------------
    1.  Request: Port a new way L2 FW handles FCoE and FIP packets

        Change:  Starting from FW 6.4.4 L2 FW forwards FCoE and FIP frames to
                 FCoE L2 client unconditionally. This means that there is no
                 need to configure any MAC for an FCoE L2 client any more. So,
                 all such code has been swept out

        Impact:  Introduced in 1.64.00 (FW 6.4.4)

    2.  Request: Use FW 6.4.5

        Change:  As requested

Version 1.64.01 (Sep 20, 2010)
==============================
    Fixes
    -----
    1.  Problem: BMAC relays control packet to host and BRB is filled with
                 unnecessary packets

        Cause:   BMAC is configured to relay control packets to host

        Change:  Configure BMAC not to relay control packets to host

    2.  Problem: Failed to load high functions in MF mode

        Cause:   bnx2x was trying to configure the HC for the default SB, which
                 doesn't have it (during FCoE ETH ring configuration)

        Change:  Exclude HC configuration from FCoE ETH ring initialization

    3.  Problem: After "Fix 2" packets were silently dropped on the receive side
                 in a SD MF mode

        Cause:   Tx OUTER VLAN was not properly configured

        Change:  Properly configure Tx OUTER VLAN in the function start ramrod

    4.  Problem: (CQ49795) Link loss on port after multiple iterations of
                 load-unload

        Cause:   When link change occur, and at the same time the driver is
                 unloaded, the NIG attention is left latched since it is used to
                 be cleared only during link change event. This leads that
                 following link change events are actually masked.

        Change:  Clear NIG latched attention during driver unload

        Impact:  BCM84823 based boards

    5.  Problem: False link up indication on boards with BCM84823 PHYs

        Cause:   Not waiting until PHY has come out of reset

        Change:  Poll on reset bit. Timeout after 1 second

        Impact:  BCM84823 based boards

    6.  Problem: iSCSI OOO didn't work over VLAN

        Cause:   Inconsistent Client configuration and fast path functions
                 implementation for OOO Client in regard to HW VLAN
                 acceleration

        Change:  Don't assume HW VLAN acceleration in fast path iSCSI OOO
                 functions

        Impact:  iSCSI OOO only

    Enhancements
    ------------
    1.  Request: Add capability to build against SuSE source RPMs

        Change:  As requested

    2.  Request: Set drop threshold for receiver lossy COS to 90,
                 when PFC is enabled

        Change:  As requested


Version 1.64.00 (Aug 31, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ47855) Link test fails under Linux using ethtool

        Cause:   In case a MAC test followed by link test, the NIG attention
                 might be cleared while ISR was already triggered due to NIG
                 attention. This led to declaring the MAC test as failed since
                 there's actually no link in this case.

        Change:  In case NIG interrupt mask is cleared during interrupt
                 handling, do not execute link status update routine.

    2.  Problem: (CQ48747) Dual media: fiber port does not link at 1gig speed

        Cause:   The link speed in the pass-through phy (84823) was set to 10G

        Change:  Set the pass-through speed to 1G as well when fiber is set to
                 1G

    3.  Problem: (CQ49143) Dual Media: First attempt to change from default TP
                 to FIBRE using ethtool does not work.

        Cause:   When changing port type from TP to FIBRE the command failed
                 since FIBRE doesn't support autoneg, yet the port type was
                 changed.

        Change:  When ethtool command fail, do not change port type.

        Impact:  Dual-Media boards

    4.  Problem: Compilation error on kernels 2.6.34 and later

        Cause:   netdev_name() defined by both kernel and driver

        Change:  Fix compat.h for these kernels

    5.  Problem: 84823 PHY not showing correct Link LED's.

        Cause:   Incorrectly setting LED Masks

        Change:  Eliminated offending branch in code

        Impact:  Introduced in 1.60.24

    6.  Problem: (CQ49137) ethtool -t test fails in dual-media boards

        Cause:   Link wasn't tested correctly depending on the media
                 configuration

        Change:  Test link according to media configuration

        Impact:  Dual-Media boards

    7.  Problem: (CQ49004) Dual Media: Switch show link on both media
                 simultaneously.

        Cause:   Not disabling TX on non-active port.

        Change:  In case link is up in non SFP+, disable the SFP+ TX laser.

        Impact:  Dual-Media boards

    8.  Problem: On BCM8727 based boards, when link speed is changed from 1G
                 to 10G, PCS may be halted

        Cause:   Restoring 10G link setting was done according to old PHY
                 microcode

        Change:  Restore default 10G link setting according to new microcode

        Impact:  BCM8727 based boards

    9.  Problem: (ESX) Performance regression found by VmWare

        Cause:   Tx ring was configured to have a smaller length than it was in
                 IOVP driver

        Change:  Configure Tx ring to have the same length as in IOVP driver

        Impact:  ESX only

    10. Problem: (CQ48584) Intermitted link issue and unexpected behavior using
                 boards with external PHYs

        Cause:   PHY lock indication was missing on second port, so there was no
                 locking between the ports. When two ports tried to read/write
                 from the PHY, they the instruction may collide.

        Change:  Set PHY lock indication of both ports

        Impact:  57710/57711 on boards with external PHY.
                 Introduced: T5.0

    11. Problem: (CQ49219) Dual media: Copper link does not come up once
                 10gbaseT priority is set in driver property

        Cause:   Link indication from both Copper and Fiber

        Change:  Ignore link indication from Fiber in case Copper is selected

        Impact:  Dual-media boards
                 Introduced: 1.60.32

    12. Problem: (CQ49296) - Dual media:  Copper link would not come up upon
                 removal of fiber media when serdes priority and 1GB full is set

        Cause:   When Fiber link is set to 1G, its XAUI will not automaticity
                 power down like it does in 10G. This cause the BCM84823 to
                 detect false link from the BCM8727 even if Fiber is not
                 connected. This ends up in not linking the copper side.

        Change:  When link is configured to 1G, power down the BCM8727 XAUI side,
                 and when link comes up, power it up.

        Impact:  Dual Media boards.

    13. Problem: (CQ49137) -Dual Media: Ethtool fail - Link_test (online) on TP
                 every few iterations.

        Cause:   Link detection may take very long in case of copper, while the
                 wait up time was limit to 10sec only.

        Change:  Increase link wait up time in link test to 14sec

        Impact:  Dual Media boards.

    14. Problem: Dual Media PHY 84823 activity and front panel LED's not
                 functioning correctly. Also Diagnostic Mode LED's not firing
                 correctly

        Cause:   LED masks not set correctly

        Change:  Changed LED masks, and added LED mode for Diagnostics

        Impact:  Dual Media boards

    15. Problem: CQ49197 - No link at 1Gb/2.5Gb on BCM8073 based boards

        Cause:   CL37 BAM was enabled on all boards while it should be configurable.

        Change:  Disable CL37 BAM by default.

        Impact:  BCM8073 based boards
                 Introduced in 1.60.21

    16. Problem: HW Statistics collection through the DMAE broken on 57712

        Cause:   For 57712 the DMAE command needs to include the destination
                 function.

        Change:  Adjust the DMAE command to work on 57712

        Impact:  Introduced in 1.60.01

    17. Problem: Possible inconsistency in parity recovery flow in case of bogus
                 usage of bnx2x_trylock_hw_lock() function

        Cause:   Inconsistent error core returned (-EINVAL while function
                 returns `bool')

        Change:  Return `false' in case of an error

        Impact:  1.60.01

    18. Problem: The firmware sends an assert when starting the first vf in a
                 passthru mode

        Cause:   The firmware trys to send an event to the pf, but since the vf
                 was never initialized, the firmware couldn't find which pf to
                 use

        Change:  The firmware will only send an event in case the function was
                 initialized before. Fixed in FW 6.4.4

        Impact:  Introduced in FW 6.2.1.1. ESX NPA only

    19. Problem: (CQ48770) When working with rate-limiting in 57711/2 with jumbo
                 frames, the rate is half of what configured

        Cause:   Firmware miscalculated the amount of bytes transmitted

        Change:  Fixed the calculation. Fixed in FW 6.4.4

        Impact:  Introduced in firmware version 6.0.20

    20. Problem: PCI entity wasn't calculated before write event ring element in
                 the initial cleanup and MaliciousVf handlers

        Cause:   Used wrong PCI entity in the handlers

        Change:  Calculate the PCI entity before using it. Fixed in FW 6.4.4

        Impact:  Introduced in FW 6.2.0

    21. Problem: In FLR final cleanup flow - in some cases the IGU cleanup
                 command was wrong

        Cause:   Used wrong parameters for calculation of the function id from
                 Pf or Vf.

        Change:  Fixed the calculation. Fixed in FW 6.4.4

        Impact:  Introduced in FW 6.2.0

    22. Problem: (ESX PR582737): TX switching along with LSO packet results with
                 HW attention

                Cause:   LSO packet might be sent on a port which doesn't have
                 sufficient QM credits

                Change:  LSO packets are sent only if credits were charged for the
                 chosen port (physical vs. loopback). Fixed in FW 6.4.4

                Impact:  Introduced in first tx switching version 6.1.4

    23. Problem: Possible race between dcb update and ethernet tx single
                 connection optimizations

        Cause:   When Single Eth connection is present it may not allow updating
                 the association of tx queues to COSes

        Change:  L2 firmware now considers DCB updates and may stop a single
                 connection run to allow DCB configuration update
                 Fixed in FW 6.4.4

        Impact:  Introduced in version 6.0.15

    24. Problem: The firmware didn't support TX switching for MAC-VLAN-PAIR

        Cause:   The firmware didn't initialize the VFC correctly

        Change:  Fixed the VFC initialization. Fixed in FW 6.4.4

        Impact:  Introduced in FW 6.2.0


    25. Problem: The error field in ramrod CQE was always sent as 0

        Cause:   Wrong initialization of the CQE

        Change:  Sending the right value. Fixed in FW 6.4.4

        Impact:  Introduced in FW 6.2.0.

    26. Problem: The code entered the infinite loop in the Cstorm Common VfZone
                 handler

        Cause:   Wrong calculation of a VF ID

        Change:  Fixed the VF ID calculation. Fixed in FW 6.4.4

        Impact:  Introduced in FW 6.2.0.

    27. Problem: (CQ49649) Dual Media: No 1Gb fiber link after changing driver
                 speed property, when cable is connected.

        Cause:   Link interrupt is generated from NIG attention common for both
                 phys on dual media board. The NIG status was set for
                 both PHYs while it should have been done for the copper
                 attention only.


        Change:  Set NIG attention according to the active PHY

        Impact:  Dual media boards

    Enhancements
    ------------
    1.  Request: Use FW 6.2.1.1

        Change:  As requested

    2.  Request: Integrate T6.1 changes

        Change:  As requested

    3.  Request: Support HW Rx hash generation for a single queue configuration

        Change:  As requested

    4.  Request: Provide a way to know if there are pending ramrods' completions
                 in multicast and rx_mode configuration flows

        Change:  Return a positive value from bnx2x_config_rx_mode() and
                 bnx2x_config_mcast() if there are pending ramrods' completion

    5.  Request: Add "delete all" and "reconfigure" verbs to the VLAN_MAC object

        Change:  As requested

    6.  Request: Add "reconfigure" verb to the MCAST object

        Change:  As requested

Version 1.60.29 (Jul 21, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ48770) When working with rate-limiting in 57711/2 with jumbo
                 frames, the rate is half of what configured

        Cause:   Firmware miscalculated the amount of bytes transmitted

        Change:  (In FW 6.0.30) Fixed the calculation

        Impact:  Introduced in 1.60.16 (FW 6.0.20)

    2.  Problem: FW XSTORM assert during server reboot test

        Cause:   There were two statistics ramrods sent with the same statistics
                 counter. There was a race condition in the bnx2x driver that
                 allowed this situation

        Change:  Protect statistics ramrod sending code and statistics counter
                 update with the spin lock

    Enhancements
    ------------
    1.  Request: Use FW 6.0.30

        Change:  As requested

    2.  Request: Rearrange LLH memory organization

        Change:  Allow 16 MACs in the memory; do not set FCoE MACs in LLH

        Impact:  Switch-Independent mode only

Version 1.60.28 (Jul 14, 2010)
==============================
    Fixes
    -----
    1.  Problem: Possible crash during load/unload of one function, if more
                 functions are loaded.

        Cause:   Statistics ramrod of one function might override data of other
                 functions

        Change:  (In FW 6.0.29) Fixed statistics ramrod

        Impact:  Introduced in 1.60.07 (FW 6.0.5)

    2.  Problem: Port detection feature(ethtool -p) for dual-media is not
                 working

        Cause:   BCM8727 LED needs to be set via the PHY, and not the MAC

        Change:  Set BCM8727 LED via PHY

        Impact:  Dual-Media boards

    3.  Problem: ethtool -s ethX speed YYY does not work properly

        Cause:   Forcing port configuration every call to ethtool -s

        Change:  Do not change port configuration if not requested

        Impact:  Introduced in 1.60.27

    4.  Problem: Divide by 0 in driver code, after disabling coalescing via
                 ethtool

        Cause:   Conversion from usec to interrupt per sec done without check
                 for zero

        Change:  Check for zero in conversion

        Impact:  Introduced in 1.60.26

    5.  Problem: (CQ48787) ethtool -t fails in Switch-Independent mode after
                 bringing up higher functions (4,5,6,7)

        Cause:   Improper mac placement in NIG block

        Change:  Fixed address calculation

        Impact:  Switch-Independent mode only

    Enhancements
    ------------
    1.  Request: Modify Dual-media look & feel such that ethtool gets and sets
                 the configuration of the active PHY only. Active PHY is the
                 PHY which linked up, or in case of link down, according to the
                 port selection

        Change:  As requested

    2.  Request: Use FW 6.0.29

        Change:  As requested

    3.  Request: Don't call for pci_disable_msix() every time bnx2x_nic_unload()
                 is called

        Change:  Move pci_enable_msi/msix() to pcidev->probe() callback

    4.  Request: (ESX) Call for netif_napi_add() before netdev->open()

        Change:  As requested. This change is relevant for all platforms

    5.  Request: Support for ethtool_cmd.speed_hi field

        Change:  As requested

Version 1.60.27 (Jul 07, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ48202) Under low memory condition, rx stop functioning
                 during load/unload test

        Cause:   Some queue may be not fully populated, under low memory
                 condition, which may cause FW to drop packets for this queue

        Change:  Change memory allocation scheme in order to avoid this
                 situation

    2.  Problem: Link lost every other time when driver is brought up.

        Cause:   When the PHY swap parameter ('nvm cfg' option 124) is set, the
                 PHY's swap everytime the link is brought up.

        Change:  Instead of storing the PHY order, we calculate it fresh
                 everytime.

        Impact:  Dual-media boards.

    Enhancements
    ------------
    1.  Request: Return an error if bnx2x_set_flags() is called for unsupported
                 flags

        Change:  As requested

    2.  Request: Don't collect statistics if requested so according to
                 edebug-driver interface (edebug_driver_if field in shmem2
                 region)

        Change:  As requested

    3.  Request: Add support to bnx2x to extract Toeplitz hash out of the
                 receive descriptor for use in skb->rxhash

        Change:  As requested

        Impact:  Kernel 2.6.35 and newer

    4.  Request: Add ethtool port selection for dual media

        Change:  As requested

        Impact:  Dual media boards

Version 1.60.26 (Jun 30, 2010)
==============================
    Fixes
    -----
    1.  Problem: Incorrect LED behavior on dual-media platform

        Cause:   The LED settings are used to control GPIO in favor of
                 over-current detection

        Change:  On NOC (No-OverCurrent) flavor, configure the GPIOs to reflect
                 LED behavior rather than unnecessary over-current indication

        Impact:  BCM8727 based boards

    2.  Problem: Possible deadlock on bp->stat_sm_lock spinlock

        Cause:   Inappropriate locking function was used for protecting a
                 resource accessed by workqueue and timer:
                    used spin_lock()/spin_unlock() while should be
                    spin_lock_bh()/spi_unlock_bh()

        Change:  Use an appropriate locking API: spin_lock_bh()/spin_unlokc_bh()

        Impact:  Introduced in 1.60.22

    3.  Problem: Possible crash loading cnic if iSCSI OOO has been disabled
                 in a bnx2x

        Cause:   cnic was unaware of the fact that iSCSI OOO may be disabled in
                 the bnx2x

        Change:  Add an appropriate bit in a cnic_eth_dev->drv_state and set
                 it if iSCSI OOO is disabled in the bnx2x. This is done in a
                 bnx2x_cnic_probe2()

        Impact:  CNIC only

    4.  Problem: Interrupt coalescing was disabled in the chip

        Cause:   Coalescing was erroneously disabled by bnx2x by default

        Change:  Properly configure coalescing

        Impact:  Introduced in 1.60.11

    Enhancements
    ------------
    1.  Request: Fit Dual media selection to the new scheme

        Change:  As requested

    2.  Request: Enable to set the GPIO which controls the external PHY reset
                 (through nvm cfg 129)

        Change:  As requested

        Impact:  BCM8727 based boards

Version 1.60.25 (Jun 23, 2010)
==============================
    Fixes
    -----
    1.  Problem: Link down when using specific DACs (Direct Attached Cables)

        Cause:   Some DAC's EEPROM do not respond at 400Khz speed

        Change:  Set 2-wire transfer rate of SFP+ module EEPROM to 100Khz

        Impact:  BCM8727 based boards

    2.  Problem: (FCoE) (CQ48021) RESET_LUN operation failed due to
                 error detection

        Cause:   Detecting a protocol violation in response frame from
                 target (target protocol violation)

        Change:  (In FW 6.0.28) Mask the error reporting

        Impact:  FCoE only

    3.  Problem: (FCoE) 10% performance degradation

        Cause:   Read queue used by firmware did not have enough credits

        Change:  (In FW 6.0.28) Change the read queue used by firmware

        Impact:  Introduced in 1.60.24 (FW 6.0.27)

    4.  Problem: (FCoE) (CQ48403) Target does not handle incoming FCP_DATA

        Cause:   Increasing SEQ_CNT is not supported by target

        Change:  (In FW 6.0.28) Reset the SEQ_CNT back to zero when transmitting
                 new FCP_DATA frame

        Impact:  FCoE only

    5.  Problem: There was a "timeout waiting for queue[0]" message in a syslog
                 when running self-test (ethtool -t ethX) on 57712

        Cause:   Unlike HC IGU won't generate an interrupt for status block
                 updates that have been performed while interrupts disabled thus
                 Tx work generated by loopback test will never be handled

        Change:  Call for bnx2x_tx_int() from inside the loopback test for chips
                 with IGU (57712 and newer)

        Impact:  57712 only

    6.  Problem: (CQ48284) up-down test on port 1 causes traffic to stop on
                 port 0

        Cause:   Improper cleanup of HC and IGU blocks during function init

        Change:  Fix HC block cleanup, remove unnecessary IGU clean-up

        Impact:  Introduced in 1.60.15

    Enhancements
    ------------
    1.  Request: (CQ48374) Add a module parameter to disable iSCSI OOO

        Change:  As requested: added a disable_iscsi_ooo module parameter, which
                 is present if BCM_CNIC is defined, otherwise iSCSI OOO is not
                 enabled anyway

    2.  Request: (iSCSI) Add counters for iSCSI out-of-order events

        Change:  As requested (counters can be read from RAM through GRC)
                 (In FW 6.0.28)

    3.  Request: Use FW 6.0.28

        Change:  As requested

Version 1.60.24 (Jun 16, 2010)
==============================
    Fixes
    -----
    1.  Problem: (iSCSI) (CQ42399) Unable to run I/Os greater than 1500 bytes
                 with initiator MTU set to 9000 and target MTU set to 1500

        Cause:   Timestamp option was not considered in MSS calculation

        Change:  (in FW 6.0.27) Fix mss calculation when timestamp option
                 is present

        Impact:  iSCSI only

    2.  Problem: (iSCSI) (CQ46648) Connection closure tests fail

        Cause:   Incorrect FIN max retransmit count

        Change:  (in FW 6.0.27) Fix FIN max retransmit count

        Impact:  iSCSI only

    3.  Problem: (FCoE) Address calculation of task-context in Ustorm
                 could be wrong

        Cause:   Address calculation considered an argument twice

        Change:  (in FW 6.0.27) Fix calculation

    4.  Problem: (FCoE) Ustorm RAM read/update could be wrong during
                 event generation

        Cause:   Confusion between addresses while accessing RAM databases

        Change:  (in FW 6.0.27) Use appropriate address for each specific
                 database

    5.  Problem: (FCoE) ABTS local-completion mechanism did not handled error if
                 error was detected on ABTS BA_ACC

        Cause:   Not handling error caused an assert

        Change:  (in FW 6.0.27) Handle error by overwriting RX state.
                 Cleanup shall follow to clean the task

    6.  Problem: (FCoE) Writing to host memory from Tstorm could be corrupted

        Cause:   Using the same write VQ for Tstorm and Cstorm

        Change:  (in FW 6.0.27) Using the write VQ belongs to Tstorm only

    7.  Problem: bnx2x wouldn't properly function with 2.6.29 kernel

        Cause:   bnx2x used new netdev->netdev_ops interface starting from
                 2.6.30 and not from 2.6.29 kernel as should be

        Change:  Use new netdev_ops interface starting from 2.6.29 kernel

        Impact:  2.6.29 kernel only

    Enhancements
    ------------
    1.  Request: Align TCP advertised window in iSCSI (4b alignment)

        Change:  As requested in FW 6.0.26

    2.  Request: Mask protocol violations error detected by chip on HP targets

        Change:  Masking the specific checks (in FW 6.0.26)

    3.  Request: Dropping invalid packets which are received during the
                 abort procedure

        Change:  As requested (in FW 6.0.27)

    4.  Request: Use FW 6.0.27

        Change:  As requested


Version 1.60.23 (Jun 10, 2010)
==============================
    Fixes
    -----
    1.  Problem: Avahi daemon crashed after loading bnx2x.ko on kernels newer
                 than 2.6.30

        Cause:   SAN MAC was added (dev_addr_add()) before netdev_register()
                 call and call_netdevice_notifiers(NETDEV_CHANGEADDR, dev) has
                 been called for a unregistered device

        Change:  Call dev_addr_add() after netdev_register()

        Impact:  Introduced in 1.60.21

    2.  Problem: Link status notification appeared each time when DCBX
                 negotiation received

        Cause:   DCBX update handled as link update and notification printed

        Change:  Remove link notification from this flow

        Impact:  DCBX only

    3.  Problem: (CQ47700) Can't get Link when forcing speed on 10/100M

        Cause:   When link is not set to autoneg, MDIX wasn't enabled so link
                 couldn't be established on direct cables

        Change:  Enable MDIX when autoneg is disabled

        Impact:  BCM84823 based board

    4.  Problem: (CQ47671) "ethtool -p ethx" has no effect on the port's LED

        Cause:   Specific PHY requires specific phy settings

        Change:  In case of copper phys, set LED registers directly in the PHY,
                 rather than the NIG

        Impact:  Copper boards

    5.  Problem: (iSCSI OOO) Producer of OOO Rx CQ ring was updated twice than
                 was expected

        Cause:   The mentioned producer was updated both in the
                 bnx2x_cnic_get_ooo_cqe() and in the bnx2x_cnic_reuse_ooo_pkt()
                 while is meant to be updated only in the
                 bnx2x_cnic_reuse_ooo_pkt()

        Change:  Don't advance CQ ring producer in the bnx2x_cnic_get_ooo_cqe()

        Impact:  iSCSI OOO only

    6.  Problem: (iSCSI) UIO Client wasn't able to handle IPv6 traffic

        Cause:   UIO Client was not receiving multicast traffic because in
                 non-promiscuous mode only one Client per function will receive
                 multicast packets (leading RSS Client)

        Change:  Configure UIO Client's to accept all multicast packets

        Impact:  iSCSI only

    7.  Problem: bnx2x would not compile on kernel 2.6.34

        Cause:   Improper dependency in bnx2x_compat.h

        Change:  Switch on netdev_hw_addr_list_for_each during bnx2x_mc_addr()
                 definition

    8.  Problem: (CQ47854) Driver crash during FCoE test

        Cause:   HW assert causes driver to halt

        Change:  Notify user with appropriate message without causing panic

    9.  Problem: Unable to bring up function 2-7 if MBA didn't configure MACs

        Cause:   Check for MAC for both multi-function modes

        Change:  Check for OV tag in Switch-Dependent mode

        Impact:  Introduced in 1.60.10


    Enhancements
    ------------
    1.  Request: Change PXP Write block initialization values in 57712 to help
                 reduce latency

        Change:  As requested

        Impact:  57712 only

Version 1.60.22 (Jun 02, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ47662) "stats updated by DMAE but no MAC active" message
                 while up/down test

        Cause:   Race on update of statistics' state machine

        Change:  Use spinlock to protect the state machine

    2.  Problem: (CQ46918) Network bursts are larger than the configured
                 connection on FLEX 10

        Cause:   Inaccurate bytes calculation at rate shaping mechanism

        Change:  Calculation was fixed in FW 6.0.25

    3.  Problem: (CQ47623,CQ46388,CQ47225,CQ47833) System hangs during
                 iSCSI stress traffic

        Cause:   Incorrect packet trimming lead to HW internal error

        Change:  Fixed packet trimming on LB port in FW 6.0.25

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    4.  Problem: All BRB interrupts are masked

        Cause:   BRB interrupt mask is not initialized so reset value is used

        Change:  Initialize interrupt mask so only parser read length errors
                 are masked

        Impact:  In scenarios where BRB interrupts occur, indicate appropriate
                 error information

    5.  Problem: (CQ47834, CQ47795, CQ47980) On low memory condition, driver
                 caused kernel panic in bnx2x_ilt_mem_op()

        Cause:   Unallocated memory access

        Change:  Validate non NULL pointers before access

    6.  Problem: (FCoE) FCoE traffic experiences a lot of drops

        Cause:   Improper PFC configuration - mixed RX/TX COSes

        Change:  Fixed configuration

        Impact:  Introduced in 1.60.21

    Enhancements
    ------------
    1.  Request: Don't limit the pause advertisement for large MTU

        Change:  As requested

        Impact:  57712 and above

    2.  Request: Forward setup ramrod should complete on event ring and not
                 as a tx_bd_cons increment

        Change:  (in FW 6.0.25) as requested

    3.  Request: Use FW 6.0.25

        Change:  As requested

    4.  Request: Use terminate ramrod for non forwarding clients

        Change:  As requested

Version 1.60.21 (May 26, 2010)
==============================
    Fixes
    -----
    1.  Problem: (iSCSI OOO) Kernel panicked in the skb_put() when called from
                 bnx2x_cnic_reuse_ooo_pkt()

        Cause:   Wrong skb function has been used for resetting the data length
                 in the skb: skb_put(skb, -skb_headlen(skb))

        Change:  Use the proper function: skb_trim(skb, 0)

        Impact:  iSCSI OOO only

    2.  Problem: 57710 - Load/unload stress test caused chip to hang

        Cause:   Disable of device in the middle of MSIX message caused deadlock
                 in HC block

        Change:  Use PCI configuration space to avoid the deadlock

        Impact:  57710 only

    3.  Problem: iSCSI is not functional in switch independent mode

        Cause:   iSCSI mac was not written into NIG memory

        Change:  Fix handling of MAC addreses in switch independent mode

        Impact:  switch independent mode only

    4.  Problem: Changing MTU when CNIC is loaded was causing CFC error

        Cause:   Setting CDU validation value for iSCSI L2 Client was done from
                 bnx2x_register_cnic(), which is not called in change MTU flow

        Change:  Move setting of iSCSI L2 Client CDU validation value to
                 bnx2x_cnic_sp_post() right before it sends iSCSI L2 Client
                 SETUP ramrod

        Impact:  iSCSI only

    5.  Problem: 57710/57711/57711E: unable to load device on machine with 16
                 (and more) CPUs

        Cause:   Improper HC SB calculation

        Change:  Exclude none l2 contexts from HC SB calculation

        Impact:  57710/57711/57711E only; introduced on 1.60.13

    Enhancements
    ------------
    1.  Request: (FCoE) Set SAN MAC before ifup event in order to allow the
                 bnx2fc properly configure WWN

        Change:  Move the dev_addr_add() for a SAN MAC to pci_dev->probe() flow
                 (bnx2x_init_one()) making it similar to networking MAC address
                 configuration (it is configured in netdev at this stage as
                 well). dev_addr_del() for a SAN MAC has been moved to
                 bnx2x_remove_one() correspondingly

        Impact:  FCoE only

    2.  Request: Lower the bnx2x skb memory footprint on ESX

        Change:  Limit the OOO Rx ring to 40 BDs

        Impact:  ESX only


Version 1.60.20 (May 18, 2010)
==============================
    Fixes
    -----
    1.  Problem: (iSCSI OOO) Call for bnx2x_cnic_reuse_ooo_pkt() was causing a
                 kernel panic

        Cause:   There was a wrong fp picked in bnx2x_cnic_reuse_ooo_pkt() (fwd
                 instead of ooo)

        Change:  Pick the right fp

        Impact:  iSCSI OOO only

    2.  Problem: (FCoE)(CQ47674) Chip hangs during destroy FCoE connection flow

        Cause:   FCoE reordering mechanism was corrupted during disable
                 connection flow

        Change:  (Fixed in FW 6.0.24) Assure not to overrun relevant context
                 for reordering operation

        Impact:  FCoE only

    3.  Problem: (FCoE)(CQ47644) Chip reporting an error instead of dropping
                 the packet

        Cause:   Some errors were detected before verifying FCoE delimiters

        Change:  (Fixed in FW 6.0.24) Once an error detected, verify first the
                 FCoE delimiters before reporting an error

        Impact:  FCoE only

    4.  Problem: (iSCSI OOO) Chip hangs during out-of-order traffic

        Cause:   Firmware internal synchronization issue between iSCSI
                 and L2 flows

        Change:  (Fixed in FW 6.0.24) Firmware fix

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    Enhancements
    ------------
    1.  Request: Add BNX2X_MSG_CNIC debug level

        Change:  As requested

    2.  Request: Allow the RX rings to be initialize with a lower number of
                 entries (at the source code level)

        Change:  As requested

    3.  Request: Use FW 6.0.24

        Change:  As requested

    4.  Request: Enable PFC statistics in MAC

        Change:  As requested

Version 1.60.19 (May 12, 2010)
==============================
    Fixes
    -----
    1.  Problem: (iSCSI OOO): OOO packets were not indicated on the OOO Rx ring

        Cause:   There were missing OOO ring's CID and Client ID configuration
                 in a TSTORM

        Change:  Properly configure OOO ring's CID and Client ID in the TSTORM
                 memory

        Impact:  iSCSI OOO only

    2.  Problem: (iSCSI OOO): CNIC SB context in internal memory was zeroed
                 after OOO and FWD rings' ramrods were completed

        Cause:   There was a call for bnx2x_init_sb() for CNIC SB in
                 bnx2x_register_cnic()

        Change:  Remove the bnx2x_init_sb() call from bnx2x_register_cnic()

        Impact:  iSCSI OOO only

    3.  Problem: (CQ46146) "ethtool -t" fails when the speed is forced on cx4
                 NICs to 100/10Mb

        Cause:   Internal loopback test needs to conducted when speed is set
                 to 10G force

        Change:  Set speed to 10G force during loopback test, and restore link
                 speed afterwards.

        Impact:  ethtool -t test

    4.  Problem: Spelling error in module parameter

        Cause:   "Then" used instead of "Than"

        Change:  Fixed to "than"

    5.  Problem: (CQ47609) Link Level Pause causes link to pause after PFC
                 has been negotiated

        Cause:   Wrong MAC registers configuration

        Change:  Fix configuration

        Impact:  57712 only

    6.  Problem: Link change after PMF migration may halt the system

        Cause:   PHY attributes are provided to the initial PMF only

        Change:  Load PHY attributes for every new function regardless of
                 being PMF or not.

        Impact:  Multi-function mode

    7.  Problem: (iSCSI OOO) OOO FW was not processing the incoming OOO packets

        Cause:   TSTORM internal RAM was not properly initialized

        Change:  Properly initialize OOO producer, CID and Client ID of OOO ring
                 in a TSTORM internal memory

        Impact:  iSCSI OOO only

    8.  Problem: (iSCSI OOO) L2 FW was generating XSTORM
                 x_eth_vlan_special_check assert when trying to post packets on
                 a FWD ring

        Cause:   The running index that was posted on a VLAN field of the start
                 BD was starting from 1, while FW was expecting it to start from
                 0

        Change:  Keep driver's packet producer and consumer running from 0 and
                 decrement a FW packet consumer during completions handling
                 instead

        Impact:  iSCSI OOO only

    9.  Problem: (CQ47445) The duplex mismatch does not work as expected

        Cause:   Duplex was set correctly in the phy, but wasn't passed to the
                 driver. In addition, when setting 10/100 force speed, it
                 actually advertised 10/100 with autoneg.

        Change:  Return the correct duplex result, and when speed is set to 10/
                 100, set the speed actually for force 10/100

        Impact:  BCM84823 based boards

    10. Problem: (CQ47383) It takes long time to re-establish link in when
                 working against some switches in force 1G mode

        Cause:   PHY is unable to establish good link in this mode

        Change:  Enable CL37 BCM autoneg instead of working in force 1G

        Impact:  BCM8073 based boards

    11. Problem: (CQ47436) FC setting not consistant

        Cause:   "ethtool -a" show flow-control autonegotiation as off when
                 speed is not set to autonegotiate.

        Change:  Show the actual flow-control settings on "ethtool -a", but
                 in case the speed setting is actually force speed, this setting
                 will have no affect like with the BCM8727

        Impact:  ethtool -a

    12. Problem: (CQ45632) NETDEV Watchdog message appeared and system hung

        Cause:   driver disables tx while carrier still on

        Change:  call to netif_carrier_off() after netif_tx_disable()


    Enhancements
    ------------
    1.  Request: Remove redundant LCPLL setting which is done already in the
                 bootcode

        Change:  As requested

    2.  Request: (DCBX) Changing PFC RX configuration: In RX COS0 will always
                 be configured to lossy and COS1 to lossless

        Change:  As requested

    3.  Request: Remove Outer Vlan configuration for Mac partitioning mode

        Change:  As requested

    4.  Request: Use FW 6.0.23

        Change:  As requested

    5.  Request: Allow driver compilation with different kernel location

        Change:  As requested


Version 1.60.18 (May 03, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ47451) iSCSI and FCoE broken and causes kernel panic

        Cause:   Wrong FW offsets used

        Change:  fix FW offsets defines

        Impact:  Introduced in 1.60.17

    2.  Problem: Loading driver on one port may cause link toggling on the
                 other port

        Cause:   PLL was initialized for both ports instead of per chip

        Change:  Initialize PLL once during common init

        Impact:  57712 only

    3.  Problem: Possible race between firmware threads when loading context
                 to chip

        Cause:   Common firmware handler which loads context for slow path
                 handler may override other handlers context load responses

        Change:  The common handler considers it's thread
                 Id when waiting for the context load response

    4.  Problem: Loading driver on one port may cause link toggling on the
                 other port

        Cause:   Firmware generates false data digest error on incoming PDU

        Change:  (Fixed in FW 6.0.22) Firmware fix

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    5.  Problem: (iSCSI) (CQ46388,CQ46608,CQ46638) Chip hangs when running
                 stress iSCSI traffic

        Cause:   Firmware caused connection activity-counter to drop to
                 a negative value

        Change:  (Fixed in FW 6.0.22) Firmware fix

        Impact:  Introduced in 1.60.10 (FW 6.0.11)


    Enhancements
    ------------
    1.  Request: Remove the extra prefetch instructions from bnx2x_rx_int()

        Change:  As requested

    2.  Request: (DCBX) add ETS support

        Change:  As requested

    3.  Request: (DCBX) add DCB statistics information; add support for 4-bytes
                 long remote chassis id

        Change:  As requested

    4.  Request: Set NIC_MODE when cnic driver does not exist in the system

        Change:  As requested

        Impact:  Revert of change introduced in 1.60.11

    5.  Request: Remove Modules.supported file

        Change:  As requested

    6.  Request: Use FW 6.0.22

        Change:  As requested


Version 1.60.17 (Apr 27, 2010)
==============================
    Fixes
    -----
    1.  Problem: Kernel warning message from pci_enable_msix() in case of
                 parity error

        Cause:   Improper handling of MSI-X enable/disable flow in parity error
                 case

        Change:  Disable interrupts, disconnect from IRQs and disable MSI-X in
                 OS level in bnx2x_nic_unload() both in parity error case

    2.  Problem: FIP packets won't arrive to the FCoE L2 ring

        Cause:   Current FW still doesn't support the FIP packets filtering
                 according to the ETH type

        Change:  Revert the previous enhancement that removed setting the "FIP
                 MAC" to the FCoE L2 Client

        Impact:  Introduced in 1.60.16

    3.  Problem: PCI speed is always reported as 5G (Gen2) on 57712

        Cause:   Wrong decoding of the PCI speed

        Change:  Fixed the speed decoding

        Impact:  Only 57712

    4.  Problem: There was a possibility that packets might be transmitted on
                 the queue of the FCoE L2 Client before its SETUP ramrod is
                 completed

        Cause:   bp->state was set to OPEN after FUNCTION_START ramrod
                 (before SETUP ramrod(s) are sent)

        Change:  Set bp->state=OPEN only after all Clients' SETUP ramrods complete

        Impact:  FCoE only, introduced in 1.60.10

    5.  Problem: (FCoE) Chip transmitting unwanted FCP_CONF frames

        Cause:   Incorrect update of the CONFQ TX producer

        Change:  (Fixed in FW 6.0.21) Reset the CONFQ TX producer at the
                 beginning of transmission flow

        Impact:  FCoE only

    Enhancements
    ------------
    1.  Request: Add TCM storm context registers to the register dump

        Change:  As requested

        Impact:  57712 only

    2.  Request: Add path info to the registers dump header

        Change:  As requested

        Impact:  57712 only

    3.  Request: Modify LED configuration of the BCM84823 to fit the new
                 phy firmware (2.25 and up)

        Change:  As requested

        Impact:  BCM84823 based boards only.

    4.  Request: Set packets producer for OOO Rx ring in TSTORM

        Change:  As requested

        Impact:  iSCSI only

    5.  Request: Limit number of BDs in OOO Rx ring to the number of CQEs minus
                 maximum number of outstanding ramrods.

        Change:  As requested

        Impact:  iSCSI only

    6.  Request: Move handling of the FCoE L2 ring to NAPI

        Change:  As requested

        Impact:  FCoE only

    7.  Request: Remove support for FCoE L2 rings on 57711

        Change:  As requested

        Impact:  FCoE only

    8.  Request: Use FW 6.0.21

        Change:  As requested


Version 1.60.16 (Apr 22, 2010)
==============================
    Fixes
    -----
    1.  Problem: MIN/MAX feature is not functional

        Cause:   Miscalculation FW offsets in driver code

        Change:  Offset calculation fixed

        Impact:  Introduced in 1.60.01

    2.  Problem: (CQ47092) DCBX: Chassis ID Lower and Upper are switched

        Cause:   bnx2x copied upper to lower and lower to upper

        Change:  Assignment fixed

        Impact:  Introduced in 1.60.01

    3.  Problem: iSCSI L2 ring Rx side wasn't functional

        Cause:   iSCSI L2 Client Rx filtering configuration wasn't properly set

        Change:  Properly set iSCSI L2 Client Rx filtering configuration

    4.  Problem: CQ047058: Link occasionally doesn't come up with 8073 based
                 boards

        Cause:   Insufficient delay during phy firmware load sequence

        Change:  Increase delay during phy firmware load sequence to 120ms

        Impact:  BCM8073/BCM8727

    5.  Problem: Function unload could bypass statistic ramrod (Theoretical bug)

        Cause:   There was no reordering mechanism in the relevant firmware
                 flows

        Change:  (Fixed in FW 6.0.20) Adding reordering

        Impact:  Introduced in 1.60.10 (FW 6.0.12)

    6.  Problem: (FCoE) (CQ47126, CQ47129) Miss detection of fc-crc error

        Cause:   Firmware bug

        Change:  (Fixed in FW 6.0.20) Firmware fix

        Impact:  Introduced in 1.60.07 (FW 6.0.6)

    7.  Problem: (iSCSI) Firmware generate false data digest on incoming PDU

        Cause:   First 4 data bytes arrived splitted into 3 packets

        Change:  (Fixed in FW 6.0.20) Firmware fix

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    8.  Problem: There were sporadic "timeout waiting for state X" messages in
                 the dmesg when loading/unloading the driver

        Cause:   There was a race on bp->set_mac_pending variable during
                 increment/decrement

        Change:  Replace increment/decrement of bp->set_mac_pending to
                 set 1/set 0 to avoid the race

    9.  Problem: TSO packet was not identified is ESX environment
                 (as a result there were CSUM errors on wire)

        Cause:   Wrong condition is checked for identification of TSO packet

        Change:  Fix the TSO identification condition (only check
                 skb_shinfo(skb)->gso_size for being not zero)

        Impact:  ESX and old kernels only (below 2.6.18)

    10. Problem: Possible sporadic memory garbadging

        Cause:   Waiting for CFC_DEL ramrod completion for OOO Client was
                 done in polling mode while default SB interrupt was still
                 enabled

        Change:  Always wait for CFC_DEL ramrod completion in interrupt driven
                 mode for all clients

        Impact:  Introduced in 1.60.15

    Enhancements
    ------------
    1.  Request: Reuse completed Tx buffers in Rx ring from Tx DPC

        Change:  As requested

        Impact:  iSCSI OOO only

    2.  Request: Remove 57711-only FCoE L2 MAC manipulations

        Change:  As requested

        Impact:  FCoE only

    3.  Request: Simplify the iSCSI L2 Client MAC configuration code

        Change:  Set/Clear iSCSI L2 MAC in bnx2x_drv_ctl() on START_L2/STOP_L2
                 commands

        Impact:  iSCSI only

    4.  Request: Use FW 6.0.20

        Change:  As requested

    5.  Request: Use kmalloc() instead of vmalloc() for dynamic allocation of
                 none-DMAable buffers

        Change:  As requested

    6.  Request: Add an way for CNIC to return an L2 SPQ credit

        Change:  Added DRV_CTL_RET_SPQ_CREDIT command option to bnx2x_drv_ctl()

        Impact:  iSCSI only

    7.  Request: (DCBX) support transaction between different pause modes

        Change:  Added support

        Impact:  57712 only


Version 1.60.15 (Apr 15, 2010)
==============================
    Fixes
    -----
    1.  Problem: FCoE INIT ramrod timeout

        Cause:   HW wasn't producing interrupt on CNIC SB

        Change:  bnx2x didn't send an ACK to IGU after establishing
                 OOO and FWD clients

        Impact:  CNIC only

    2.  Problem: (CQ47020) Kernel panic during cnic load

        Cause:   Initializing of iSCSI L2 context validation values was done
                 from bnx2x_cnic_probe() function, which is called both for
                 devices that are down and their memories are still not
                 allocated (including contexts)

        Change:  Initialize iSCSI L2 context from bnx2x_register_cnic() which
                 may be called only for interfaces that are up

        Impact:  CNIC only

    3.  Problem: CFC error when FCoE INIT ramrod is sent

        Cause:   FCoE Init CID was not initialized

        Change:  Initialize fcoe_init_cid to the correct value in
                 bnx2x_cnic_probe()

        Impact:  FCoE only

    4.  Problem: (CQ47100) When the force KR enabler is set correctly, traffic
                 does not work on 8073 based boards

        Cause:   Polarity swap was not set correctly in case link is set to 1G

        Change:  Initialize polarity swap correctly when enabled.

        Impact:  BCM8073 based boards only

    5.  Problem: DCB change during FLR might cause chip hang

        Cause:   Firmware skipped DCB update when encountered a PCI error

        Change:  (Fixed in FW 6.0.19) Firmware flow changed to first update
                 DCB version and only then to proceed to handle PCI error

        Impact:  Introduced in 1.60.11 (FW 6.0.15)

    6.  Problem: (FCoE) Chip hangs after trying to access inappropriate host
                 memory address

        Cause:   Firmware instructed corrupted SGEs in PBF command due to
                 corrupted Xstorm context

        Change:  (Fixed in FW 6.0.19) Save entire Xstorm context during disable
                 connection procedure

        Impact:  Exists in all previous FCoE releases

    7.  Problem: (FCoE) (CQ47022) Disabling/Enabling the adapter from Host side
                 without IO, causes device manager to hang

        Cause:   Firmware did not update task properly in host memory after
                 detecting illegal CONF request

        Change:  (Fixed in FW 6.0.19) Save task context only after all
                 verification has been completed

        Impact:  Introduced in 1.60.01

    8.  Problem: (iSCSI) Connection close does not complete

        Cause:   Final ACK from target is discarded by firmware

        Change:  (Fixed in FW 6.0.19) Firmware fix

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    9.  Problem: (CQ47034) MIN/MAX is not accurate for small packets

        Cause:   The firmware didn't count inter-packet gap and preamble in
                 bandwidth allocation.

        Change:  (Fixed in FW 6.0.19) Fixed L2 calculation

        Impact:  Introduced in 1.45.xx. Doesn't include fix for iSCSI and FCoE

   10.  Problem: (CQ46501) DCBX IOTCL config_dcbx_params.admin_dcbx_version
                 shows incorrect value

        Cause:   Variable initialized to incorrect value of 2

        Change:  Fixed to appropriate 0 (CEE)

   11.  Problem: Link down when upgrading BCM84823 phy firmware to 2.24/2.25

        Cause:   Changes in the firmware initialization required setting
                 different values

        Change:  Set the require phy register to achieve link and led in all
                 speeds

        Impact:  BCM84823 based boards

    Enhancements
    ------------
    1.  Request: Add support for iSCSI OOO flow in L2 driver

        Change:  As requested

        Impact:  iSCSI only

    2.  Request: Don't call for NAPI related functions from non-NAPI context

        Change:  Handle cleanup ramrods in an interrupt driven mode and not
                 in a polling mode as it was

    3.  Request: (FCoE) Reset the entire KCQE before start initializing it

        Change:  As requested

    4.  Request: (FCoE) Change firmware assert to error notification to driver
                 when receiving MP frame with unknown R_CTL.function mode

        Change:  As requested

    5.  Request: Use FW 6.0.19

        Change:  As requested

    6.  Request: Don't disable TPA on XEN enabled kernels

        Change:  As requested

Version 1.60.14 (Apr 08, 2010)
==============================

    Fixes
    -----
    1.  Problem: Driver failed to pass TCP traffic in non-TPA mode on 57712

        Cause:   SGE buffer size was not configured to zero in non-TPA mode

        Change:  Properly set TPA-related section in Client Init ramrod data

        Impact:  57712 only

    2.  Problem: Link LED for 10M/100M/1000M is not functional on BCM84823 based
                 boards

        Cause:   LED functionality was controlled by 10G core all the time

        Change:  When link speed is up in 10M/100M/1000M, set led control to
                 1G core.

        Impact:  BCM84823/BCM8481 based boards

    3.  Problem: Link doesn't come up when changed from 1G to 10G with BCM84823
                 based boards.

        Cause:   Phy wasn't initialized in this case so some parameters were not
                 cleared

        Change:  Reset phy when any parameter is changed

        Impact:  Seen on BCM84823 based board, but may relate to others

    4.  Problem: (CQ46902) Unable to load driver on some systems

        Cause:   Old BIOS behaviour is not compliant with newest PCIE spec
                 according to number of tags supported by the system

        Change:  Driver validates the capability

        Impact:  57712 only


Version 1.60.13 (Apr 4, 2010)
==============================
**** This release doesn't support non-TPA mode on 57712 devices ****

    Fixes
    -----
    1.  Problem: (CQ46501) DCBX IOTCL config_dcbx_params.admin_dcbx_version
                 shows incorrect value

        Cause:   Variable initialized to incorrect value of 2

        Change:  Fixed to appropriate 0 (CEE)

    2.  Problem: FC behavior is changed so that setting FC to auto when speed
                 is force has no influence of to flow-control

        Cause:   Although this configuration is not so logic, many boards have
                 their configuration build this way so need to restore this
                 behavior

        Change:  Change back to old behavior

        Impact:  Optic devices. Introduced in 1.60.11

    3.  Problem: When RX-polarity swap is set, traffic in 1G link  doesn't pass.

        Cause:   RX-polarity was set on the PMA/PMD side instead of the XGXS
                 side

        Change:  Set RX polarity on the XGXS side of the 8073

        Impact:  KR (BCM8073)

    4.  Problem: Autoneg flow-control is not seen using "ethtool -a"

        Cause:   Duplicating the link parameters configuration for dual-media
                 platform

        Change:  Return the correct FC status

        Impact:  Introduced in 1.60.11

    5.  Problem: Self-test was reporting errors in an IGU block when driver was
                 configured to use INT#x

        Cause:   Driver was reading interrupt status register when IGU was
                 still disabled for the current PF

        Change:  Connect to IRQs after HW initializing

    6.  Problem: Self-test was reporting errors in an IGU block when driver was
                 configured to use INT#x

        Cause:   Driver was reading interrupt status register when IGU was still
                 not configured to Single ISR mode

        Change:  Set IGU_PF_CONF_SINGLE_ISR_EN bit together with
                 IGU_PF_CONF_FUNC_EN when driver is configured to Single ISR
                 mode (MSI or INT#x) and do not turn it off unless the driver is
                 configured to use MSI-X interrupt mode

        Impact:  57712 only

    7.  Problem: When link speed is set to 1G, link comes up in 10G when
                 connected to device which advertise 10G.

        Cause:   BCM84823 always advertises 10G speed.

        Change:  When speed capability doesn't include 10G, or force speed is
                 not set to 10G, disable 10G advertisement

        Impact:  BCM84823, BCM8481

    8.  Problem: (CQ46844, CQ46842) Driver did not work properly on machines
                 with large number of CPUs.

        Cause:   Driver was managing more resources then available in FW

        Change:  Taking into account max available L2 contexts

        Impact:  57712 only

    8.  Problem: Potential link issue with force 1G on 8073

        Cause:   Setting one of the registers in the force 1G sequence
                 incorrectly

        Change:  Fix 1G force sequence

        Impact:  57712 + KR only

    9.  Problem: Terminate ramrod called host coalescing on Tx segment

        Cause:   Wrong logic while sending host coalescing on Tx

        Change:  (Fixed in FW 6.0.17) The ramrod no longer send host coalescing

        Impact:  Introduced in 1.60.6 (FW 6.0.3)

    10. Problem: Firmware asserted when TPA is disable

        Cause:   Wrong logic in the assert Conditions

        Change:  (Fixed in FW 6.0.17) The assert may occur only when TPA is
                 enabled

        Impact:  Introduced in 1.60.12 (FW 6.0.15)

    11. Problem: VF: system crashed when VF reads client init data

        Cause:   Reading client init from VF memory and not from PF memory

        Change:  (Fixed in FW 6.0.17) VF read the client init from PF memory

        Impact:  Introduced in 1.60.12 (FW 6.0.15)

    12. Problem: Pause on exhausted ring broken

        Cause:   Internal pause data structure was initialized improperly

        Change:  (Fixed in FW 6.0.17) Fix internal ram offset calculation

        Impact:  Introduced in 1.60.12 (FW 6.0.15)

    13. Problem: (FCoE) Timer expiration doesn't read DCB info

        Cause:   DCB update is done only for transmission flows

        Change:  (Fixed in FW 6.0.17) Read DCB info for timer expiration

        Impact:  Introduced in 1.60.12 (FW 6.0.15)

    14. Problem: Return credit in termination handler without executing DCB
                 update

        Cause:   Firmware bug

        Change:  (Fixed in FW 6.0.18) Update DCB in the beginning of the
                 terminate handler

        Impact:  Introduced in 1.60.10 (FW 6.0.11)


    Enhancements
    ------------
    1.  Request: When link speed is set to force on copper devices, set link to
                 autoneg with specific link speed advertisement since force speed
                 is not copper compliant

        Change:  As requested

        Impact:  BCM84823/BCM8481 based devices

     2. Request: Add PFC/DCBX support for E2

        Change:  As requested

     3. Request: Make driver to be compiled, by default, with FCoE support

        Change:  As requested. FCoE support comes by default with CNIC support

     4. Request: Don't allocate SGEs when TPA is not enabled for a specific
                 ring

        Change:  As requested

     5. Request: Use FW 6.0.18

        Change:  As requested


Version 1.60.12 (Mar 23, 2010)
==============================
    1.  Problem: Flow control is not set on optic devices

        Cause:   When flow-control was set to force on optic devices,
                 configuration was not permeate to the MACs

        Change:  Set the FC configuration on optic devices according to user
                 settings

        Impact:  Optic devices

Version 1.60.11 (Mar 22, 2010)
==============================
    Fixes
    -----
    1.  Problem: Driver didn't work on big endian setups

        Cause:   There were endianness bugs both in HSI and in driver

        Change:  Properly handle endianness in EQ related code

        Impact:  Introduced in 1.60.10

    2.  Problem: Potential link issue with BCM8727

        Cause:   In BCM8727, the firmware in second port must be loaded before
                 the first port.

        Change:  Download the second port to 8727 first during initialization

        Impact:  57712 only and SFP+ only

    3.  Problem: Driver didn't work with KVM SR-IOV

        Cause:   Final client delete (CFCdelete ) was not communicated
                 to the SR-IOV management code.

        Change:  Passing the delete completion notifications to the SR-IOV
                 management.

        Impact:  Introduced in 1.60.10

    4.  Problem: (CQ46455) Load-unload test failed in Multi-Function mode

        Cause:   Improper initialization and cleanup of IGU block

        Change:  Fixed

        Impact:  Introduced in 1.60.01

    5.  Problem: (FCoE) FCoE L2 client was receiving erroneous SETUP client
                 ramrod completions

        Cause:   FCoE L2 Tx SB index was configured to the same value as Rx
                 index. As a result FW was overwriting the Rx SB index with
                 a Tx index value

        Change:  Fixed Tx index configuration

        Impact:  Introduced in 1.60.10

    6.  Problem: BCM8073 isn't able to link up on specific board

        Cause:   The default state of the GPIO1 is high and the PHY might not be
                 in the good reset state after a POR

        Change:  Toggle GPIO1 from LOW to HIGH during common init

        Impact:  57112 + 8073

    7.  Problem: (CQ46476) Unable to load driver on RH48/RH47 32bit

        Cause:   Undefined symbols "____log2_NaN" used in kernel

        Change:  Define the symbol if not defined

    8.  Problem: Binary data printed during fw_dump()

        Cause:   Address of dump miscalculated for 57712

        Change:  Fix address calculation

        Impact:  Only 57712

    9.  Problem: (CQ45724) in MF configuration, after bringing the interface
                 down, ethtool does not reflect link status correctly

        Cause:   Missing check for device status

        Change:  Add check for device status

    10. Problem: (CQ 46240) Unexpected completion is received during forward
                 connection establishment

        Cause:   Problematic initialization sequence of status blocks

        Change:  (Fixed in FW 6.0.13) Firmware now checks for function enable
                 before updating the status block

        Impact:  Introduced in 1.60.01 (FW 5.3.19), relevant to 57710/11 only

    11. Problem: (FCOE) Detect an error on FCP_RSP with confirmation request

        Cause:   Firmware did not verify confirmation request indication
                 when checked last sequence indication in FC header

        Change:  (Fixed in FW 6.0.13) Fixed confirmation request verification

        Impact:  Problem exists in all previous FCoE versions

    12. Problem: (CQ46005) Maximum bandwidth allocation feature not working
                 as expected

        Cause:   Storm clock frequency was 500MHz instead of 550MHz - this
                 affects the RT clocks configuration which had a 10% deviation

        Change:  (Fixed in FW 6.0.14) Firmware now use correct clock frequency
                 for RT configuration

        Impact:  Relevant only to BCM57712

    13. Problem: "Pause on exhausted rings" functionality broken

        Cause:   Internal firmware variable was not set properly in RAM

        Change:  (Fixed in FW 6.0.14) Firmware now sets the missing internal
                 variable at L2 client init phase

        Impact:  Introduced in 1.60.06 (FW 6.0.2)

    14. Problem: (FCoE)(CQ46506) firmware hanged (all threads in Ustorm sleep)

        Cause:   Error handling was not processed correctly

        Change:  (Fixed in FW 6.0.14) Firmware fix

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    15. Problem: (FCoE)(CQ46342) RX_ID not populated inside REC_ELS packet

        Cause:   Driver did not receive RX_ID during timer's error reporting

        Change:  (Fixed in FW 6.0.14) Firmware fix

        Impact:  Problem exist in al previous firmware releases

    16. Problem: (iSCSI)Data placement of non-aligned small size data (<4 bytes)
                 caused false data-digest error

        Cause:   Internal firmware error

        Change:  (Fixed in FW 6.0.14) Firmware fix

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    17. Problem: The firmware supported only unicast addresses that were
                 recognized by the LLH (limit to 16 MACs) in
                 switch independent mode

        Cause:   The search in the CAM used the function id from the LLH

        Change:  (Fixed in FW 6.0.15) Unmasked the function id in searches
                 in the cam in switch independent mode

        Impact:  Introduced in 1.60.10 (FW 6.0.10)

    18. Problem: (iSCSI) Firmware might spin into infinite-loop when RQ is full

        Cause:   Priority of Sleep when fetching new RQ producer is too high

        Change:  (Fixed in FW 6.0.15) Reduce sleep priority

        Impact:  Introduced in 1.60.10 (FW 6.0.11)

    19. Problem: (iSCSI) Saturated window was not supported in option2
                 TCP connect

        Cause:   Feature not supported

        Change:  (Fixed in FW 6.0.15) Add support in firmware

    20. Problem: (FCoE) (CQ46072) IO errors when running heavy traffic write
                 operations

        Cause:   Inappropriate line credit calculation in transmission path

        Change:  (Fixed in FW 6.0.15) Firmware fix in line credit calculation

        Impact:  Introduced in 1.60.10 (FW 6.0.10)

    21. Problem: in 4-port mode - using port 2 and 3 caused errors followed by
                 fw dump

        Cause:   Inappropriate FW SB allocation, improper FW mailbox calculation

        Change:  Add port id to the calculations

        Impact:  57712 4-port only

    Enhancements
    ------------
    1.  Request: (CQ45126) Change NIC_MODE to impove latency if no offloaded
                 connection is present

        Change:  As requested

    2.  Request: Support dual-media configuration with swapped phy configuration

        Change:  As requested.

        Impact:  Dual media board

    3.  Request: Split speed and duplex parameters into two media

        Change:  As requested

    4.  Request: Support powering down the BCM84823 copper core when phy
                 configuration is set to second_port

        Change:  As requested

        Impact:  BCM84823 dual-media

    5.  Request: Add support for 4-port mode device

        Change:  As requested

        Impact:  57712

    6. Request:  Add support for force 1G for KR triggered by new nvm cfg
                 option 127: "Force KR enabler"

       Change:   As requested

       Impact:   KR(BCM8073)

    7. Request:  Add support for Client Setup ramrod

       Change:   Use FW 6.0.15

    8. Request:  Cleanup VLAN related code

       Change:   As requested

    9. Request:  Add TCP Out-Of-Order support in iSCSI Firmware

       Change:   As requested (in FW 6.0.14)

    10.Request:  Increase L2 clients from 26 clients to 28 in order to support
                 iSCSI Out of Order in multi function mode

       Change:   As requested (in FW 6.0.15)

    11.Request:  Added client_init_ramrod_data struct, in order to decouple
                 between driver and firmware client-related structures

       Change:   As requested (in FW 6.0.15)

    12.Request:  Support changing COS and vlan priority updates according
                 to DCB in L2 TX firmware

       Change:   As requested (in FW 6.0.15)

    13.Request:  (FCoE) Support stop traffic\start traffic flow control ramrods

       Change:   As requested (in FW 6.0.15)


Version 1.60.10 (Mar 8, 2010)
==============================
**** This release doesn't support big-endian architecture ****
    Fixes
    -----
    1.  Problem: CFC HW attention was popping up on 57710 and 57711
                 when interface was closed

        Cause:   bnx2x_pf_disable() was called for all types of chips

        Change:  Call bnx2x_pf_disable() for 57712 only

        Impact:  Introduced in 1.60.08; applies for 57711 and 57710 only

    2.  Problem: (FCoE) PFC didn't function properly

        Cause:   Bad values of LLFC watermarks

        Change:  Set LLFC watermarks to proper values

        Impact:  57712 PFC only

    3.  Problem: Limiting the number of queues with the num_queues module
                 parameter to a number smaller then the number of CPUs renders
                 the driver inoperable.

        Cause:   The RX RSS indirection table is initialized with bad values.

        Change:  Fixed the indirection table initialization

        Impact:  Introduced in 1.60.01

    4.  Problem: VF load for VFs with id greater then 3 crashes the host driver.

        Cause:   The host driver failed to allocate the HW-context for such VFs.

        Change:  Fixed the host driver VF HW-context allocation for VFs.

        Impact:  57712 IOV only

    5.  Problem: (CQ45880, CQ46008) On 57712 incorrect statistic information
                 is displayed for ethtool/ifconfig

        Cause:   Reading the information from incorrect memory region

        Change:  Fixed region and registers addresses

        Impact:  57712 only

    6.  Problem: (CQ46197) Compilation error on system with undefined value of
                 CONFIG_PCI_MSI

        Cause:   Code was not compiled due to undefined value

        Change:  Removed dependency on this value

        Impact:  Introduced in 1.60.06

    7.  Problem: BCM84823 Copper link doesn't come up

        Cause:   Starting from firmware 2.20, BCM84823 enforces the XGXS to
                 link first with the BCM84823 before it triggers LASI.

        Change:  Set the appropriate flag for the 84823 which enforce XGXS
                 initialization before external link is up

        Impact:  BCM84823(copper)

    8.  Problem: CQ45718: Driver crash after driver load

        Cause:   Driver was sending a relatively new command to a bootcode which
                 doesn't support it. This command in unfamiliar with this
                 bootcode, and should only be sent to bootcode which support it.

        Change:  Send this command only to bootcode which support it.

        Impact:  SFP+ only

    9.  Problem: Some error statistics weren't counted correctly

        Cause:   The statistics address was miscalculated

        Change:  Fixed address calculation (in FW 6.0.11)

        Impact:  Introduced in 1.60.06 (FW 6.0.3)

    10. Problem: iSCSI firmware broken

        Cause:   TCP layer interface was changed

        Change:  Applied new TCP interface to iSCSI firmware (in FW 6.0.11)

        Impact:  Introduced in 1.60.07 (FW 6.0.4)

    11. Problem: Possible permanent locking of Tx queue

        Cause:   There was a memory barrier missing after tx_cons update

        Change:  Added a missing barrier

    12. Problem: Possible "queue is alive while ring is full" situation

        Cause:   bnx2x_start_xmit() may have run and locked the queue while
                 bnx2x_tx_int() has decided that it may unlock it

        Change:  Take tx_lock while deciding to unlock the queue



    Enhancements
    ------------
    1.  Request: Add clarification for int_mode driver parameter

        Change:  Description fixed; Unnecessary define removed

    2.  Request: Support MAC partitioning mode (Multi function based on
                 MAC classification)

        Change:  As requested

        Impact:  57712 only (when set to MAC partitioning mode)

    3.  Request: Use FW 6.0.12

        Change:  As requested

    4.  Request: Use the upstream printouts and mcast iterators semantics

        Change:  As requested



Version 1.60.09 (Feb 22, 2010)
==============================
    Fixes
    -----
    1.  Problem: (CQ46006) NIG test A36 failed if the driver was loaded before

        Cause:   Configuration of PGLUE_B register with wrong value, while reset
                 value is good

        Change:  Remove erroneous configuration

        Impact:  57712 only

    2.  Problem: (CQ45648) driver asserts while trying to unload/load iSCSI/FCoE

        Cause:   internal firmware resources were not cleaned properly by driver
                 upon unload

        Change:  (Fixed in FW 6.0.8) offset was generated for slow path sync
                 line index

        Impact:  57712 only

    3.  Problem: (FCoE) Terminate handler will not complete

        Cause:   Race between timer expiration and terminate handler invocation

        Change:  (Fixed in FW 6.0.8)

        Impact:  57712 only

    4.  Problem: (CQ46052) Compilation warning on older kernels ("warning:
                 assignment discards qualifiers from pointer target type")

        Cause:   The compilation condition regarding the kernel version was
                 mistakenly changed

        Change:  Change the kernel version condition

        Impact:  Introduced in 1.60.08

    5.  Problem: (FCoE) (CQ45915): Second CNIC interrupt was never arriving
                 when working with port 1

        Cause:   Wrong SB ID was used in CNIC functions sending ACK to IGU

        Change:  Added IGU_SB_ID to CNIC interface, fixed CNIC functions
                 sending ACK to IGU to use the new index

        Impact:  Has been introduced in T6.0

    Enhancements
    ------------
    1.  Request: For 57712 add support for switch-independent mode

        Change:  As requested

    2.  Request: Add per-path licensing support

        Change:  (In FW 6.0.9) Support BCM57712 address scheme

        Impact:  57712 only

    3.  Request: Minimize DMA transaction to improve PCIE latency

        Change:  (In FW 6.0.9) Packet placement is done in single DMA command
                 instead of two

    4.  Request: Constant pause avoidance

        Change:  (In FW 6.0.9) Timeout for pause sending was added. Un-pause
                 message will be sent upon timeout expiration. (Timeout default
                 is 1 minute, can be set up to 5 minutes by the driver)

        Impact:  57711/57711E/57712 only

    5.  Request: Use FW 6.0.9

        Change:  As requested

        Impact:  iSCSI is not functional in this version

Version 1.60.08 (Feb 18, 2010)
==============================
**** iSCSI is not functional in this version ****
    Fixes
    -----
    1.  Problem: (CQ45963,CQ45962) DCBX IOCTL shows unusual values for
                 admin_configuration_ets_pg, admin_pfc_bitmap

        Cause:   Admin section was initialized with incorrect values

        Change:  Choose correct init values

    2.  Problem: (CQ45961,CQ45960) DCBX IOCTL shows incorrect values for
                 admin_dcbx_enable, dcb_enable

        Cause:   The parameters were ignored by driver

        Change:  Add handling for the parameters

    3.  Problem: (CQ45763, CQ45799) On 57712 a request can be sent on a disabled
                 function

        Cause:   Request sent from timers block that scans function 6/7 when
                 function 2/3 scan off is set

        Change:  Workaround in the driver that assures that if the timers starts
                 scanning for function 6/7 nothing fatal will occur

        Impact:  57712 only

    4.  Problem: (CQ45973) On 57712 bringing up interface caused DMAE timeout

        Cause:   Initialization of function not performed properly

        Change:  Enable function in PGLUE_B module before accessing DMAE

        Impact:  57712 only

    5.  Problem: In KR board type, when loading the first port first, it causes
                 the other port's link not to come up.

        Cause:   BCM8073 requires that the second port's firmware will be loaded
                 first.

        Change:  Always load the first phy port's firmware

        Impact:  57712 only and KR only


    Enhancements
    ------------
    1.  Request: Replace references to cnic_drv.h with cnic_if.h

        Change:  As requested

    2.  Request: Add DRV_CTL_{START,STOP}_L2_CMD capabilities to drv_ctl()

        Change:  As requested

    3.  Request: Update cnic driver with SP_SB information

        Change:  As requested

    4.  Request: Add handling for iscsi mac addresses during registrer_cnic()
                 unregister_cnic() and chip_cleanup()

        Change:  As requested


Version 1.60.07 (Feb 11, 2010)
==============================
**** iSCSI is not functional in this version ****
    Fixes
    -----
    1.  Problem: (CQ45674) Warning message was displayed when modprobe bnx2x
                 "bnx2x_get_hwinfo ..."

        Cause:   Inappropriate printing level for the message used

        Change:  Set correct level

    2.  Problem: BCM8073 wasn't initialized during common init

        Cause:   In 57712, the second port is actually port0 of the second path,
                 and it wasn't treated like that.

        Change:  Initialize port0 of both paths of BCM8073 during common init

        Impact:  57712 only and KR only

    3.  Problem: PCIE-X link speed is not displayed correctly for 57712

        Cause:   Misinterpretation of link speed encoded value

        Change:  Fixed for 57712

        Impact:  57712 only

    4.  Problem: Performance drop on high-PPS scenarios with new HC code

        Cause:   New HC flow was overloading a HW buffer and caused back
                 pressure on on-chip processors

        Change:  (In FW 6.0.6) Remove some of the HW buffer uses

        Impact:  introduced in 1.60.01 (FW 5.3.19)

    5.  Problem: (CQ45499) HW attention at BCM57710 stress test

        Cause:   New HC flow could cause HW bug by using illegal timers command

        Change:  (In FW 6.0.6) Remove the use of timers command, instead use
                 aggregated interrupts

        Impact:  introduced in 1.60.01 (FW 5.3.19) BCM57710/BCM57711 only

    6.  Problem: Change MTU causes L4 traffic to stop

        Cause:   Status Block of cnic driver was not updated during nic_load

        Change:  Add cnic SB update

        Impact:  Introduced in 1.60.01


    Enhancements
    ------------
    1.  Request: Use FW 6.0.7

        Change:  As requested

        Impact:  iSCSI is not functional in this version


Version 1.60.06 (Feb 4, 2010)
==============================
**** This version requires bootcode 6.0.6 or above for BCM57712 ****

    Fixes
    -----
    1.  Problem: FCoE wasn't receiving mcast packets, including FIP packets
                 sent to ALL_ENODE_MACS address

        Cause:   There was DROP_ALL_MCAST flag set to FCoE L2 client

        Change:  Set ACCEPT_MCAST flag to FCoE L2 client that will make it
                 receive only matched mcast packets

    2.  Problem: Path1 shared memory data run over Path0 configuration

        Cause:   The register that marks the beginning of the shared memory is
                 global rather than split per path

        Change:  Use different registers to mark the beginning of the shared
                 memory per path.

        Impact:  57712 only

    3.  Problem: bnx2x stopped receiving on the VLAN after MTU change

        Cause:   VLAN removal flag was not configured after reloading FW
                 during change MTU flow

        Change:  Configure VLAN removal flag if needed after MTU change

    4.  Problem: drivers enter infinite loop during crash dump

        Cause:   lack of parentheses in loop expression

        Change:  add parentheses

    5.  Problem: (iSCSI)(CQ45150) OIS Assert occurred after attempting to
                 login to iSCSI target

        Cause:   Firmware bug

        Change:  Fixed in FW 6.0.2

    6.  Problem: (FCoE)(CQ44937) Data corruption after forcing FC-CRC error

        Cause:   Hardware bug when detecting CRC error on FCoE data placement

        Change:  (Fixed in FW 6.0.3) Firmware workaround - Send 64 DMA dummy
                 write commands in order to prevent the false error from
                 appearing

    7.  Problem: 57712 4-port mode doesn't link up

        Cause:   XGXS wasn't actually configured in this mode since the
                 current MD_DEVAD used didn't work.

        Change:  Use different MD_DEVAD when working with the E2 XGXS

        Impact:  57712 only

    8.  Problem: 57712 4-port D2 nic test(internal loopback test) fail

        Cause:   Loopback was set as 10G instead of 1G loopback

        Change:  When speed selection is 1G, set 1G loopback, otherwise
                 set 10G loopback.

        Impact:  57712 only


    Enhancements
    -----------
    1.  Request: Add support for KVM SR-IOV (BCM57712 and onwards)

        Change:  As requested

    2.  Request: Add support for VF devices

        Change:  As requested

    3.  Request: Update README.TXT and manpages with GRO dependency on 8021q
                 module

        Change:  As requested

    4.  Request: Use FW 6.0.3

        Change:  As requested

Version 1.60.04 (Jan 26, 2010)
==============================

    Fixes
    -----
    1.  Problem: (CQ43831) Driver error reports while loading/unloading under
                 DCC traffic

        Cause:   A race condition between disabling the incoming traffic when
                 unloading and DCC enabling the link

        Change:  Changed DCC enable/disable commands to use a different register
                 setting that will not interfere with normal unload sequence

    2.  Problem: Driver load under DCC traffic might fail

        Cause:   Lack of lock between driver load command and DCC ack command

        Change:  Add mutex to protect the FW mailbox

    3.  Problem: ifconfig up reported error while using bootcode 6.0.1

        Cause:   Lack of lock between DCBX init command and response handling

        Change:  Add mutex to protect the FW mailbox

    4.  Problem: FW asserts while unloading/loading under DCC enable/disable
                 commands

        Cause:   DCC disable command changed the driver internal state and might
                 overrun state changes which are initiated by the load/unload
                 sequence. This caused the driver to be out of sync with the FW

        Change:  DCC disable/enable command uses different flag and not the
                 driver state

    5.  Problem: Error message is printed when failing to obtain MSI-X vectors

        Cause:   When trying to work in multi-mode and not getting enough MSI-X
                 vectors, the driver printed an error message indicating that
                 it will use a single queue

        Change:  Since this is a valid condition, the print is allowed under
                 specific messages level only

    6.  Problem: port 1 of 57712 can't initialize correctly

        Cause:   driver accessed incorrect shmem addresses

        Change:  fixed

        Impact:  57712/57712E only

    7.  Problem: 57712 link is not up

        Cause:   There's difference in AER strapping between 57711 and 57712

        Change:  Set the XGXS AER to the appropriate value according to the
                 new XGXS model

        Impact:  57712 only


Version 1.60.03 (Jan 20, 2010)
==============================

    Fixes
    -----
    1.  Problem: Unresolved symbols during compilation on 32bit platforms

        Cause:   Improper initialization of variable with FP symbol

        Change:  Using integer constant instead

        Impact:  Introduced in 1.60.01

    2.  Problem: MF dead in the water for 57711

        Cause:   Improper initialization of the FW caused it to hang

        Change:  Fixed initialization

        Impact:  Introduced in 1.60.01

    3.  Problem: HC not enabled for port 1

        Cause:   Improper initialization the HC in the FW

        Change:  Fixed initialization

        Impact:  Introduced in 1.60.01

    4.  Problem: (iSCSI) Unexpected chip behavior when padding is splitted
                 into 2 or 3 parts

        Cause:   Firmware bug when aligning split padding

        Change:  Firmware was fixed

        Impact:  Problem exists in all previous releases

    5.  Problem: (iSCSI) False data digest error when data digest is splitted
                 into 3 parts

        Cause:   Firmware bug when aligning split padding

        Change:  Fixed in FW 6.0.1

        Impact:  Problem exists in all previous releases

    6.  Problem: (FCoE) (CQ45025) False REC_TOV timer expiration

        Cause:   Timer was not reset when a task that supports REC_TOV was
                 replaced by task that didn't

        Change:  (Fixed in FW 6.0.1) When new task begin, we set the timer if
                 it supports REC_TOV and reset timer if he doesn't

        Impact:  Problem exists in all previous releases

    7.  Problem: (FCoE) Connection cache was not initialized properly and
                 REC_TOV\E_D_TOV timers weren't disable after all functions
                 destroyed

        Cause:   Wrong calculation of number of active functions

        Change:  (Fixed in FW 6.0.1) Add designated counter for number of
                 active functions

        Impact:  Problem in BCM57712 only

    8.  Problem: MSI-X vectors request in repeating ifup/ifdown test case
                 fail due to not sufficient amount of resources

        Cause:   MSI-X/MSI were not disabled if ifup failed due to lack of memory

        Change:  Properly release allocated MSI-X/MSI vectors if ifup failed
                 due to lack of memory

    Enhancements
    -----------
    1.  Request: Remove GRO dependency on kernel version

        Change:  Replaced with dependency on NETIF_F_GRO flag

    2.  Request: Integrate with bootcode 6.0.0 and above for proper handling
                 of phy initialization in 57712 2-PORT-MODE

        Change:  As requested

    3.  Request: (CQ39624) Provide detailed statistics with ethtool -S eth<x>

        Change:  As requested

    4.  Request: Add compatability of GRO feature with RH5.4 systems

        Change:  As requested

    5.  Request: Improve performance of new HC code (submitted in firmware
                 5.3.19). Cut the storm utilization by 50%

        Change:  As requested (in FW 6.0.1)

    6.  Request: Add ability to control BCM8073 PN polarity swap through nvm
                 configuration

        Change:  As requested.

    7.  Request: Use GPIO3 to take BCM84823 phy out of reset

        Change:  As requested.

    8.  Request: Use FW 6.0.1

        Change:  As requested.

    9.  Request: Add support for FCoE to older kernels
                 (e.g. RH5.4 in-the-box kernel)

        Change:  As requested.


Version 1.60.02 (Jan 12, 2010)
==============================

    Fixes
    -----
    1.  Problem: Self-test didn't work on kernels newer than 2.6.25

        Cause:   There was missing a new way to report the number of tests

        Change:  Added a support for a new way to report a number of tests
                 when compiled against new kernels

    2.  Problem: (iSCSI)(CQ45150) OIS assert @
                 [bxois!HandleConnectionCqeWorkitem+429] when trying to logon
                 to iscsi target

        Cause:   Firmware bug

        Change:  Fixed in FW 5.3.20.1

        Impact:  Problem exists only in release T6.0


    Enhancements
    -----------
    1.  Request: Add VLAN GRO support

        Change:  As requested

    2.  Request: Use FW 5.3.20.1

        Change:  As requested


Version 1.60.01 (Jan 12, 2010)
==============================

    Fixes
    -----
    1.  Problem: 57712 emulation failed to run in 4 domains 10G mode
                 (debug only)

        Cause:   Driver accidently accessed non-existing EMAC

        Change:  Remove access to EMAC register in case of emulation

    2.  Problem: In dual-media, only the SFP+ module on the first phy is checked

        Cause:   Insufficient support in SFP+ module checking

        Change:  Modify SFP+ module API verification to include parameter
                 indicating the exact phy.

        Impact:  Whenever driver send command to the bootcode, it will now also
                 send parameter. Bootcode will treat this parameter only when it
                 is relevant

    3.  Problem: (FCoE) Chip hangs while running normal rd/wr operations

        Cause:   RX Doorbell was not handled properly

        Change:  (Fixed in FW 5.3.18) Handling the case where receiving false
                 RX doorbell

    4.  Problem: (FCoE) (CQ44936, CQ44937) Data corruption during
                 read/write/compare test

        Cause:   Error was not detected by FW since it was short FCP_RSP packets

        Change:  (Fixed in FW 5.3.20) Checking if received the amount of data
                 when receiving this format of FCP_RSP

    5.  Problem: (FCoE) (CQ44936, CQ44937) Data corruption during
                 read/write/compare test

        Cause:   When packet with invalid CRC detected, task context isn't
                 reverted to previous valid state

        Change:  (Fixed in FW 5.3.20) on detection of packet with invalid CRC,
                 task cached context isn't write back to memory

    6.  Problem: (iSCSI) Chip hangs when running iSCSI read traffic

        Cause:   Miscalculation of HW commands when SGEs are not 64-bytes
                 aligned

        Change:  (Fixed in FW 5.3.20) Fixing FW calculation of SGE alignment
                 and fields in HW command

    7.  Problem: (FCoE) Upper layer didn't know which MAC to use during
                 DCBX negotiation.

        Cause:   Proper MAC (SAN) was not set in the netdev.

        Change:  Call dev_addr_add() with the proper MAC and SAN type.

    8.  Problem: (FCoE) FIP packets were not ruled by the PFC FC.

        Cause:   FIP packets were arriving on a regular L2 client.

        Change:  Set a different MAC to the FCoE L2 client.


    Enhancement
    -----------
    1.  Request: Changed the doorbell size (the stride between consecutive
                 doorbells' addresses) from 4K to 128

        Change:  As requested

    2.  Request: Add support for dual-media board type

        Change:  Redesign the CLC to be able to handle multi-phy boards.
                 Rename clc/CLC to elink/ELINK.
                 Driver is required to probe the phys on board before
                 initializing the link.
                 Specific phy access will be done using "phy" structure.
                 Common access will go over all phys on board and execute the
                 command on them.

        Impact:  From now on, high level driver will not be familiar with the
                 phys on-board. For every phy access, it is required to use the
                 elink API, or add new one.

    3.  Request: Having the ability to pass data from the Tstorm to the driver
                 over the SGL in fast_path_cqe (required for iSCSI Out-Of-Order)

        Change:  As requested (in FW 5.3.20)

    4.  Request: Use FW 5.3.20

        Change:  As requested

    5.  Request: Add DCBX support for 57711

        Change:  As requested

    6.  Request: Remove #ifdef CONFIG_PCI_MSI sections from code

        Change:  Removed #ifdef CONFIG_PCI_MSI sections. Left the code that was
                 compiled when this (CONFIG_PCI_MSI) macro has been defined.

Version 1.53.14 (Dec 7, 2009)
==============================

    Enhancement
    -----------
    1.  Request: (CQ41760) Use more generic log message in case of fan failure

        Change:  As requested

    2.  Request: (CQ43089) Add VPD-R V0 entry to displayed firmware revision in
                 ETHTOOL

        Change:  As requested

    3.  Request: Use FW 5.3.17

        Change:  As requested

    4.  Request: Enable parity errors recognition and recovery.

        Change:  First implementation of parity error recovery flow. Currently
                 only "process kill" is supported. Parity errors are currently
                 disabled for E1 until the proper changes are done to init
                 tool.

Version 1.53.13 (Nov 17, 2009)
==============================

    Fixes
    -----
    1.  Problem: Improper initialization of MF/SF causes driver to stall

        Cause:   Using uninitialized values of fpid

        Change:  Using fpid moved to later stages after its initialization

        Impact:  None


Version 1.53.12 (Nov 16, 2009)
==============================

    Fixes
    -----
    1.  Problem: CQ41232: Management gets incorrect AN and FC bit values.

        Cause:   FC wasn't updated correctly during link up event

        Change:  Extract all status_link information correctly

        Impact:  None

    2.  Problem: CQ36401: Excessive link down messages when driver is unloaded

        Cause:   Link event is reported for every link event, even when link
                 is not changed

        Change:  Do not report link change unless there's actually link link
                 change

        Impact:  None

    3.  Problem: BCM8481 doesn't negotiate FC capabilities

        Cause:   FC capabilities weren't advertised during phy initialization

        Change:  Set BCM8481 FC capabilities during init stage

        Impact:  None

    4.  Problem: (FCoE) Completions are not arrived on open tasks

        Cause:   Connection does not register to QM since SQ producer/consumer

        Change:  Fixed in FW 5.3.14: Set BCM8481 FC capabilities during
                 init stage

        Impact:  None


    Enhancement
    -----------
    1.  Request: Support bootcode on 57712

        Change:  As requested

        Impact:  577712 Only

    2.  Request: Allocate available MSI-X vectors in normal mode

        Change:  As requested

        Impact:  None

    3.  Request: Use multi cpu rx when using msix in kernels without new napi

        Change:  As requested

        Impact:  None

    4.  Request: support correct number of iSCSI and FCoE sessions in the HW
                 initializations

        Change:  As requested

        Impact:  None

    5.  Request: support any number of L2 queues in the HW
                 initializations

        Change:  As requested

        Impact:  None

    6.  Request: Hanlde both Tx and Rx in NAPI

        Change:  As requested

        Impact:  None

    7.  Request: Support 4-port mode for 57712

        Change:  As requested

        Impact:  None

    8.  Request: Use FW 5.3.14

        Change:  As requested

        Impact:  None

Version 1.53.11 (Nov 11, 2009)
==============================
    Fixes
    -----
    1.  Problem: When iptable_nat module is installed on RH4, traffic halts

        Cause:   iptable_nat on RH4 requests for GSO without asking for csum
                 offload

        Change:  When configuring the HW/FW to GSO, always configure csum
                 offload as well

    2.  Problem: (FCoE) Chip hanged during data placement

        Cause:   Thread started placing data before verifying the task type

        Change:  Fixed in FW 5.3.13: verify task type is match to read in
                 FCP_DATA before placement

        Impact:  None

    3.  Problem: (CQ44328) (FCoE) Chip hanged after error was detected

        Cause:   Thread was waiting for CRC result instead
                 of releasing the packet

        Change:  Fixed in FW 5.3.13: Release the packet if an error occurred
                 during data placement

        Impact:  None

    Enhancement
    -----------
    1.  Request: Use FW 5.3.13

        Change:  As requested

        Impact:  None


Version 1.53.10 (Nov 08, 2009)
==============================

    Enhancement
    -----------
    1.  Request: Use FW 5.3.12

        Change:  As requested

        Impact:  None

Version 1.53.9 (Oct 27, 2009)
==============================

    Fixes
    -----
    1.  Problem: ethtool -t ethX FAILED

        Cause:   test_registers() accessed registers without mask

        Change:  Added mask for write access

        Impact:  None

Version 1.53.8 (Oct 26, 2009)
==============================

    Enhancement
    -----------
    1.  Request: Use FW 5.3.10

        Change:  As requested

        Impact:  None

Version 1.53.xx (Oct xx, 2009)
==============================

    Enhancement
    -----------
    1.  Request: Improve times for ifconfig up/down (slow 57712 chip revision)

        Change:  As requested

        Impact:  None

Version 1.53.xx (Oct xx, 2009)
==============================

    Enhancement
    -----------
    1.  Request: Add support for EMAC loopback for FPGA

        Change:  As requested

        Impact:  None

Version 1.53.7 (Oct 22, 2009)
==============================

    Enhancement
    -----------
    1.  Request: Use FW 5.3.9

        Change:  As requested

        Impact:  None

    2.  Request: Remove compilation flag for
                 BCM57712/BCM57712E/BCM57713/BCM57713E

        Change:  As requested

        Impact:  None

Version 1.53.6 (Oct 21, 2009)
==============================

    Enhancement
    -----------
    1.  Request: 57712 multifunction support

        Change:  As requested

        Impact:  None

Version 1.53.5 (Oct XX, 2009)
==============================

    Fixes
    -----
    1.  Problem: Failed to build bnx2x in chroot build environment

        Cause:   The Makefile attempted to run with -j flag to utilize all CPU
                 in the system and in chroot environment it resulted with "-j 0"

        Change:  The Makefile should not force the -j option. Removed this
                 feature

        Impact:  Without explicitly providing the -j flag when compiling the
                 driver, the compilation will consume more time

Version 1.53.4 (Oct 11, 2009)
==============================

    Fixes
    -----
    1.  Problem: Priority Flow Control on BCM57711 showed low performance

        Cause:   Transmitted Xon PFC packet was malformed. PriorityEnableVector
                 field in PFC packet was set to zero instead of the relevant
                 priorities. This caused to remote peer to wait longer until
                 timers expired to Xon again

        Change:  Fixed in FW 5.3.8: set properly PriorityEnableVector in Xon
                 PFC packet

        Impact:  None


    2.  Problem: (CQ43517) SLES11u0 iSCSI: SUT hangs when unexpected FIN packet
                 was received under traffic

        Cause:   FW erroneously increased activity counter

        Change:  Fixed in FW 5.3.8: condition for activity counter increment
                 fixed

        Impact:  None


    3.  Problem: (CQ43517) SLES11u0 iSCSI: SUT hangs when unexpected SYN packet
                 was received under traffic

        Cause:   TCP reset initiated by FW caused endless wake ups for FW

        Change:  Fixed in FW 5.3.8: changed setting of FW internal flags

        Impact:  None


    4.  Problem: iSCSI offload: Memory sanity of thread check fail during Query
                 ramrod

        Cause:   During Query ramrod, when FW prepared the context for upload
                 on the scratchpad, it exceeds the thread scratchpad boundary

        Change:  Fixed in FW 5.3.8: use the scratchpad within the thread
                 boundary only

        Impact:  None


    5.  Problem: iSCSI offload: TCP Close failed

        Cause:   Bug in byte credit update during termination

        Change:  Fixed in FW 5.3.8

        Impact:  None


    6.  Problem: FCoE INIT ramrod was never completed

        Cause:   Reading from inappropriate VQ in Tstorm

        Change:  Fixed in FW 5.3.8: reading from to the correct VQ

        Impact:  None


    Enhancement
    -----------
    1.  Request: BCM577xx support for FW 5.3.8

        Change:  As requested

        Impact:  None


    2.  Request: Adding support broadcast and multicast received packets in
                 L2 switch independant mode

        Change:  In FW 5.3.8 as requested

        Impact:  None


Version 1.53.3 (Oct xx, 2009)
==============================

    Fixes
    -----
     1. Problem: Only Tx queue 0 was used in default configuration on
                 kernel 2.6.30 and above

        Cause:   bnx2x_select_queue() was returning 0 by default

        Change:  Make bnx2x_select_queue() return stack tx_hash() by default

        Impact:  None


    Enhancement
    -----------
     1. Request: Add a separate L2 ring for FCoE L2 traffic

        Change:  As requested

        Impact:  None

Version 1.53.2 (Oct 8, 2009)
==============================

    Fixes
    -----
    1.  Problem: 57712 failed to receive data from network

        Cause:   Incorrect MAC type selected during initialization

        Change:  MAC initializaton fixed

        Impact:  None

    2.  Problem: 57712 failed to bring up interface

        Cause:   Unhandled attention interrupt caused processor to stall

        Change:  Added handling for new attentions

        Impact:  None

Version 1.53.1 (Oct 5, 2009)
==============================

    Enhancement
    -----------
    1. Request: 57712 support for FW 5.3.7

       Change:  As requested

       Impact:  None

Version 1.53.xx (Sep xx, 2009)
==============================

    Enhancement
    -----------
    1. Request: When PFC is enabled, set BigMAC to relay control packets to the
                system as well, and enable BigMAC to react on received Pause
                packets

       Change:  As requested

       Impact:  None

Version 1.53.0a (Oct 1, 2009)
==============================

    Enhancements
    ------------
    1.  Request: Use FW 5.3.7

        Change:  As requested

        Impact:  None

    2.  Request: Add support for BCM57712 (by compilation flag)

        Change:  As requested

        Impact:  None

Version 1.51.0a (Sep 14, 2009)
==============================

    Fixes
    -----
    1. Problem: Enabling fairness algorithm in the middle of the run causes
                the function to stop transmitting.

       Cause:   The fairness credit is not initialized in this case.

       Change:  Change the fairness credit init value.

       Impact:  None.

    2. Problem: (CQ42873) No traffic when number of receive buffers is configured
                to 50 (the minimum) in the advanced properties page.

       Cause:   Firmware is always saving a CQE for each TPA aggregation.
                So in case less then 75 CQEs are on the ring, the firmware
                starts dropping packets.

       Change:  Check if TPA is enabled before deciding if to drop packet.
                If TPA is disabled save only 11 CQEs instead of 75.

       Impact:  None.

    Enhancements
    ------------
    1.  Request: Use FW 5.3.4

        Change:  As requested

        Impact:  None

Version 1.51.x (Aug xx, 2009)
=============================

    Fixes
    -----
    1.  Problem: Link is down with BCM8481 when connected to 1G device after
                 it was connected to 100M device

        Cause:   When link type changes from SGMII to GMII/XGMII, the SGMII
                 configuration wasn't removed

        Change:  Remove SGMII configuration in non-SGMII link type

        Impact:  None

     2. Problem: BCM8481 link is not able to link up after cable plug out/in

        Cause:   New BCM8481 image required new configurtion of the LED4 signal
                 which generate the interrupt

        Change:  Detect link down using the LED4 signal rathen than the BCM8481
                 registers

        Impact:  None

     3. Problem: Link is down with BCM8481 when connected to 1G device after
                 it was connected to 100M device

        Cause:   When link type changes from SGMII to GMII/XGMII, the SGMII
                 configuration wasn't removed

        Change:  Remove SGMII configuration in non-SGMII link type

        Impact:  None

     4. Problem: BCM8481 link is not able to link up after cable plug out/in

        Cause:   New BCM8481 image required new configuration of the LED4 signal
                 which generate the interrupt

        Change:  Detect link down using the LED4 signal rather than the BCM8481
                 registers

        Impact:  None

     5. Problem: Driver might read corrupted data from shared memory in case
                 bootcode is missing

        Cause:   Some pieces of code are not protected in case bootcode is
                 missing

        Change:  Add additional protection in case bootcode is missing

        Impact:  None

    Enhancements
    ------------
    1.  Request: When PFC enabled, pass pause frames towards the NIG

        Change:  As requested

        Impact:  None

    2.  Request: Improve FP performance

        Change:  Remove writing ACK to USTORM from Tx flow and to CSTORM from
                 Rx

        Impact:  None

    3.  Request: Handle fan failure for BCM8481 PHY

        Change:  As requested

        Impact:  None

    4.  Request: Once PFC is selected along with emac, it is required to set
                 BIT 3, KEEP_MAC_CONTROL, at emac register rx_mode.
                 Setting this bit causes MAC control frames (except for pause
                 frames) to be passed on for processing. This setting has no
                 affect on the operation of the pause frames.
                 This bit affects all packets regardless of RX Parser packet
                 sorting logic.

        Change:  As requested

        Impact:  None

    5.  Request: Use FW 5.1.23.1

        Change:  As requested

        Impact:  None

    6.  Request: Support kernel 2.6.31 (RC2)

        Change:  Use DMA_MAP macros and .ndo_select_queue

        Impact:  None

    7.  Request: (CQ41112) - PHY LED Programming for BCM8481 on BlackBird
                  (BCM957711A1100G) Production Board

        Change:  As requested

        Impact:  None

    8.  Request: Increase DMAE max write size for 57711/57711E

        Change:  As requested

        Impact:  None

    9.  Request: Not handling statistics in panic condition

        Change:  As requested

        Impact:  None

   10.  Request: Enhance bnx2x_panic_dump() - print SB data

        Change:  As requested

        Impact:  None

Version 1.52.2 (Aug 18, 2009)
=============================
    Fixes
    -----
    1.  Problem: (CQ42998) 57711E PF on OS linked even after unassigning
                 network in VC

        Cause:   ethtool reports the physical link status instead of PF OS
                 link status

        Change:  bnx2x_get_link() returns no link if driver is not in open
                 state

        Impact:  None

    2.  Problem: ethtool displays 57711E PF link speed as 0 in certain
                 scenario

        Cause:   VC assigned network and max bandwidth were not refreshed
                 during driver load

        Change:  Refresh the VC assigned network and max bandwidth during
                 driver load

        Impact:  None

    3.  Problem: syslog and kernel logs always report 57711E PF speed
                 as 10000 Mbps

        Cause:   bnx2x_link_report() reports the actual physical link speed
                 instead of the max bandwidth assigned to the PF

        Change:  Report the max bandwidth assigned to the PF

        Impact:  None

    4.  Problem: In some cases FW does not respond in time to driver requests
                 and thus driver load fails

        Cause:   For certain PHYs, FW might need some more time before
                 responding to driver request

        Change:  Increase the timeout up to 5 sec

        Impact:  None

    Enhancements
    ------------
    1.  Request: Set interrupt coalescing granularity to 4us instead of 12us

        Change:  As requested

        Impact:  None

    2.  Request: Change default interrupt coalescing numbers to supported
                 numbers

        Change:  Since the interrupt coalescing granularity is 4us, a value of
                 25 is actually configured as 24 to the HW

        Impact:  None

    3.  Request: Fix bnx2x_fw_dump() to compute trace start address based on
                 shmem offset

        Change:  As requested

        Impact:  None

Version 1.52.1 (Aug 12, 2009)
=============================
-- Upstream Version --
    Fixes
    -----
    1.  Problem: Link is down with BCM8481 when connected to 1G device after
                 it was connected to 100M device

        Cause:   When link type changes from SGMII to GMII/XGMII, the SGMII
                 configuration wasn't removed

        Change:  Remove SGMII configuration in non-SGMII link type

        Impact:  None

    2.  Problem: BCM8481 link is down after cable plug out/in

        Cause:   New BCM8481 image required new configuration of the LED4 signal
                 which generate the interrupt

        Change:  Detect link down using the LED4 signal rather than the BCM8481
                 registers

        Impact:  None


    3.  Problem: (CQ35477) Incorrect display of External Phy Firmware Version
                 for Everest XFP board.

        Cause:   External Phy Firmware Version for BCM8705 PHY used to display
                 0000:0000

        Change:  Change not to display PHY FW version

        Impact:  None

    4.  Problem: In BCM8727, spirom was loaded first on slave port, rather than
                 on the master port. This may lead to xaui pll issue.

        Cause:   Port-Swap wasn't considered when loading spirom to the BCM8727,
                 hence first the slave port was loaded with the spirom.

        Change:  First load the SPIROM to the master port.

        Impact:  None

   5.   Problem: Possible FW assert in driver unload/load test case

        Cause:   Possible race on statistics state machine state change

        Change:  Added a write barrier to ensure that the state change is
                 committed

        Impact:  None

    Enhancements
    ------------
    1.  Request: In promiscuous mode, pass management traffic to the host

        Change:  As Requested

        Impact:  None

    2.  Request: PCI drivers that implement the struct pci_error_handlers'
                 error_detected callback should return PCI_ERS_RESULT_DISCONNECT
                 if the state passed in is pci_channel_io_perm_failure

        Change:  As Requested

        Impact:  None

    3.  Request: (CQ41112) PHY LED Programming for BCM8481 PHY

        Change:  As requested

        Impact:  None

    4.  Request: (CQ41067) Add support for CL73 on XAUI

        Change:  As requested

        Impact:  None

Version 1.52.0 (Jul 28, 2009)
=============================

    Fixes
    -----
     1. Problem: Redundant settings of vlan_features at set_tso

        Cause:   There is no need to change vlan_features at set_tso since this
                 field is a capability field and not current settings

        Change:  Remove redundant code

        Impact:  None

     2. Problem: (CQ42550) No host traffic when NCSI is enabled on some systems

        Cause:   The driver did not set the required filtering flags and
                 received only traffic which was not intended for the BMC - on
                 some systems, this is not enough and the driver should enable
                 its own masking

        Change:  Setup the driver mask to receive traffic even when NCSI is
                 enabled

        Impact:  None

Version 1.50.13 (Jul 22, 2009)
==============================

    Enhancements
    ------------
    1.  Request: Update to FW 5.0.21

        Change:  As requested

        Impact:  None

Version 1.50.12 (Jul 16, 2009)
==============================

    Fixes
    -----
    1.  Problem: In some TPA aggregation cases, might go into TCP slow-start
                 instead of fast-retransmit

        Cause:   When TPA is used, pure ACK on open aggregation was aggregated

        Change:  (FW 5.0.20) Do not aggregate pure ACK packets in TPA

        Impact:  None

Version 1.50.11 (Jul 7, 2009)
=============================

    Fixes
    -----
    1.  Problem: Setting rx-usecs to the value less than 12 causes the
                 traffic to stop

        Cause:   Did not disable HC coalescing when set the coalescing timeout
                 to zero (coalescing timeouts are multiples of 12us)

        Change:  Disable HC coalescing, when timeout is set to the zero

        Impact:  None

    2.  Problem: Packet descriptors in NIG might get out of sync if management
                 egress traffic is pass through during self test

        Cause:   During loopback test management egress traffic might be routed
                 to the host and will not be cleared when exiting the diag mode

        Change:  Disable management egress traffic when driver is in diag mode

        Impact:  None

Version 1.50.10 (Jul 1, 2009)
=============================

    Fixes
    -----
    1.  Problem: (CQ42298) Management traffic does not resume after self test

        Cause:   Writing to the egress management FIFO during the memory test
                 interpreted as a start of a management packet and cause the
                 FIFO not to be empty

        Change:  Remove the write to the egress management FIFO from the self
                 test

        Impact:  None

    2.  Problem: Link up time takes too long with BCM8727 based NICs

        Cause:   EDC mode is not set automatically

        Change:  Set EDC mode manually according to the SFP+ module type
                 detected (Passive DAC / Active DAC / LC-LRM / LC-SR / LC-LR)

        Impact:  None

    3.  Problem: (CQ41567) In BCM8727 based NICs, when SFP+ module is not
                 plugged, there is continuous messages of Link Down

        Cause:   The EDC tries to process the Rx data/noise because its OPRXLOS
                 input signal is false (low), indicating an Rx signal is
                 present.

        Change:  Perform 'Or' of the Active Module Absent Level with the Active
                 Laser Loss of Light Level. This way we tell the EDC not
                 process Rx data/noise when the module is not present.

        Impact:  None

Version 1.50.9 (Jun 25, 2009)
=============================

    Fixes
    -----
    1.  Problem: Low throughput when using VLAN on kernel 2.6.26 or above

        Cause:   New VLAN_features field in struct net_device was not
                 initialized hence no offload capabilities were available with
                 VLAN

        Change:  Initialize VLAN_features field in struct net_device

        Impact:  None

    2.  Problem: No event log in case fan failure occured prior to loading the
                 driver

        Cause:   The event was not detected since it was already set when the
                 driver was loaded

        Change:  Check for the event on load time

        Impact:  None

    3.  Problem: Loopback test in self test might fail in case NCSI is enabled

        Cause:   NCSI egress traffic is received instead of the loopback test
                 packets

        Change:  Disable NCSI egress traffic during loopback test

        Impact:  None

    4.  Problem: ethtool reports link up when the device is down

        Cause:   Bug in ethtool_op_get_link()

        Change:  Use bnx2x_get_link() instead

        Impact:  None

    5.  Problem: 57711E WoL does not work if only one function per port was
                 active prior to shutdown

        Cause:   WoL is configured to work in SF mode

        Change:  Set the chip back to SF mode (so WoL will work) even if only
                 one function was loaded per port in MF mode

        Impact:  None

Version 1.50.8 (Jun 8, 2009)
============================

    Fixes
    -----
    1.  Problem: When running many TCP connections (>200) on both ports, some
                 connections hangs

        Cause:   When all TPA aggregations are occupied, FW can override the RX
                 CQE consumer of the other port

        Change:  Fix in FW 5.0.18: reload the RX CQE consumer from RAM after TPA
                 handler breaks to sleep

        Impact:  None

    2.  Problem: CL73 enhancement causes link down

        Cause:   Unknown

        Change:  Revert CL73 enhancement until problem resolved

        Impact:  None

Version 1.50.7 (Jun 4, 2009)
============================

    Fixes
    -----
    1.  Problem: (CQ41533) Unapproved modules behavior is not enforced according
                 to nvram configuration

        Cause:   In case the module was not approved, the function quit before
                 enabling the Tx laser - so even when set to warning, there was
                 no link. When set to power off the module, there was continues
                 false indication of over current when the module was extracted

        Change:  When set to warning - enable the module. Validate that the
                 module is present before checking for over current indication

        Impact:  None

    2.  Problem: The coalescing timeout value displayed by `ethtool' is
                 different for the one used by the FW

        Cause:   The limitation for coalescing timeout values in driver's
                 `ethtool -C' callback was wrong

        Change:  Fix the limitation for coalescing timeout in `ethtool -C'
                 callback

        Impact:  None

    Enhancements
    ------------
    1.  Request: Reduce the number of cache misses in a fast path

        Change:  Avoid extra cache miss by updating `trans_start' from inside
                 start_xmit()  as long as it's done by the core network layer
                 starting from kernel 2.6.31

        Impact:  None

    2.  Request: (CQ41067) Add 5771x CL73 support

        Change:  As requested

        Impact:  Everest is now able to link with devices which operate in CL73
                 alone / CL37 alone / or both

    3.  Request: Make 8727 over-current behavior code more efficient

        Change:  As requested

        Impact:  None

Version 1.50.6 (Jun 1, 2009)
============================

    Fixes
    -----
    1.  Problem: In 8727, after power-fault occurred and the driver is
                 unloaded and then reloaded, the interrupt is not cleared

        Cause:   In this scenario, the mod_abs mode remain in "wait for
                 module plugged in", so interrupt was not cleared

        Change:  Set module_absent to wait for module absent scenario

        Impact:  None

    2.  Problem: There is no need to read the warning string for un approved
                 modules from the FW/nvram

        Cause:   This is over design that cause unnecessary overhead - a
                 constant string can be used

        Change:  Use constant warning string instead of receiving it from
                 FW/nvram

        Impact:  Warning message is not to be used in the modules nvram file

    3.  Problem: High CPU usage in bnx2x_free_tx_pkt()

        Cause:   prefetch(skb_shinfo(skb)) implied immediate cache miss when
                 NET_SKBUFF_DATA_USES_OFFSET is enabled

        Change:  Replaced prefetch(skb_shinfo(skb)) by prefetch(&skb->end).
                 This would prefetch only the first one from two cache misses
                 needed for reading of skb_shinfo(skb)->nr_frags, which is
                 needed by dev_kfree_skb(skb), but it will do it in a
                 background avoiding an immediate CPU stall

        Impact:  None

    Enhancements
    ------------
    1.  Request: Add support for BCM8727 without over current detection
                 (BCM8727_NOC)

        Change:  As requested

        Impact:  None

Version 1.50.5 (May 26, 2009)
=============================

    Fixes
    -----
    1.  Problem: (CQ38975) Failed to setup leading connection after
                 a lot of iterations of "down-up" test. Workaround for CQ37893
                 (Use INTx mode when MSI-X fails due to memory allocation
                 failure) was broken

        Cause:   bnx2x_set_int_mode() wasn't returning a status, thus there
                 was no way to catch a mentioned above memory allocation
                 failure

        Change:  Return a status from bnx2x_set_int_mode()

        Impact:  None

    2.  Problem: (CQ41349) Linux panic when disabling RX chksum and running RX
                 traffic

        Cause:   TPA enabled option was not controlled per function/queue level

        Change:  FW fix in version 5.0.16: TPA enabled is now controlled per
                 function/queue level

        Impact:  None

    3.  Problem: (CQ41434) ethtool -S <NIC> was printing junk on kernels with
                 RSS support

        Cause:   There was a bug in function returning number of lines in
                 device statistics bnx2x_get_stats_count - it was returning
                 more than there actually were)

        Change:  Make bnx2x_get_stats_count return the correct number

        Impact:  None


    Enhancements
    ------------
    1.  Request: Support approved module list and warn if the module is not on
                 the list

        Change:  This feature requires bootcode 5.0.6 or later and a valid
                 optic modules image on the nvram. The feature is controlled by
                 nvram option 81

        Impact:  None

    2.  Request: Allow enabling and disabling the fan failure mechanism for
                 different PHY types

        Change:  Determine if fan failure enforcement is required according to
                 nvram configuration. The configuration can be auto enforcement
                 according to the PHY type, disabled or enabled

        Impact:  None

    3.  Request: Support firmware flow control when consuming SGEs

        Change:  FW change in FW 5.0.16: Added check for Flow control when
                 consuming SGEs from host

        Impact:  None

    4.  Request: Advertise driver DCC capabilities

        Change:  As requested

        Impact:  None


Version 1.50.4 (May 18, 2009)
=============================

    Fixes
    -----
    1.  Problem: (CQ40938, CQ40937, CQ40911, CQ40992)
                 LSO test failure

        Cause:   LSO packets with BDs that point to buffers that are less than
                 MSS size caused the firmware to send illegal bytes within the
                 same LSO packet

        Change:  FW fix in version 5.0.14

        Impact:  Regression introduced in v1.50.2

    2.  Problem: (CQ41198) modprobe generate error on RH4.6 or 4.7 which will
                 cause kernel panic

        Cause:   pci_register_driver() returns count and not errno

        Change:  Ignore the return code from pci_register_driver() in kernels
                 below 2.6.10

        Impact:  None

    3.  Problem: (CQ38975,CQ38925) Failed to setup leading connection after
                 a lot of iterations of "down-up" test

        Cause:   There were a few memory barriers missing

        Change:  Add missing memory barriers

        Impact:  None

    Enhancements
    ------------
    1.  Request: Reduce the time spent in skb_release_data()

        Change:  Add prefetch(&skb->end) before calling dev_kfree_skb in order
                 to bring in the cache line that skb_release_data() will
                 eventually need (based on the bnx2 patch proposed by
                 Eric Dumazet)

        Impact:  None

    2.  Request: (CQ33228) Add required IOCTLs to support PHY FW upgrade

        Change:  Add 3 magic numbers to the ethtool -E (eeprom) command to
                 support PHY FW upgrade init, PHY FW upgrade complete, and PHY
                 re-init after upgrade
                 Add CL45 MDIO IOCTL support

        Impact:  None

    3.  Request: Add support for BCM8481 SPI-ROM upgrade

        Change:  As requested

        Impact:  None

Version 1.50.3 (May 14, 2009)
=============================

    Fixes
    -----
    1.  Problem: (CQ40848,CQ40835) System breaks due to a firmware assert

        Cause:   Firmware asserted when PCI read latency for RX BD ring was
                 longer then 20usec

        Change:  FW fix in version 5.0.12: Replace the workaround by a flow
                 which polls on the RX BD ring every 4usec

        Impact:  None

    2.  Problem: (CQ36705) Performance on 57711/57711E is lower when flow
                 control is enabled than when flow control is disabled

        Cause:   L2 firmware flow control was enabled for 57711/57711E and
                 caused performance decrease

        Change:  Disable L2 firmware flow control by default (add new module
                 parameter to enable it)

        Impact:  None

    3.  Problem: Workqueue might not be freed if driver fail to register

        Cause:   Workqueue is not freed if driver fail to register

        Change:  Free workqueue when driver fail to register

        Impact:  None

    4.  Problem: Negative number of received packages might be returned in
                 STOP_ON_ERROR debug mode

        Cause:   Negative errno is returned in STOP_ON_ERROR debug mode

        Change:  Do not return negative number of received packages

        Impact:  None

    5.  Problem: Fan failure on BCM8727 was not supported on port 1

        Cause:   The fan failure assertion was tied only to port 0

        Change:  The fan failure assertion is tied to port 1 also

        Impact:  None

    6.  Problem: BCM8727 shows link up while RX is disabled

        Cause:   When module-compliance enforcement is enabled,
                 and non-compliant module is detected, then the driver
                 disables the TX-Laser for the phy, yet the link keeps
                 showing link up.

        Change:  When link is changing, in case the TX-laser is off,
                 indicate that the link is down although the phy detects
                 RX link up.

        Impact:  None

    7.  Problem: (CQ41000) Could miss link up event in BCM8727 right after
                 optic module insertion

        Cause:   At the time that SFP+ module plugged-in was triggered,
                 driver enabled the module while ignoring link change

        Change:  Check for link changes during module plugged in/out

        Impact:  None

    8.  Problem: BCM8727 doesn't link in 10G after changing from 1G

        Cause:   10G default configuration was overwritten after setting 1G
                 configuration. Since the phy is not reset, the configuration
                 for 10G doesn't go back to default after link speed change

        Change:  When setting 10G, enforce 10G configuration, and not relay
                 on the default configuration.

        Impact:  None


    9.  Problem: (CQ40840) BCM57710 didn't receive multicast packets

        Cause:   BCM57710 was unable to receive multicast packets. This BUG
                 was introduced with transition to the new Rx HSI. It's unlikely
                 that this failure is SuSE 11 specific

        Change:  Fix BCM57710 specific multicast configuration code

        Impact:  None

    Enhancements
    ------------
    1.  Request: Add dropless_fc module parameter to send pause frames in
                 case where one of the host buffers (when in RSS mode) are
                 exhausted

        Change:  As requested

        Impact:  None

Version 1.50.2 (May 05, 2009)
=============================

    Fixes
    -----
    1.  Problem: (CQ40300) XFP adapter shows link up in network properties
                 with no cable

        Cause:   Link status register was updated long after interrupt was
                 triggered

        Change:  Check that RX PMD Loss of Sync bit is cleared and RX PMD Sync
                 Acquired bit is set to detect link

        Impact:  None

    2.  Problem: When Over-Current state is established, LASI interrupts are
                 not cleared

        Cause:   In this scenario, the module is powered-off so OPTXFLT/OPRXLOS
                 indications are set. This cause a fixed RX_ALARM indication
                 which cannot be turned off

        Change:  When Over-current condition is detected, set RX_ALARM to
                 detect only module-absent events, so when a new module is
                 plugged in, it will be detected and then RX_ALARM will be set
                 to detect link as well

        Impact:  None



    Enhancements
    ------------
    1.  Request: Improve Tx packet rate

        Change:  FW 5.0.10

        Impact:  None

    2.  Request: Add support for future chip revisions

        Change:  From now on bnx2x_main.c doesn't include huge X_init_values.h
                 files. Instead X_init_values.h were transformed to
                 X_init_values.c, which also include internal pointers
                 initialization function for the appropriate chip revision

        Impact:  None

    3.  Request: Add additional support for BCM8727

        Change:  Add support module detection, over-current detection and
                 SFP+ EEPROM access

        Impact:  None

    4.  Request: Add fan-failure check for BCM8727

        Change:  As requested

        Impact:  None

Version 1.50.1 (April 27, 2009)
===============================

    Fixes
    -----
    1.  Problem: (CQ39681) Dtape test fails on Dell TL2000 media changer device

        Cause:   Misalignment between driver and firmware

        Change:  FW fix in version 5.0.8

        Impact:  None

    2.  Problem: When several protocols work together, interrupt rate is the
                 sum of all protocol rates, instead of the maximum between them

        Cause:   State machines in host coalescing code were independent
                 and generated interrupts on their will

        Change:  FW fix in version 5.0.8: Add dependency between the states
                 machine - when an interrupt
                 is generated then all state machines of this status block
                 are handled as expired, resulting with lower interrupt rate

        Impact:  None

    3.  Problem: Bootcode unable to set phy configuration

        Cause:   When driver is loaded, it sets Serdes to work in CL45 while
                 the bootcode is using CL22 for phy access, so when driver
                 is unloaded, bootcode unable to access the phy.

        Change:  When driver is loaded set Serdes mode to CL22 only when
                 1G-switch is set. This shall solve the issue for older
                 bootcodes, and will be fixed in newer bootcodes

        Impact:  None

    4.  Problem: BCM8481 is not able to link up in legacy speeds

        Cause:   Setting legacy speeds requires additional phy configuration,
                 and speed analysis

        Change:  Enable legacy speeds for this phy

        Impact:  None

    5.  Problem: (CQ40392) Build for SLES11 do not autoload on reboot

        Cause:   SLES11 disables modules whose source is not maintained in the
                 kernel.org source tree

        Change:  Provide "supported: external" modules for SLES11

        Impact:  None

    6.  Problem: BCM8481 is not able to link with 10/100 switch

        Cause:   XGXS was initializaed to work in none-SGMII mode

        Change:  Set XGXS to work in SGMII mode if link speed is slower the 1G

        Impact:  None

    7.  Problem: Potential error on unload

        Cause:   The ILT could have been freed while a timer scan is in progress

        Change:  Make sure that the timer scan is done before freeing the ILT

        Impact:  None

    Enhancements
    ------------
    1.  Request: Improve Tx latency

        Change:  Removed taking tx_lock in Tx interrupt flow. This also
                 voided a need for tx_xon_tasklet - Tx is moved to XON state
                 directly from bnx2x_tx_int

        Impact:  None

    2.  Request: Add support for new BMAC HW block for new chip types

        Change:  When accessing the new BMAC, use the new registers.
                 No need to initialize the PBF HW block credits since
                 flow-control is always enable in that block.

        Impact:  None

    3.  Request: Enable support for other chips in more general way.

        Change:  Split init values and FW into 2 different files. Work
                 against pointers in bnx2x struct instead of global arrays.

        Impact:  None

    4.  Request: Add initial support for BCM8727

        Change:  Add support for the new dual-port SFP+ phy

        Impact:  None

    5.  Request: In BigMac2, when PFC enabled, pass pause frames towards the NIG

        Change:  Set the appropriate bit in the bigmac control register

        Impact:  None

    6.  Request: Improve Rx packet rate

        Change:  FW 5.0.8

        Impact:  None

Version 1.50.0 (April 02, 2009)
===============================

    Fixes
    -----
    1.  Problem: Rx was getting stuck on ia64 platform when system page size
                 was configured to be 64KB on the kernels 2.6.27 and later

        Cause:   The implementation on PAGE_ALIGN macro has been changed,
                 which caused downcast in some places in the code and as a
                 result improper HW configuration

        Change:  Add a proper casting for the argument of SGE_PAGE_ALIGN macro

        Impact:  None

    2.  Problem: (CQ39552) Link LED is turned OFF while running external
                 loopback test

        Cause:   When using phy loopback, the link doesn't actually comes up
                 since there's no link partner

        Change:  Set link led up on loopback test

    3.  Problem: BCM8481 is not able to link up in 10/100/1000 Mbps

        Cause:   No 10/100/1000 link signal is connected from the BCM8481 to the
                 Everest

        Change:  BCM8481 will connect LED4 signal to the Everest LASI signal.
                 The Everest will use the NIG latching mechanism which allows to
                 catch a link event even if the link toggles fast

    4.  Problem: SFP+ (BCM8726) boards do not use flow-control

        Cause:   Flow control wasn't set for BCM8726

        Change:  Set flow control according to configuration in BCM8726

        Impact:  None

    5.  Problem: Flow-control in MF mode should behave like in SF mode

        Cause:   Old restriction which is not necessary

        Change:  Remove special flow-control configuration in MF mode

        Impact:  None

    6.  Problem: CNIC sanity tests fails

        Cause:   When changing to new dynamic HC code, no RAM line was allocated
                 to default SB so there was a memory corruption

        Change:  FW fix in version 5.0.3: Add RAM line for default SB to dynamic
                 HC array

        Impact:  None

    7.  Problem: (CQ39503) Transmission stops for 5 second

        Cause:   Confusion in scaling of the receive window of the remote.
                 Sometimes it is taken "as is" as a number of bytes, without
                 scaling

        Change:  FW fix in version 5.0.3: Scaling added in 3 places in the code

        Impact:  None

    8.  Problem: Low performance on Tx side in UDP test with small packets

        Cause:   Extra memory barrier in Tx flow

        Change:  Replace mb() to wmb()

        Impact:  None

    Enhancements
    ------------
    1.  Request: Improve FW performance

        Change:  HC coalescing has been moved from USTORM to CSTORM.
                 TSTORM performance has been improved. FW 5.0.3

        Impact:  None

    2.  Request: Add support for DCC

        Change:  As requested

        Impact:  None

    3.  Request: Improve performance

        Change:  Connect Tx and Rx to different interrupt vectors

        Impact:  None

    4.  Request: Add module parameter controlling number of Rx and Tx queues

        Change:  As requested. Number of Tx queues must be not more than
                 number of Rx queues

        Impact:  None

    5.  Request: Add "per function" statistics support for NCSI management

        Change:  As requested

        Impact:  None

Version 1.48.106 (Mar 04, 2009)
===============================

    Fixes
    -----
    1.  Problem: (CQ38925) Unload/Load with netperf TCP traffic test
                 eventually caused a SETUP ramrod failure

        Cause:   ISR discarded a SP interrupt due to weak synchronization of
                 atomic variable that disables interrupt handling (intr_sem)

        Change:  Add write memory barriers where intr_sem is updated

        Impact:  None

    2.  Problem: Possible problem in pram initialization

        Cause:   There was a bug in init code generation script

        Change:  Fix the pram initialization

        Impact:  None

Version 1.48.105 (Mar 02, 2009)
===============================
-- Upstream Version --
    Fixes
    -----
    1.  Problem: Unload/Load test under traffic caused kernel panic in
                 skb allocation/freeing functions

        Cause:   Previously added patch (enhancement 6 in release 1.48.100)
                 broke proper usage of net_device object

        Change:  Remove the mentioned patch

        Impact:  None

Version 1.48.104 (Mar 01, 2009)
===============================

    Fixes
    -----
    1.  Problem: New phy version (P14) of the BCM8726 unable to link up

        Cause:   The new phy version doesn't behave exactly like its
                 previous version (P13), hence requires some adjustments

        Change:  1. Microcode download requires write of another register
                 2. Read from "Limiting/LRM mode" register before setting
                 Limiting mode

        Impact:  No impact on P13

    Enhancements
    ------------
    1.  Request: Add limited (online) GRC dump using ethtool -d command

        Change:  As Requested

        Impact:  None

Version 1.48.103 (Feb 19, 2009)
===============================

    Fixes
    -----
    1.  Problem: "ext_phy_fw version" command for BCM8705 shows invalid number

        Cause:   BCM8705 has no microcode

        Change:  Set BCM8705 version to 0

        Impact:  None

    2.  Problem: Potential problem in BCM8726 bit stretching work-around

        Cause:   When module detection option is disabled, module should be
                 transmitting regardless of invalid read from EEPROM

        Change:  Ignore error code when setting limiting mode

        Impact:  None

    3.  Problem: (CQ38925, CQ38975) "Wait Ramrod" error while running
                 load/unload stress w/ traffic

        Cause:   Tx wasn't properly disabled in the 'close' flow

        Change:  Properly disable Tx during 'close' flow

        Impact:  None

    Enhancements
    ------------
    1.  Request: Use DMAE to zero the FW internal memory before loading the FW

        Change:  As Requested

        Impact:  None

    2.  Request: Remove "budgeting" in bnx2x_tx_int

        Change:  As Requested

        Impact:  None

    3.  Request: By default, multi_mode is disabled for old NAPI kernels
                 (up to 2.6.24)

        Change:  As Requested

        Impact:  None

Version 1.48.102 (Feb 12, 2009)
===============================
-- Upstream Version --
    Fixes
    -----
    1.  Problem: FW stats counters might not be updated when running heavy
                 stress test

        Cause:   Sending FW stats ramrod query depends on stats_pending flag.
                 This flag might not be cleared by sp_task() under heavy stress.
                 Thus, next FW stats ramrod query will not be send

        Change:  Clear stats_pending flag at the end of storm_stats_update()

        Impact:  None

Version 1.48.101 (Feb 09, 2009)
===============================

    Fixes
    -----
    1.  Problem: Compilation is broken on kernels >= 2.6.24

        Cause:   FW constant rename was not updated in latest drop

        Change:  Fix constant name

        Impact:  None

Version 1.48.100 (Feb 09, 2009)
===============================

    Fixes
    -----
    1.  Problem: "ext_phy_fw version" command for BCM8706 sometimes shows
                 invalid version number

        Cause:   The version number is read during init phase. Reading the
                 BCM8706 version during init phase is done premature

        Change:  During init phase of the BCM8706, wait until the firmware
                 is loaded completely before reading the version number

        Impact:  None

    2.  Problem: When setting pre-emphasis values for external phys, the
                 XGXS is also set

        Cause:   In external-phy boards, when pre-emphasis values were set in
                 the nvram, both the external phy and the XGXS pre-emphasis
                 values were set, while the values fit the external phy only

        Change:  Set pre-emphasis values in XGXS only for direct type boards

        Impact:  None

    3.  Problem: (CQ37809) loopback test failure

        Cause:   The link was initialized for real work mode and then
                 re-init to loopback mode. During that time, incoming packets
                 might be queued in the rx ring in front of the loopback packet

        Change:  Always initialize the link to loopback mode if load_mode is
                 LOAD_DIAG

        Impact:  None

    4.  Problem: Possible false error in the idle check section of the
                 self test regarding the CFC_REG_ACTIVITY_COUNTER register

        Cause:   The test was designed to check halted system (after fatal
                 error) and thus assumed that the chip is idle

        Change:  Change the test to "info" debug print

        Impact:  None

    5.  Problem: (CQ39439) mf_cfg function disabled error message displayed

        Cause:   Putting the driver into disabled mode was considered an error

        Change:  Change the printed message from error to a notification

        Impact:  None

    6.  Problem: (CQ38925, CQ37645) ifconfig ethX down up may cause a wrong
                 MSI configuration, which will prevent MSI interrupts to arrive

        Cause:   Chip reset function cleared "MSI reconfigure enable" bit

        Change:  Don't clear the "MSI reconfigure enable" bit

        Impact:  None

    7.  Problem: Uninitialized HW blocks

        Cause:   XCM and BRB1 port init part were missing

        Change:  Add XCM and BRB1 port init part

        Impact:  None

    8.  Problem: Constant pause is sent to the network if pause is enabled and
                 TPA is disabled

        Cause:   Wrong thresholds were configured

        Change:  Set the thresholds to 0 if TPA is disabled

        Impact:  None

    9.  Problem: Unloading UNDI by the driver in E1HMF mode might disable
                 interrupts of the wrong function

        Cause:   HC regs are splited by 4

        Change:  Pritend to write as function 0 when writing to HC regs

        Impact:  None

    10. Problem: BCM8726 MDIO access is not locked as it should be

        Cause:   MDC/MDIO access to BCM8726 is done via single EMAC, hence
                 all MDC/MDIO access to this phy needs to be locked, like
                 BCM8072 and BCM8073

        Change:  Lock the hardware using MDIO_RESOURCE when accessing the
                 BCM8726 phy via MDIO

        Impact:  None

    Enhancements
    ------------
    1.  Request: Set default WoL state according to nvram settings

        Change:  As Requested

        Impact:  None

    2.  Request: WRR between different COS queues at TX side

        Change:  Added in driver and in FW 4.8.53

        Impact:  None

    3.  Request: Add ability to change BCM8726 TX PreEmphasis using nvram
                 configuration

        Change:  When nvram config "Override pre-emphasis configuration" (75)
                 is set, use Tx pre-emphasis nvram configuration (47), lane0
                 value to set the Main Tap and lane1 to enable TX-PreEmphasis
                 in BCM8726

        Impact:  None

    4.  Request: Add basic support for BCM8481

        Change:  As Requested

        Impact:  None

    5.  Request: Limit Tx queue number to one for kernels 2.6.24 - 2.6.26
                 (non-TSS kernels with new NAPI)

        Change:  As Requested

        Impact:  None

    6.  Request: Add RSS support for old NAPI kernels (up to 2.6.24) that
                 support MSI-X

        Change:  As Requested

        Impact:  multi_mode = 1 is now the default for all kernels

Version 1.48.51 (Jan 26, 2009)
==============================

    Fixes
    -----
    1.  Problem: Load balancing didn't work

        Cause:   Driver assumed that there was Tx work as long as
                 driver packets producer and consumer were not equal

        Change:  Changed driver's Tx work amount evaluation logic

        Impact:  None

Version 1.48.50 (Jan 22, 2009)
==============================

    Fixes
    -----
    1.  Problem: (CQ38862) modprobe fails to load driver on SuSE 11

        Cause:   SuSE 11 does not allow 3rd party modules to be loaded without
                 toggling a flag in /etc/modprobe.d/unsupported-modules

        Change:  Toggle the bit during make install

        Impact:  None

    2.  Problem: Accessing nvram while the driver is down caused PCI error

        Cause:   The driver attempted to access the nvram while the device was
                 in D3 since it was disabled

        Change:  Prevent nvram access when the device is down

        Impact:  None

    3.  Problem: FW assert while running multi_mode=2 with tx MULTI_QUEUE
                 enabled

        Cause:   start_xmit() selected different tx queue than the tx_lock was
                 taken

        Change:  Implement dev->select_queue() callback so start_xmit() selects
                 the correct tx queue

        Impact:  None

    4.  Problem: Compilation problem with kernel 2.6.29

        Cause:   netif_rx_schedule and netif_rx_complete do not require the
                 device parameter anymore

        Change:  Do not pass the device paramter for those functions for kernels
                 above 2.6.29

        Impact:  None

    5.  Problem: Invalid presentation of BCM8726 fw version

        Cause:   The register that holds the fw version is used for other
                 functionality as well, and it is run over after firmware is
                 loaded

        Change:  Save the firmware version of all external phys in shared
                 memory, after firmware is loaded

        Impact:  None

    6.  Problem: BCM8726 may start tx laser before module detection occurs

        Cause:   Module detection used to be done during link update, which
                 probably would be after tx was enabled

        Change:  From now on use interrupt driven event using GPIO3, to detect
                 module plugged in/out, and execute module detection then

        Impact:  None

    7.  Problem: 1G switch configuration (using the 5th lane) doesn't work

        Cause:   Support for Serdes (5th lane) was not maintained since no
                 production design used it and when switching to CL45 it stopped
                 working

        Change:  In order for control the Serdes over Clause45, (and not
                 Clause22), it requires first one time register setting in
                 Clause22

        Impact:  None

    8.  Problem: Softlock during remove_one()

        Cause:   NAPI context was not released before unloading

        Change:  Release NAPI context before unloading

        Impact:  None

    9.  Problem: False self-test failures due to MC_ASSERT

        Cause:   iSCSI FW sometimes report run-time warnings which are
                 acceptable and do not cause any harm

        Change:  Do not check for MC_ASSERT. A real FW error will cause the
                 interrupt test to fail

        Impact:  None

    10. Problem: Possible miss of FW response on unload

        Cause:   Missing memory barrier while waiting for FW response

        Change:  Add read memory barrier

        Impact:  None

    11. Problem: (CQ37809) loopback test failure

        Cause:   A link change interrupt might be queued and activated after
                 the loopback was set

        Change:  Lock all PHY activities while running loopback test

        Impact:  None

    12. Problem: (CQ39057) Everest, 57710 Error message:
                 bnx2x_start_xmit: BUG Tx ring full when queue awake

        Cause:   In kernels 2.6.24 - 2.6.26 (non-TSS kernels with new NAPI)
                 there can be a possibility that NAPI instance (fp instance)
                 other than the one moved Tx to XOFF state will wake the Tx
                 So, this is highly possible that start_xmit is called while
                 the ring is still full
                 In any other kernel this state is an obvious bug

        Change:  Remove an error message in the code for the mentioned
                 kernels

        Impact:  None

    Enhancements
    ------------
    1.  Request: Use FW 4.8.50

        Change:  As Requested

        Impact:  None

    2.  Request: BCM8726 should be able to link up at 1G

        Change:  Add support for 1G for BCM8726

        Impact:  When requested speed is 1G force, it will try to link in 1G
                 force. When the speed requested is autoneg, and the speed mask
                 capabilities contain 1G, it will try to autoneg in 1G as
                 well as in 10G

    3.  Request: (CQ39048) Add ability to change 8706 XAUI RX Equalizer
                 using nvram configuration

        Change:  When nvram config "Override pre-emphasis configuration" (75)
                 is set, use the 3LSB bits of RX_equalizer nvram configuration
                 (48) to set the BCM8706 XAUI RX Equalizer registers for each
                 lane

        Impact:  None

    4.  Request: Verify external phy image before ROM upgrade

        Change:  New headers will be added to the images of external phys to
                 be upgraded. Currently this list includes BCM8073, BCM8726
                 and SFX7101. The headers will be checked against fixed magic
                 number and specific phy type

        Impact:  From now on, external phy images MUST include image header

Version 1.48.11 (Jan 13, 2009)
==============================

    Fixes
    -----
    1.  Problem: Possible memory overrun on platforms with page size more
                 than 8K

        Cause:   "linearization" should take into an account system page
                 size and run or not run accordingly

        Change:  Fixed the compilation condition

        Impact:  None

    2.  Problem: Compilation problem with kernel 2.6.28

        Cause:   struct net_device_ops was postponed to next release

        Change:  Remove struct net_device_ops from compilation

        Impact:  None

    Enhancements
    ------------
    1.  Request: Limit multi_mode to support only regular mode

        Change:  As requested

        Impact:  None

Version 1.48.10 (Jan 07, 2009)
==============================

    Fixes
    -----
    1.  Problem: (CQ39129) driver assert while logging out during iSCSI
                 max sessions test

        Cause:   QM initialization was wrong

        Change:  Fix QM initialization

        Impact:  None

Version 1.48.9 (Jan 05, 2009)
=============================

    Fixes
    -----

    1.  Problem: (CQ38909) on IA-64 with TPA enabled, kernel memory was
                 sometimes smeared (depending on the MTU size)

        Cause:   The max TPA fragments assumed 4KB pages and that system had
                 16KB pages

        Change:  Fix the SGE (TPA fragment) size to be system page size

        Impact:  Improved performance on systems with page size > 4KB like PPC
                 and IA-64

Version 1.48.8 (Dec 31, 2008)
=============================

    Fixes
    -----

    1.  Problem: (CQ38992) on IA-64 Driver crash when transmitting on all 8
                 functions in chariot IPv6 with tx checksum disabled scenario

        Cause:   FW read the buffer descriptor (BD) producer and after that the
                 BD itself before the BD content was updated. This is possible
                 on IA-64 due to weak ordered memory module

        Change:  Add write barrier after updating the BD data and before
                 updating the BD producer

        Impact:  None

Version 1.48.7 (Dec 30, 2008)
=============================

    Fixes
    -----

    1.  Problem: (CQ38985) Port swap is not working for BCM8726

        Cause:   BCM8726 is driven by MDC/MDIO through single EMAC.
                 In case of port swap, the EMAC access was left with EMAC0

        Change:  In case port-swap is enabled in the NIG, access MDC/MDIO via
                 EMAC1

        Impact:  None

    2.  Problem: BCM8726 was not reset when driver was unloaded

        Cause:   This phy hardware reset affects both ports and thus wasn't
                 used

        Change:  When link needs to be reset, reboot the micro-controller of the
                 BCM8726

        Impact:  None

    3.  Problem: BCM8726 was not reset during init

        Cause:   This phy is connected using static port-swap, hence the reset
                 should have been triggered through the opposite port from the
                 spec

        Change:  Set gpio1 during common init from port1 instead of port0

        Impact:  None

    4.  Problem: (CQ38991) In E1HMF mode some interfaces occasionally
                 misreport link speed

        Cause:   Races between interfaces during init cause an interrupt
                 event to be ignored

        Change:  Flag the device as "ready for interrupts" prior to enabling
                 the interrupts

        Impact:  None

    5.  Problem: (CQ39057) Everest, 57710 Error message :
                 bnx2x_start_xmit: BUG Tx ring full when queue awake.

        Cause:   Tx BD producer update may not be "seen" by bnx2x_tx_int
                 function running on different CPU, thereby bnx2x_tx_int
                 may erroneously conclude that it may wake Tx.

        Change:  Add smp_mb() after update of Tx producer before putting Tx
                 to XOFF state.

        Impact:  None

    6.  Problem: In E1HMF mode with multi queue, functions 2..7 cannot receive
                 data

        Cause:   Incorrect initialization of indirection table

        Change:  Initialize correctly the indirection table

        Impact:  None

    7.  Problem: The driver debug crash dump does not handle cyclic rings
                 correctly

        Cause:   The debug prints were simply from start to end and did not
                 print anything in case start < end (cyclic rings)

        Change:  Enhance the debug prints with cyclic logic

        Impact:  None

    8.  Problem: Packets dropped due to lack of host buffers were counted twice
                 - in good and bad statistics

        Cause:   Firmware does not maintain separate counters for
                 unicast/broadcast/multicast drops, therefore driver cannot
                 subtract these values from the good packet/byte counters

        Change:  Fixed in FW 4.8.9

        Impact:  None

    9.  Problem: iSCSI FW: High non-paged host memory consumption

        Cause:   Unnecessary optimization of chipset<->memory bandwidth in
                 expense of memory consumption

        Change:  Fixed in FW 4.8.9

        Impact:  None

Version 1.48.6 (Dec 18, 2008)
=============================

    Fixes
    -----
    1.  Problem: System hangs when running ifconfig on an 8 CPUs system

        Cause:   A loop variable was used again in an inner loop. That caused
                 an endless loop

        Change:  Use another variable for the inner loop

        Impact:  None

    2.  Problem: Some stats names are not displayed but their values were
                 displayed in other stats

        Cause:   Incorrect condition caused to skip stats names but not their
                 values

        Change:  Correct the condition

        Impact:  None

    3.  Problem: iSCSI FW: During connection establishment on-chip (option2),
                 in case we receive SYN/ACK with incorrect dst_mac the chip
                 gets stuck

        Cause:   This scenario led to accessing invalid PRAM address which
                 made the chip halt

        Change:  Fixed in FW 4.8.8

        Impact:  None

    4.  Problem: NAPI poll mode was stopped (netif_rx_complete called) and HW
                 interrupts reenabled even if the whole device quota had been
                 consumed.

        Cause:   There was a bug in NAPI poll-mode canceling logic.

        Change:  Fix the logic in NAPI poll method.

        Impact:  None

Version 1.48.5 (Dec 11, 2008)
=============================

    Fixes
    -----
    1.  Problem: TCP packets with VLAN weren't handled properly, when received
                 in non-accelerated VLAN traffic mode (when VLAN tag is not
                 stripped by the FW)

        Cause:   Driver didn't support receiving VLAN packets in
                 non-accelerated mode. for TPA packets, there was a wrong
                 IP header offset calculation and, as a result, writing IP
                 checksum to the wrong offset. Non-TPA packets weren't handled
                 right as well: driver always used vlan_hwaccel_receive_skb to
                 pass an skb with VLAN to the stack, while it should use
                 netif_receive_skb in non-accelerated case

        Change:  Fixed IP header offset calculation for TPA packets. Fixed VLAN
                 skb handling
                 logic.

        Impact:  None

    2.  Problem: (CQ38698, CQ37931) No link when using direct attached copper
                 cable with BRCM8726 PHY

        Cause:   Passive copper cables should always operate in LRM mode rather
                 than in Limiting mode

        Change:  In case of passive copper cables, link up in LRM mode

        Impact:  None

    3.  Problem: (CQ38815) iSCSI failure during hotplug

        Cause:   Not everything is setup before calling register_netdev().
                 pci_set_drvdata() and bnx2x_init_bp() were called after
                 register_netdev(). This potentially can also affect L2
                 because bnx2x_open() can potentially be called before
                 those 2 calls have successfully completed

        Change:  Call register_netdev only at the end of successful setup

        Impact:  None

    4.  Problem: (CQ38862) modprobe fails to load driver on SUSE11

        Cause:   SuSE does not allow 3rd party modules to be loaded without
                 toggling a flag in /etc/modprobe.d/unsupported-modules

        Change:  Toggle the bit through the packaging script

        Impact:  None

    5.  Problem: iSCSI FW: In non-aligned PDUs with data-digest enabled, the
                 data-digest is calculated to a wrong value

        Cause:   The CRC machine was not reset correctly in non-aligned PDUs

        Change:  Fixed in FW 4.8.6

        Impact:  None

    6.  Problem: iSCSI FW: Connection wasn't initialized with the right
                 parameters for the TX in E1HMF mode

        Cause:   Initialization was done using SF mode

        Change:  Fixed in FW 4.8.6

        Impact:  None

    7.  Problem: (CQ38886, CQ38888) iSCSI FW: Double-vlan was not supported
                 for iSCSI. The packet was transmitted with bogus IP length
                 and no inner-vlan

        Cause:   The vlan flag and the header builder command size weren't
                 set correctly

        Change:  Fixed in FW 4.8.6

        Impact:  None

    8.  Problem: Byte counters statistics did not count the 4 FCS bytes

        Cause:   The FCS bytes were not counted

        Change:  Fixed in FW 4.8.7

        Impact:  None

    Enhancements
    ------------
    1.  Request: SFP+ optical module (MSA) vendor verification should
                 be optional when using BCM8726 PHY

        Change:  Verify the optical module vendor according to nvram
                 configuration option #81: "Optic Module Vendor
                 Enforcement"

        Impact:  The new nvram bit is visible using ediag version 4.8.3
                 or later

    2.  Request: In multi queue mode, separate FW stats per queue

        Change:  As requested

        Impact:  None

    3.  Request: Change some stats names:
                 pause_frames_received is now rx_pause_frames
                 pause_frames_sent is now tx_pause_frames
                 timer_max_events is now rx_constant_pause_events

        Change:  As requested

        Impact:  None

    4.  Request: Align with RMON MIB (rfc 1757):
                 net_device_stats.rx_bytes is total_bytes_received
                 net_device_stats.multicast is total_multicast_packets_received

        Change:  As requested

        Impact:  None

    5.  Request: Use static singlethread_workqueue shared for all bnx2x
                 interfaces

        Change:  As requested

        Impact:  None

Version 1.48.4 (Nov 26, 2008)
=============================

    Fixes
    -----
    1.  Problem: CNIC driver is failing on higher functions of 57711E

        Cause:   The status block ID for the CNIC was not assigned correctly
                 for higher functions

        Change:  Assign the status block ID according to the function ID

        Impact:  None

Version 1.48.3 (Nov 20, 2008)
=============================

    Fixes
    -----
    1.  Problem: Intermittent MDC/MDIO failures on 8726 PHY

        Cause:   MDIO register access is sometimes broken since PHY is not hard
                 reset

        Change:  Pull GPIO1 low for 1 ms after power-on. Note that the hard
                 reset is a shared resource on the PHY

        Impact:  None

    2.  Problem: gso_type indication was not set for TPA packets

        Cause:   gso_type wasn not set

        Change:  Set gso_type accordingly

        Impact:  None

    3.  Problem: Possible false parity indication

        Cause:   When using 5 tuple hash (not used today) the searcher might
                 falsely indicate parity error

        Change:  Mask bit 6 of the searcher parity errors

        Impact:  None

    4.  Problem: (CQ37809) Intermittent failures in ethtool diagnostic
                 (CQ36771) Calltrace and interface locks up when up/down
                 interface

        Cause:   If sp_task() is queued in the shared work queue after the
                 linkwatch, it will be starved and will not update the link
                 status until ethtool diagnostic ends and frees rtnl that
                 linkwatch is waiting for

        Change:  Create private workqueue

        Impact:  None

    5.  Problem: (CQ38139) iSCSI FW: Performance < 40% of Peak Advertised

        Cause:   Inefficient implementation of ring management in firmware

        Change:  Fixed in FW 4.8.4

        Impact:  None

    6.  Problem: (CQ38424) SAFC iperf drop result is 5 times higher than
                 previous build

        Cause:   Mis-configuration of the SAFC timeout

        Change:  The new SAFC timeout will be 200usec

        Impact:  None

Version 1.48.2 (Nov 10, 2008)
=============================

    Fixes
    -----
    1.  Problem: SAFC packets were not generated periodically by NIG

        Cause:   A HW architecture bug

        Change:  Fixed in FW 4.8.3

        Impact:  None

    Enhancements
    ------------
    1.  Request: Support iSCSI MAC and VLAN per function in 57711E

        Change:  Added in FW 4.8.3

        Impact:  None

Version 1.48.1 (Nov 06, 2008)
=============================

    Fixes
    -----
    1.  Problem: Possible race between init_one() and open() with calling to
                 netif_carrier_off()

        Cause:   After register_netdev(), open() can be called at any time and
                 the interrupt handler can be called after that. If you get a
                 link change interrupt, the netif_carrier_* call from IRQ or
                 NAPI poll can race with netif_carrier_off() call in probe.

        Change:  Move netif_carrier_off() to open()

        Impact:  None

    2.  Problem: Possible access to illegal addresses inside the chip during
                 self test

        Cause:   Loop size was given in bytes and not in number of entries

        Change:  Fix the loop size

        Impact:  None

    Enhancements
    ------------
    1.  Request: Fewer dropped packets when flow control is enabled on
                 57711/57711E

        Change:  As requested

        Impact:  None

Version 1.48.0 (Nov 03, 2008)
=============================

    Fixes
    -----
    1.  Problem: Failures on RH5 when using enabling and disabling the
                 functions one by one on 57711E

        Cause:   Unloaded driver tries to access the PHY to get its FW
                 version since RH calls "ethtool -i" periodically

        Change:  Clear the PMF indication when the driver is unloaded

        Impact:  The PHY FW is inaccessible when the driver is unloaded

    2.  Problem: Searcher block initialization for 57711E is wrong

        Cause:   The searcher registers are split (same address for all
                 functions)

        Change:  Use the port offset and not the function offset

        Impact:  None

    3.  Problem: Kernel panic when failing to load the driver

        Cause:   netif_carrier_off was called before making sure that
                 the driver can be loaded

        Change:  Call netif_carrier_off as last action in the probe

        Impact:  None

    Enhancements
    ------------
    1.  Request: Add iSCSI for 57711E

        Change:  FW 4.8.2 supports iSCSI for 57711E

        Impact:  None

    2.  Request: Add transmit multi queue support

        Change:  As requested

        Impact:  This fetaure is available on 2.6.27 kernel when using MSI-X

Version 1.46.12 (Oct 29, 2008)
==============================

    Fixes
    -----
    1.  Problem: (CQ37832) System crash when running TCP connections on
                 57711

        Cause:   Access to unsupported address in FW PRAM due to
                 increased FW size

        Change:  Fixed in FW 4.6.21: Moved all operational FW code to
                 legal PRAM addresses

        Impact:  None

    2.  Problem: After some cases of driver failure, driver cannot be
                 re-loaded

        Cause:   The driver took the HW out of reset without making sure
                 that it was indeed in reset state

        Change:  Reset the HW before taking it out of reset

        Impact:  None

    3.  Problem: (CQ37893) Driver failure when installed on RHEL4.5 from PXE
                 Server

        Cause:   MSI-X fails due to memory allocation failure and though MSI
                 registration succeeded interrupts are not received in MSI mode

        Change:  Use INTx mode when MSI-X fails due to memory allocation
                 failure

        Impact:  None

    Enhancements
    ------------
    1.  Request: Add debug module parameter to force MRRS value

        Change:  As requested

        Impact:  None

Version 1.46.11 (Oct 23, 2008)
==============================

    Fixes
    -----
    1.  Problem: (CQ37915) On 57710, if self-test is run on port 1, port 0 stops
                 transmitting/receiving traffic unless in promiscuous mode

        Cause:   Primary MAC address of port 0 is lost after the self-test on
                 port 1

        Change:  Changed self-test to fix the problem

        Impact:  None

    2.  Problem: (CQ37087) iSCSI FW: Data digest error event found in event viewer

        Cause:   Wrong UPB command in non-aligned data that is adjacent to
                 iSCSI header in the TCP segment from the target

        Change:  Fixed in FW 4.6.17

        Impact:  None

    3.  Problem: (CQ38061) iSCSI FW: Invalid iSCSI PDU seen while running
                 OEM diagnostic to Equallogic target

        Cause:   Misinterpretation of the 3720 RFC regarding data-in sequences
                 definition

        Change:  Fixed in FW 4.6.17

        Impact:  None

    4.  Problem: (CQ37861) iSCSI FW: BSOD occurred while running iLab's TOE
                 automated tests and iSCSI traffic

        Cause:   Failed to identify task cleanup during processing of a
                 data-in PDU that belong to the same task

        Change:  Fixed in FW 4.6.17

        Impact:  None

    5.  Problem: (CQ38088) iSCSI FW: FW assert occurred while passing CNIC
                 traffic

        Cause:   Race in iSCSI FW between writing task context entry using
                 the data path and writing R2TQE using the control path

        Change:  Fixed in FW 4.6.18: Eliminate race, by using R2TQE write
                 through the data path

        Impact:  None

    6.  Problem: When enabling a lot of debug prints on a system with
                 many (more than 6) interfaces, timeout can occur on
                 driver load

        Cause:   Since printk is busy, it can take longer for operations
                 to complete

        Change:  Increase the timeout value

        Impact:  None

    7.  Problem: After load failure, the driver cannot be re-loaded

        Cause:   The FW was not informed that the driver was unloaded

        Change:  On load failure, send "unload" notification to the FW

        Impact:  None

    Enhancements
    ------------
    1.  Request: (CQ38040) Do not use crc32c_le symbol

        Change:  Copied the function into the driver

        Impact:  None

Version 1.46.10 (Oct 20, 2008)
==============================

    Fixes
    -----
    1.  Problem: System panic under stress traffic

        Cause:   The alignment to the machine cache size was not calculated
                 correctly for the Rx buffer and so a buffer overrun occurred

        Change:  Allocate the right amount of memory considering the cache
                 alignment

        Impact:  None

Version 1.46.9 (Oct 16, 2008)
=============================

    Fixes
    -----
    1.  Problem: (CQ37772) iSCSI FW: Bad data digest is transmitted

        Cause:   Missing initialization in FW when going out of slow start

        Change:  Fixed in FW 4.6.16: Add rxmit parameters init to normal TX
                 flow

        Impact:  None

    2.  Problem: (CQ37809) Intermittent Failures in Ethtool Diagnostic

        Cause:   When setting PHY loopback, it required some time before
                 configuration is actually take place.

        Change:  Add 200ms after setting the PHY loopback

        Impact:  None

    3.  Problem: Unable to receive packets on the iSCSI MAC address

        Cause:   Promiscuous in rx mode was ran over by resetting the
                 rx mode

        Change:  Reset the rx mode before setting promiscuous mode

        Impact:  None

    Enhancements
    ------------
    1.  Request: Add the licensing structure to the bnx2x_hsi.h

        Change:  As requested

        Impact:  None

    2.  Request: Set FW to machine cache alignment (up to 256B) for Rx
                 packets L2 data

        Change:  As requested

        Impact:  None

Version 1.46.8 (Oct 07, 2008)
=============================

    Fixes
    -----
    1.  Problem: A potential firmware bug when L2 packet is duplicated to more
                 than one L2 client when TPA is enabled

        Cause:   Buffer could have been released before it was read by all L2
                 clients

        Change:  Fixed in FW 4.6.15

        Impact:  None

    2.  Problem: (CQ37471) iSCSI FW: (iLab test 5.12) TCP CLOSE timeout issue

        Cause:   Chip halted since handler apparently stuck in the queue

        Change:  Fixed in FW 4.6.15

        Impact:  None

    3.  Problem: (CQ37244) iSCSI FW: (iLab test 5.10) Chip hangs when receiving
                 SYN+RST+ACK after SYN sent

        Cause:   SYN retransmission with invalid sequence number caused by not
                 rewinding the sequence number after retransmission

        Change:  Fixed in FW 4.6.15

        Impact:  None

    4.  Problem: iSCSI FW: Chip halts after few unanswered connections attempts

        Cause:   After retransmits were done, the chip didn't return the
                 credits it should have

        Change:  Fixed in FW 4.6.15

        Impact:  None

    5.  Problem: (CQ37668) iSCSI FW: Chip hangs when trying to connect to
                 iSCSI target with no licenses present

        Cause:   When licensing of new connection fails, there's a credit leak
                 which caused an invalid handler to wake up

        Change:  Fixed in FW 4.6.15

        Impact:  None

    6.  Problem: (CQ37610) A potential problem if call to register_cnic during
                 MTU change

        Cause:   CNIC and the bnx2x drivers can be trying to setup the chip
                 at the same time

        Change:  Check for intr_sem in register_cnic to prevent this problem

        Impact:  None

    Enhancements
    ------------
    1.  Request: Allow better response time to SAFC packets

        Change:  Configure max-byte-credit as required for SAFC mode

        Impact:  None

    2.  Request: Add priority mapping table to map SAFC priority to HW queue

        Change:  As Requested

        Impact:  None

Version 1.46.7 (Sep 28, 2008)
=============================

    Fixes
    -----
    1.  Problem: (CQ37161) Running ifconfig down up on one interface can cause
                 other interface to fail

        Cause:   Overriding internal memory that belongs to the other interface

        Change:  Writing only memory of the correct interface

        Impact:  None

    2.  Problem: (CQ37288) iSCSI FW: iSCSI offload with Everest is extremely
                 slow

        Cause:   PSH flag was not set in last PDU TCP packet

        Change:  Fixed in FW 4.6.13

        Impact:  None

    3.  Problem: Possible overriding the internal memory and possible failure
                 to work with MSI-X when RSS and CNIC enabled

        Cause:   Allocate 16 queues for RSS + 1 queue for CNIC

        Change:  Allocate only 15 queues for RSS

        Impact:  None

    4.  Problem: Lower performance on Big-Endian machines

        Cause:   Failure to read correctly the PCI_EXP_DEVCTL on Big-Endian
                 systems. Read PCI_EXP_DEVCTL to u32 variable instaed of u16
                 variable

        Change:  Read PCI_EXP_DEVCTL to u16 variable

        Impact:  None

Version 1.46.6 (Sep 25, 2008)
=============================

    Fixes
    -----
    1.  Problem: (CQ37398) Issuing ifdown command on one port causes the
                 other port not to respond either

        Cause:   Clearing all entries in the CAM

        Change:  Clear only the appropriate entries in the CAM

        Impact:  None

    2.  Problem: (CQ37407, CQ37508, CQ37509) Compilation fails on
                 RH 4.5, 4.6, 4.7

        Cause:   A compiler bug

        Change:  Workaround in the code

        Impact:  None

    3.  Problem: (CQ36673) iSCSI FW: Hardware attention on MaxLuns

        Cause:   Activity count leak in Ustorm microprocessor

        Change:  Fixed in FW 4.6.12

        Impact:  None

    4.  Problem: (CQ37224) iSCSI FW: (iLab test 5.10) Hardware attention
                 (Microcode assert)

        Cause:   iSCSI FW: SYN+RST drop after SYN sent caused AC leak
                 in TStorm microprocessor in option2

        Change:  Fixed in FW 4.6.12

        Impact:  None

    5.  Problem: iSCSI FW: (iLab test 6.1) Hardware attention
                 (Microcode assert)

        Cause:   Missing update of R2T buffer offset

        Change:  Fixed in FW 4.6.12

        Impact:  None

    6.  Problem: Possible false warning (not a failure) in the idle
                 check section of the self test regarding the
                 BRB1_PRTY_STS register

        Cause:   The condition was not masked properly

        Change:  Fixed the condition check for that register

        Impact:  None

    Enhancements
    ------------
    1.  Request: Add support for BCM8726 (Dual port phy SFP+ ) including
                 MSA module recognition and verification

        Change:  As Requested

        Impact:  None

Version 1.46.5 (Sep 17, 2008)
=============================

    Fixes
    -----
    1.  Problem: (CQ36478) MSI fails on Big-Endian systems

        Cause:   The IGU was configured to swap the data over the PCI

        Change:  Config IGU not to swap the data and add swap in the driver
                 where it is necessary

        Impact:  None

    2.  Problem: (CQ37309) Can not compile on some old kernels

        Cause:   Call to pci_disable_msi() was not under appropriate #ifdef

        Change:  Add the appropriate #ifdef

        Impact:  None

    3.  Problem: Self test sometimes indicates on a failure

        Cause:   A test result was declared as an error instead of a warning

        Change:  Declare the test result as a warning

        Impact:  None

Version 1.46.4 (Sep 16, 2008)
=============================

    Enhancements
    ------------
    1.  Request: CNIC enabled in default compilation

        Change:  As Requested

        Impact:  None

Version 1.46.3 (Sep 11, 2008)
=============================

    Fixes
    -----
    1.  Problem: (CQ34165) High number of pause frames

        Cause:   The thresholds in the receive buffer needed some
                 tuning

        Change:  Tuned the thresholds in the receive buffer

        Impact:  None

    2.  Problem: (CQ36559, CQ36989) System crash when working on PPC
                 with 64KB page

        Cause:   The allocated buffer was bigger than the PCI mapped
                 buffer, and in the 64KB configuration the buffer is
                 aligned only to 128 bytes and so the packet can
                 overstep the PCI mapped area and cause a fatal error

        Change:  Map the same size as the allocated buffer size

        Impact:  None

    3.  Problem: (CQ36479) EEH recovery causes system crash

        Cause:   When EEH detects an i/o error it resets the device thus
                 it cannot be accessed. In this case the driver needs to
                 unload its interface only with OS, kernel and network
                 stack but not with the device.

        Change:  Add a special unload function for EEH recovery that
                 does not access the device

        Impact:  None

    4.  Problem: Option2 RST did not complete

        Cause:   Missing context initialization in FW

        Change:  Fixed in FW 4.6.10

        Impact:  None

   5.  Problem:  (CQ37090) Placement of RQ data to wrong address

        Cause:   ASM problem

        Change:  Fixed in FW 4.6.10

        Impact:  None

   6.  Problem:  (CQ36912) BSOD when destroying erroneous connections

        Cause:   Activity count leak

        Change:  Fixed in FW 4.6.10

        Impact:  None

   7.  Problem:  (CQ 36987) Unable to perform media changer/tape functions

        Cause:   Bad padding calculation in long PDUs

        Change:  Fixed in FW 4.6.10

        Impact:  None

    Enhancements
    ------------
    1.  Request: Incorporate latest firmware 4.6.10

        Change:  As Requested

        Impact:  None

    2.  Request: Add stats counter for NIG timer max events

        Change:  As Requested

        Impact:  None

    3.  Request: Enable timer scan for CNIC

        Change:  As Requested

        Impact:  None

    4.  Request: Add support for using MSI interrupt mode

        Change:  As Requested

        Impact:  None

    5.  Request: (CQ36758) Firmware now enforces iSCSI licensing and fails
                 the offload if no iSCSI initiator license exists

        Change:  Added in FW 4.6.10

        Impact:  None

Version 1.46.2 (Aug 25, 2008)
=============================

    Fixes
    -----
    1.  Problem: (CQ36510, CQ36583) Link LED does not turn off when 1G
                 link is lost when external PHY is present

        Cause:   The current code manually turned off the 10G LED but
                 did not handle other speeds which are controlled by HW.
                 Since the HW detect link with the external PHY, the
                 link LED stayed on

        Change:  Turn off the LED for all speeds manually when link goes
                 down

        Impact:  None

    2.  Problem: Packets with bad TCP/UDP checksum error are dropped

        Cause:   Actively dropping packets with bad TCP/UDP checksum in
                 the driver

        Change:  Do not drop packets with bad TCP/UDP checksum - let the
                 stack decide what to do with them

        Impact:  None

    3.  Problem: Some packets are dropped without showing on any
                 statistics counter

        Cause:   The driver assumed that packets which were identified
                 as bad are counted by the FW, but the FW does not count
                 those when configured to pass them

        Change:  Add counters in the driver

        Impact:  None

    4.  Problem: (CQ36153) Flow control doesn't work against non KR switches

        Cause:   Missing support for clause-37 auto negotiation

        Change:  Add support for clause-37 auto negotiation

        Impact:  0.5 seconds delay during autoneg

    5.  Problem: Link dangling during init

        Cause:   no delay after initial link change interrupt

        Change:  Add 30ms before allowing link update indications

        Impact:  Additional 30ms during init phase

    6.  Problem: Unable to load driver after iSCSI boot under incoming
                 traffic

        Causes:  The reset function after iSCSI boot did not handle
                 closing incoming traffic

        Change:  Close the port to prevent Rx traffic and clear all
                 buffers

        Impact:  None

    7.  Problem: (CQ36408) Failed driver disk installation with SuSE10
                 and RH4

        Cause:   The CRC module is not part of the Kernel in those
                 distributions

        Change:  Special driver disk compilation mode to include the CRC
                 routine in the driver though it is an external module
                 in normal installation with those distributions

        Impact:  The driver in the driver disk is less efficient due to
                 the CRC algorithmic implementation and not static tables
                 as in the CRC module which is used when loading the driver
                 normally under SuSE10 and RH4

    8.  Problem: (CQ34921) Possible memory leak

        Cause:   rx_page_ring was not freed

        Change:  free rx_page_ring

        Impact:  None

    9.  Problem: (CQ36242) brb_truncate statistics increments to very
                 high numbers

        Cause:   brb_truncate_discard is a 4 bytes variable but 8 bytes were
                 copied to ethtool

        Change:  use brb_truncate from NIG and extend it to 8 bytes

        Impact:  None

    10. Problem: Tx Pause were not send on 1G link

        Cause:   Missing initialization to the EMAC TX_MODE

        Change:  Set FLOW_EN bit in the TX_MODE in addition to the
                 EXT_PAUSE_EN

        Impact:  None

    11. Problem: (CQ36361) Changing speed to 1G on KR switch side
                 results in no link in OS

        Cause:   When Serdes is configured to 1G, it should remove
                 setting MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL bit in
                 MDIO_REG_BANK_SERDES_DIGITAL

        Change:  Unset MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_SEL bit for
                 every link change

        Impact:  None

    12. Problem: Possible loss of attentions

        Cause:   Attention mask register was manipulated without a proper lock

        Change:  Protect attention mask register using hw lock, use read
                 modify write on this register

        Impact:  None

    13. Problem: HW lock was sometimes not taken

        Cause:   HW lock was not taken per function

        Change:  use lock control per function

        Impact:  None

    14. Problem: (CQ36089) RX counter on all functions are incorrect

        Cause:   tstorm_client.statistics_counter_id was 0 for all functions

        Change:  set tstorm_client.statistics_counter_id to the cl_id of the
                 function

        Impact:  None

    15. Problem: (CQ36090) down/up of the interface during traffic on
                 the other interface caused traffic to stop

        Cause:   Aggregation context must be initialized only at COMMON init
                 block

        Change:  Change initialization code and init-tool output

        Impact:  None

    16. Problem: (CQ35672) Doorbell was arriving after halt and before
                 start ramrod

        Cause:   XON/XOFF flow control should be disabled in NIC close flow

        Change:  Fixed XON/XOFF code

        Impact:  None

    17. Problem: (CQ34555) MSI-x PCI spec aberration

        Cause:   PBA table starts from the middle of a page

        Change:  Use GRC access instead of BAR access

        Impact:  None

    18. Problem: Lost link indication in BCM8073.

        Cause:   During link establishment LASI latched signal
                 wasn't reset and stopped link change indication

        Change:  Fixed flow to clean latched LASI signal

        Impact:  None

    19. Problem: Declaring bootcode timeout too soon

        Cause:   The bootcode can take a while to set a link
                 when a link is needed (for example, WoL is
                 enabled). The driver should allow adaptive
                 scheme to wait for the bootcode

        Change:  Waiting up to 2 seconds in 10ms intervals

        Impact:  In some cases, the driver unload process
                 will take up to 2 seconds

    20. Problem: Wrong WoL capability report

        Cause:   The WoL capability was read from the nvram
                 which was not always updated

        Change:  Determine the WoL capability from the PCI
                 configuration space

        Impact:  None

    21. Problem: (CQ36644, CQ366697, CQ36928, CQ36983) On some cases
                 with low traffic, the computer was irresponsive up to
                 the point of soft-lockup and even hard lockup.
                 Ping-pong latency tests always hit this problem and so
                 get very low result

        Cause:   If the FW was at the end of the Rx page, the driver
                 will already be at the beginning of the next page. In
                 this case the condition of having the driver and the FW
                 on the same pointer was never true and so the driver
                 kept polling until timeout or another packet came in.
                 On driver unload (including intermediate driver unload
                 like in MTU change or self-test) the lockup was fatal

        Change:  Change the check for "now work" to handle end of page
                 as well

        Impact:  None

    22. Problem: (CQ36697 CQ36771) Interface locks up when up/down interface

        Cause:   In nic_unload(), call to netif_poll_disable() cause to set
                 __LINK_STATE_RX_SCHED flag that is checked in dev_close() in
                 a loop forever. This flag is cleared by netif_rx_complete()
                 called by bnx2x_poll() which is not called if !netif_running()

        Change:  Reorder nic_unload() - first close interrupts, then only if
                 netif_running() call netif_poll_disable()

        Impact:  None

    23. Problem: (CQ36795) driver fails to load after iSCSI boot

        Cause:   Unloading UNDI by the driver is protected by a HW lock. With
                 a KR (8073) interface, unloading the UNDI takes more than
                 1 sec. Taking the lock by another driver times out after 1 sec
                 then the driver tries also to unload UNDI.

        Change:  Clear UNDI signature and release the lock. Only the driver
                 who saw UNDI signature will continue to unload UNDI.

        Impact:  None

    24. Problem: Allocate skbs for unused aggregation queues in 57710

        Cause:   Allocate skbs for 64 aggregation queues but 57710 has only 32

        Change:  Allocate skbs for max_agg_queues according to chip id

        Impact:  None

    25. Problem: Wrong cleanup on exit from nic_load() in case of a failure

        Cause:   Upon some failure nic_load() exits without disabling and
                 freeing the interrupts

        Change:  Fix to disable and free the interrupts in that case

        Impact:  None

    26. Problem: Potential link problem when loading two ports with 8073
                 PHY

        Cause:   Initializing the 8073 PHY takes more than 1 seconds and
                 the HW lock might expire since it is only trying for 1
                 second

        Change:  Increase the HW lock timeout to 5 seconds

        Impact:  None

    27. Problem: XAUI link on port0 goes down and then up, when the link
                 on port1 is changed

        Cause:   When master port (port1) is down, it will also cause
                 the blade side down. In turn, PLL will change speed
                 from 10G to 1G. It will cause XAUI clock to both ports
                 down and then up again

        Change:  Set bit in the BCM8073 that enables the fix

        Impact:  None

    28. Problem: (CQ36772) KR with 8073 PHY sometimes does not establish
                 link

        Cause:   A missing delay between initializing the PHY SPI ROM
                 and inserting the PHY back to low power mode

        Change:  Add 15ms delay after loading the SPI PHY ROM which is
                 before entering low power mode

        Impact:  None

    29. Problem: Sometimes when unloading the driver a message will
                 appear: "sp_running (j 1)"

        Cause:   Wrong condition, the message should appear only if the
                 counter (j) is greater than 1000. This is a false alarm

        Change:  Fix the print condition

        Impact:  None

    30. Problem: When upgrading 8073 SPI ROM PHY to version 0103 the
                 link will not come up

        Cause:   Register 0x8370 is no longer required in the new
                 version and writing to it cause the link not to come
                 up

        Change:  Remove the write to address 0x8370

        Impact:  None

    31. Problem: On some KR boards when loading driver on port0, and
                 port1 is not loaded, sometimes the XAUI link is not
                 coming up

        Cause:   The 8073 PHY has two ports that share a single clock.
                 This clock is routed to a port deemed to be the master
                 (port 1), and then a PLL at the master sets the clock
                 frequency and routes the buffered clock to both the
                 master XAUI interface as well as the slave (port 0)
                 XAUI interface. If port 0 is loaded while the 8073 PHY
                 SPI ROM is not loaded, the PLL for port 0 is not
                 guaranteed to lock

        Change:  First driver to be loaded reset and download SPI ROM on
                 both ports of the 8073 PHY during one-time
                 initialization

        Impact:  The 8073 PHY is only reset when both ports are brought
                 down

    32. Problem: On some KR boards when unloading driver on port1 port 0
                 might loose link

        Cause:   The 8073 PHY has two ports that share a single clock.
                 This clock is routed to a port deemed to be the master
                 (port 1), and then a PLL at the master sets the clock
                 frequency and routes the buffered clock to both the
                 master XAUI interface as well as the slave (port 0)
                 XAUI interface. If port 1 is unloaded while port 0
                 is in use, the port 0 PLL might loose lock

        Change:  Do not reset the PHY if either driver is still up

        Impact:  The 8073 PHY is only reset when both ports are brought
                 down

    33. Problem: When loading driver after it was loaded before, packets
                 are getting into the chip before the MAC addresses are
                 configured (but not into the host)

        Cause:   The HW filters are not cleared when the driver is
                 unloaded so previous driver configuration is still
                 present

        Change:  Clear HW filters so no packet will come in when driver
                 is unloaded

        Impact:  None

    34. Problem: Driver does not pass the last version of checkpatch.pl

        Cause:   Some updates to the script found some coding standard
                 violations in the code

        Change:  Fixed all reported errors and spelling mistakes

        Impact:  None

    35. Problem: (CQ36492) rx_csum_offload_errors increments for any
                 none TCP/UDP packet

        Cause:   Parsing CQE flags incorrectly

        Change:  Parse CQE flags according to CQE status bits

        Impact:  None

    36. Problem: Packets with IP checksum error are dropped

        Cause:   Dropping packets with IP checksum error

        Change:  Pass packets with IP checksum error to the stack. Drop
                 only packets with L2 errors

        Impact:  None

    37. Problem: (CQ46480) The nomcp module parameter is causing kernel
                 panic

        Cause:   This debug parameter was not needed and not maintained

        Change:  Remove this debug parameter. The driver can detect if
                 the FW is missing and act accordingly

        Impact:  None

    38. Problem: Per function statistics are not cleared on driver load
                 unload

        Cause:   The FW statistics area was not cleared on driver load

        Change:  Clear FW statistics area when loading the driver

        Impact:  None

    39. Problem: (CQ36204, CQ36423) Self-test memory failures reported
                 intermediately

        Cause:   Did not apply the right mask on the HW report caused
                 some false positives

        Change:  Use mask to check only the memory errors report

        Impact:  None

    40. Problem: (CQ36497) Self-test idle_check part is failing

        Cause:   Did not apply the right mask on the HW report caused
                 some false positives

        Change:  Use mask to check only the memory errors report

        Impact:  None

    41. Problem: (CQ36514) Failed to load the driver after iSCSI boot on
                 SuSE10 SP2

        Cause:   The built-in driver from the SuSE10 SP2 (1.42.3) was
                 loaded after the iSCSI-boot

        Change:  Added update.post file to SuSE10 SP2 dd.iso

        Impact:  None

    42. Problem: (CQ36382) Low 1G UDP performance with one connection
                 with flow control disabled

        Cause:   The credits in the transmitter HW caused too much gap
                 between UDP packets in case the flow control was
                 disabled

        Change:  Use the same HW credit as if the flow-control is
                 enabled when the line speed is 2.5G or less

        Impact:  None

    43. Problem: (CQ35662) NVRAM pre-emphasis support does not take
                 effect

        Cause:   Current nvm values didn't actually affect the phy

        Change:  To keep backward compatibility, only in case the
                 "Override pre-emphasis configuration" nvm option is
                 enables, it sets the the tx preemphasis and rx
                 equalizer values for the 4 lanes according to the "XGXS
                 backplane Tx pre-emphasis matrix coef." and "XGXS
                 backplane Rx equalizer matrix coef." respectively

        Impact:  None

    44. Problem: Prevent possible glitch due to speed change without
                 link down in the middle

        Cause:   Currently the NIG goes into drain mode only after link
                 down. If the only the speed was changed from 1G to
                 100Mb, for example, without link-down indication then
                 the FIFO isn't cleaned and glitch due to clk change may
                 occur

        Change:  On speed change set the NIG into drain mode

        Impact:  Several packets may be dropped, but it's ok, since we
                 assume that anyhow several packets were dropped due to
                 the link down

    45. Problem: Fix EMAC initialization setting

        Change:  Currently it is configured inside the enable emac
                 before configuring the EMAC mode. Changed to be after
                 that and should be disabled (with the drain mode
                 setting) at the entrance of the link_update function.
                 In addition, in link down, after putting the nig into
                 drain mode this register should also be disabled.

                 After configuring the mode and before opening the
                 nig_emac#_en, reset the EMAC_REG_EMAC_RX_MODE and
                 EMAC_REG_EMAC_TX_MODE

        Impact:  None

    Enhancements
    ------------
    1.  Request: Error messages might be displayed in unload

        Change:  Check work only on the tx fast path and call bnx2x_tx_int()
                 to handle it. Rx work is handled during halt ramrod

        Impact:  None

    2.  Request: Indicate that there is no WoL support for functions higher
                 than 1 (only 0 and 1 should support WoL)

        Change:  As Requested

        Impact:  None

    3.  Request: Pause in 57711E mode always advertise both Rx and Tx
                 regardless of frame size

        Change:  As Requested

        Impact:  None

    4.  Request: Skb's marked as CHECKSUM_UNNECESSARY (TPA'ed) were
                 passed to the net stack even if user disabled checksum
                 offloading.

        Change:  Disable TPA if Rx checksum offloading is disabled.

        Impact:  There is no way to enabling TPA in kernels older than
                 2.6.26 except unloading and loading the driver

    5.  Request: Do not display internal FW version and enhance
                 readability of the bootcode version

        Change:  As requested

        Impact:  None

    6.  Request: Optimize link setup and support 2.5G

        Change:  Link will be configured on the external PHY before
                 setting up the internal PHY. When needed, only the
                 external PHY will be configured to autoneg. The
                 internal PHY will be set to the obtained speed

        Impact:  None

    7.  Request: Skb's marked as CHECKSUM_UNNECESSARY (TPA'ed) were
                 passed to the net stack even if user disabled checksum
                 offloading.

        Change:  Disable TPA if Rx checksum offloading is disabled.

        Impact:  None

    8.  Request: Incorporated latest firmware 4.6.7 - Add support for
                 priority-based ETH TX queues and enable SAFC pausing
                 per queue

        Change:  As requested

        Impact:  None

Version 1.46.1 (June 25, 2008)
==============================

    Enhancements
    ------------
    1.  Request: Use FW version 4.6.2

        Change:  As Requested

        Impact:  None

Version 1.45.6 (June 23, 2008)
==============================

    Fixes
    -----
    1.  Problem: (CQ35672, CQ35818) Changing MTU under traffic causes
                 driver hang

        Cause:   A rare case of LSO packet alignment, relatively to MSS,
                 caused a HW debug checking for end of packet to fail

        Change:  In computing the end of packet flag, the calculation
                 of the total packet length was modified

        Impact:  None

    2.  Problem: Possible memory corruption on kernels with 64K page size

        Cause:   Inconsistency in using page macros

        Change:  Use only BCM page macros

        Impact:  None

    Enhancements
    ------------
    1.  Request: Add support for TPA (LRO) setting via ethtool

        Change:  As Requested

        Impact:  Kernels after 2.6.26 use this interface to turn off TPA
                 when forwarding enabled due to the limitation of no
                 forwarding (bridging) and TPA together

Version 1.45.5 (June 17, 2008)
==============================

    Fixes
    -----
    1.  Problem: (CQ35691) Undefined symbol __udivdi3 when compiled on
                 32-bit platforms.

        Cause:   There was 64-bit division

        Change:  Reordered the arithmetic expression in order to eliminate the
                 64-bit division

        Impact:  None.

    2.  Problem: (CQ35644) Tx mulicast counter does not increment

        Cause:   start_xmit sets the unicast flag for all packet types

        Change:  Remove the broadcast and mulicast counters

        Impact:  None

    3.  Problem: (CQ35836) Ethtool reports wrong speed when set via CLP

        Cause:   get_settings returns always the max BW set via CLP without
                 considering the actual link speed

        Change:  Return the min between the max BW set via CLP and the actual
                 link speed

        Impact:  None

    4.  Problem: (CQ35859) Ethtool -S reports many jumbo tx packets
                 with MTU set to 1500

        Cause:   There is a different in tx histogram statistics between
                 EMAC and BigMAC

        Change:  Use NIG stats counters instead

        Impact:  None

    5.  Problem: (CQ35114) Self test failure on some systems

        Cause:   pcie_rst_b test can be set and should not be categorized as
                 ERROR

        Change:  Change pcie_rst_b test priority from ERROR to WARNING

        Impact:  None

    Enhancements
    ------------
    1.  Request: Remove non-coherent stats in 57711E

        Change:  As Requested

        Impact:  None

    2.  Request: Remove xSEM_REG_INT_TABLE from memory test

        Change:  As Requested

        Impact:  None

Version 1.45.4 (June 10, 2008)
==============================

    Fixes
    -----
     1.  Problem: (CQ34905) load/unload causes link detect failure

         Cause:   Handling of link events during load wasn't protected

         Change:  Add synchronization in handling of link events during
                  driver load

         Impact:  None

     2.  Problem: (CQ35114) ethtool -t displays idle_check errors

         Cause:   Some idle_check tests were not adopted to support
                  57711

         Change:  Adopt the idle_check

         Impact:  None

     3.  Problem: (CQ35188) ethtool -t displays mc_assert

         Cause:   The mc_assert was checked at incorrect address

         Change:  Fix mc_assert to use different offsets per MC
                  processor

         Impact:  None

     4.  Problem: (CQ35611) CLP min throttling disables throttled
                  functions

         Cause:   Credit delta must be less than two times the
                  threshold

         Change:  credit delta must never be less than two times threshold

         Impact:  None

     5.  Problem: (CQ35184, CQ35364, CQ35575) Compilation problems on
                  SuSE9/10

         Cause:   Some changes for the upstream kernel were not
                  backwards compatible

         Change:  Added backwards compatibility code

         Impact:  None

     6.  Problem: (CQ35571) When running dozens of connections
                  on both ports, receiver freezes

         Cause:   A race between the aggregation timer and the swapping
                  of aggregated connections

         Change:  The timers are saved to RAM at each possible swap of
                  handlers in the FW, to avoid the race

         Impact:  None

    Enhancements
    ------------
    1.  Request: Activate SNR over 8073A1, version 102

        Change:  As Requested

        Impact:  None

    2.  Request: Support CLP speed configuration to establish link up to
                 the requested speed (allow 1G when 10G is requested)

        Change:  As Requested

        Impact:  None

    3.  Request: Do not set XAUI low power on 8073A0

        Change:  As Requested

        Impact:  None

    4.  Request: Set flow-control for 8073

        Change:  As Requested

        Impact:  None

Version 1.45.2 (May 29, 2008)
=============================

    Fixes
    -----
     1.  Problem: Style changes for open source submission

         Cause:   Making sure we pass SPARS and checkpatch.pl

         Change:  Whitespace changes

         Impact:  None

    Enhancements
    ------------
    1.  Request: Add PCI-E EEH handlers

        Change:  As Requested

        Impact:  None

Version 1.45.1 (May 26, 2008)
=============================

    Fixes
    -----
     1.  Problem: (CQ34964) ethtool -a/A is broken

         Cause:   The autoneg define changed to value of zero and broke
                  the code

         Change:  Use comparison instead of bit-wise logical and

         Impact:  None

     2.  Problem: (CQ35123) Support for 32bit Kernels is broken

         Cause:   The TPA code had a 64 bit address that broke the
                  32bits support

         Change:  Fixed the upper 32bits of the address to zero in 32bit
                  Kernel

         Impact:  None

     3.  Problem: (CQ35123) Support for Big-endian is broken

         Cause:   The TPA and SGE code was not big-endian compliant

         Change:  The necessary le_to_cpu were added

         Impact:  None

     4.  Problem: Failed to work on emulation with MCP

         Cause:   The time interval between the pulses towards the MCP
                  was the same for ASIC and emulation

         Change:  Increased the time interval between MCP pulses for
                  emulation/FPGA

         Impact:  None

     5.  Problem: (CQ34313) Compilation error on SuSE

         Cause:   Broken in last drops

         Change:  Fix the errors

         Impact:  None

     6.  Problem: (CQ35124) Kernel panic when unloading NIC with shared
                  INTA

         Cause:   The interrupts were masked when unloading, but the
                  handler was still present. In case of shared INTA
                  line, the handler was called after freeing the
                  resources due to other device interrupt

         Change:  Free the interrupt handler when masking all
                  interrupts on unload. Clear old interrupt before
                  registering the IRQ on load.

         Impact:  None

     7.  Problem: Failed to re-load the driver (after unload) on the
                  upstream kernel

         Cause:   The fast path structures which are used by NAPI where
                  released on unload and re-allocated on load

         Change:  Use static allocation for the fast-path structures

         Impact:  None

    Enhancements
    ------------
    1.  Request: (CQ34895) Change Linux Driver Disk Images from Floppy
                 to ISO Format

        Change:  As Requested

        Impact:  None

    2.  Request: (CQ34931, CQ34976) Replace RH4.5 binaries with RH4.6

        Change:  As Requested

        Impact:  None

    3.  Request: Link down indication should be at error level and
                 not information

        Change:  As Requested

        Impact:  None

    4.  Request: BCM57711E Support MIN/MAX bandwidth control

        Change:  As Requested

        Impact:  None

    5.  Request: Support BCM8073A1 external PHY

        Change:  As Requested

        Impact:  None

    6.  Request: Support Transparent Packet Aggregation (TPA) for 57711E

        Change:  As Requested

        Impact:  None

    7.  Request: Support WoL

        Change:  As Requested. This feature requires bootcode 4.4.7 or
                 later

        Impact:  None

    8.  Request: Not allowing any ethtool link change (speed and flow
                 control) in 57711E

        Change:  As Requested

        Impact:  None

    9.  Request: Reporting the function max speed as the current speed
                 (and not the port speed) for 57711E

        Change:  As Requested

        Impact:  None

   10.  Request: Only the port master driver can run the link test (part
                 of the self-test)

        Change:  As Requested

        Impact:  None

Version 1.46.0 (May 01, 2008)
=============================
**** This version should have been named 1.45.0 (and not 1.46.0) ****

    Fixes
    -----
     1.  Problem: Possible bug on DMAE reads (write from the chip to the
                  host)

         Cause:   HW limitation that was not obeyed

         Change:  DMAE reads (write from the chip to the host) is
                  limited to 128 DWORDS

         Impact:  None

    Enhancements
    ------------
    1.  Request: Support approximate match for multicast MACs

        Change:  As Requested

        Impact:  New module dependency for bnx2x driver
                 Run 'modprobe crc32c' before 'insmode bnx2x.ko'

    2.  Request: Support statistics on 57711

        Change:  As Requested

        Impact:  None

Version 1.44.12 (April 21, 2008)
================================

    Fixes
    -----
     1.  Problem: (CQ34845) Autoneg flow-control is broken

         Cause:   Broken in last drops - wrong check of the autoneg
                  result

         Change:  Fixed the autoneg result check

         Impact:  None

     2.  Problem: (CQ34313) Compilation error on SuSE10

         Cause:   Broken in last drops

         Change:  Fix the errors

         Impact:  None

Version 1.44.11 (April 16, 2008)
================================

    Fixes
    -----
     1.  Problem: PHY loopback was not performed as part of the
                  self-test

         Cause:   The PHY loopback did not wait for the link to be
                  established

         Change:  Wait for loopback to establish link before starting
                  the test

         Impact:  None

     2.  Problem: (CQ34313) Compilation error on SuSE9 SP3

         Cause:   Broken in last drops

         Change:  Fix the errors

         Impact:  None

Version 1.44.10 (April 15, 2008)
================================

    Fixes
    -----
     1.  Problem: Occasional failures in the self-test

         Cause:   Few registers should not have been included in the
                  registers test. The PHY loopback test fails on some
                  systems

         Change:  Removed some of the registers that should not have
                  been included in the first place from the
                  registers test. Removed the PHY loopback test - only
                  the MAC loopback test is executed

         Impact:  None

Version 1.44.9 (April 14, 2008)
===============================

    Fixes
    -----
     1.  Problem: Kernel panic after stressing bi-directional data over
                  night

         Cause:   A bug in the none-TSO fragmented Tx packets

         Change:  Fix the Aggregation rule of none-TSO packets

         Impact:  None

     2.  Problem: Possible bug when unloading and reloading the driver:
                  we are not guarantee to allocate all IRQs

         Cause:   The allocation is not guaranteed

         Change:  Force every nic_unload to release the IRQs

         Impact:  None

     3.  Problem: Possible bug on low memory systems

         Cause:   Number of BDs must be at least equal to number of CQEs

         Change:  Force the rule on init

         Impact:  None

     4.  Problem: Failures on rmmod

         Cause:   Sleep in timer context

         Change:  No sleep on timer context - simply wait for next tick

         Impact:  None

     5.  Problem: DMAE timeout problem on 57711

         Cause:   DMAE needs to be configured differently

         Change:  Reduce the MPS of the DMAE client

         Impact:  None

     6.  Problem: No link on some functions on 57711

         Cause:   A link report call was missing after link update

         Change:  Added link report after link update

         Impact:  None

    Enhancements
    ------------
    1.  Request: Adding internal PHY and MAC loopback tests to
                 ethtool -t (no external PHY and no cable PHY loopback)

        Change:  As Requested

        Impact:  None

    2.  Request: Update idle_check in self test

        Change:  As Requested

        Impact:  None

Version 1.44.8 (April 09, 2008)
===============================
**** Starting from this version, there are 2 C files ****

    Fixes
    -----
     1.  Problem: (CQ34604) Kernel panic after stressing Tx Data over
                  night

         Cause:   The driver did not handle fragmented Tx packets

         Change:  Aggregating packets which are too fragmented for the
                  FW

         Impact:  None

     2.  Problem: (CQ34586) Warning message after configuring eth port

         Cause:   Did not synchronized the DMAE of the statistics with
                  load/unload operations

         Change:  Changed the statistics mechanism to a state machine
                  which is aware of the device state and DMAE state

         Impact:  None

     3.  Problem: (CQ34313) Compilation error on SuSE9 SP3 x86-64

         Cause:   Compatibility issue

         Change:  Fixed

         Impact:  None

     4.  Problem: (CQ34067) Debug prints are displayed when using the
                  use_multi compilation flag

         Cause:   The debug level of the prints was high

         Change:  Reduced the prints debug level so they will not be
                  displayed by default

         Impact:  None

    Enhancements
    ------------
    1.  Request: (CQ33897) Support BCM8073 PHY

        Change:  As Requested

        Impact:  This is still an initial HW revision of the BCM8073 PHY
                 so changes might be needed as the PHY HW or FW evolve

    2.  Request: (CQ33845) Turn off link LED when link is not active

        Change:  As Requested

        Impact:  None

    3.  Request: Displaying PHY FW (when applicable) at ethtool -i

        Change:  As Requested

        Impact:  None

    4.  Request: Upgrading the SFG10 FW from ethtool -E

        Change:  As Requested

        Impact:  None

    5.  Request: Adding Registers test to ethtool -t

        Change:  As Requested

        Impact:  None

    6.  Request: Adding Memory test to ethtool -t

        Change:  As Requested

        Impact:  None

Version 1.44.7 (March 31, 2008)
===============================

    Fixes
    -----
     1.  Problem: (CQ34445) Interface got stuck when stress with UDP
                  and TCP simultaneously

         Cause:   Wrong CQE size initialization

         Change:  Fixed CQE ring initialization

         Impact:  None

     2.  Problem: No traffic on higher functions on 57711

         Cause:   Need to send the client ID in messages to FW

         Change:  Add client ID to the required messages

         Impact:  None

     3.  Problem: Wrong link indication on 57711

         Cause:   The link was not updated correctly on 57711

         Change:  Update the link indication mechanism in 57711

         Impact:  None

     4.  Problem: Update coalescing is not working

         Cause:   Wrong parameter was used

         Change:  Changed to the required parameter

         Impact:  None

Version 1.44.6 (March 26, 2008)
===============================

    Fixes
    -----
     1.  Problem: (CQ34445) Interface got stuck when stress with UDP
                  and TCP simultaneously

         Cause:   The BD producer that was passed to the FW was wrapped
                  according to the size of the BD ring and not 16 bits
                  range as expected

         Change:  Wrap the BD producer according to 16 bits range

         Impact:  None

    Enhancements
    ------------
    1.  Request: full TPA support

        Change:  TPA is now fully supported with the expected
                 performance

        Impact:  None

Version 1.44.5 (March 24, 2008)
===============================

    Enhancements
    ------------
    1.  Request: Initial support for TPA

        Change:  TPA is now supported, but the throughput is still lower
                 than in the DEMO_TPA version - a new version with
                 enhanced throughput is being constructed

        Impact:  None

    2.  Request: (CQ34011) Add module parameter to disable TPA

        Change:  As requested. For now, TPA is always disabled on 57711

        Impact:  None

    3.  Request: CNIC Support

        Change:  As requested. By default, CNIC support is not part of
                 the bnx2x - BCM_CNIC should be defined to enable it.

        Impact:  None

Version 1.44.4 (March 20, 2008)
===============================

    Fixes
    -----
     1.  Problem: DEMO_TPA was broken on 0.44.3

         Cause:   Compilation problem due to MACRO rename

         Change:  Rename the MACRO for DEMO_TPA as well

         Impact:  None

     2.  Problem: (CQ43424) Cannot link SFP module at 1G with Dell
                  PowerConnect 6224

         Cause:   The Dell switch supports only autoneg and not forced
                  1G

         Change:  Changed the 1G implementation to autoneg with only 1G
                  advertisement

         Impact:  When choosing 1G speed, the speed is achieved via
                  autoneg and not forced

    Enhancements
    ------------
    1.  Request: Support Emulation, FPGA and ASIC in a single module
                 file

        Change:  Changed the init values and the init routine to support
                 all the compilation of 57710/57711 ASIC/CHIP/EMUL

        Impact:  The size of the binary and the source code is bigger
                 mainly due to having two ASM images

    2.  Request: Add link update support for 57711

        Change:  Added

        Impact:  None

    3.  Request: Add HW statistics for 57711

        Change:  Added

        Impact:  Only HW (errors) statistics will be displayed since the
                 feature is not yet supported by FW

    4.  Request: Add nvram test

        Change:  Added

        Impact:  None

    5.  Request: Add link test

        Change:  Added

        Impact:  None

    6.  Request: Add interrupt test

        Change:  Added

        Impact:  None

Version 0.44.3 (March 12, 2008)
===============================
*** TPA is not functional on this release ***

    Fixes
    -----
     1.  Problem: (CQ #34103) DKMS driver diskette update.tar.gz do not
                  have smp directory

         Cause:   DKMS driver diskette was created only for the default
                  SuSE kernels

         Change:  Add all supported SUSE kernels into the DKMS driver
                  diskette Note: The size of the DKMS driver diskette
                  for the SUSE distributions is 14400 kb. This size is
                  appropriate for USB or CD devices

         Impact:  None

    Enhancements
    ------------
    1.  Request: Add support for 57711

        Change:  Added preliminary support

        Impact:  None

    2.  Request: Remove module param 57711E

        Change:  Move to bp and initialized from analyzing CLP
                 information

        Impact:  None

    3.  Request: Add fw_dump() to panic_dump()

        Change:  Call fw_dump() before idle_chk()

        Impact:  None

    4.  Request: Separate bp information to fast-path/common/port/
                 function

        Change:  Divide bp structure into common/port/function
                 structures Divide get_hwinfo() into common/port/
                 function. Initialize outer VLAN and MAC from CLP
                 information in 57711E mode Note: CLP FUNC_DISABLED
                 is not handled correctly

        Impact:  None

    5.  Request: Set link_status according to link_up status

        Change:  link_status was set according to phy_link_up status

        Impact:  None

    6.  Request: Add is_pmf flag

        Change:  is_pmf flag is initialized from MCP load_code and by
                 general attention from MCP

        Impact:  None

    7.  Request: Fix attentions in 57711

        Change:  Init MISC_REG_AEU_MASK_ATTN according to 57711E
                 status Handle attention bits in IGU per function

        Impact:  None

    8.  Request: Clear HW blocks attentions

        Change:  Clear HW blocks attentions and call panic()

        Impact:  None

    9.  Request: Call fw_dump() on MCP assert

        Change:  Call fw_dump() instaed of mc_assert() on MCP assert

        Impact:  None

    10. Request: Do not send STAT_QUERY ramrod if previous stat ramrod
                 didn't return

        Change:  Do not send STAT_QUERY ramrod if previous stat ramrod
                 didn't return Call panic() if stats didn't updated for
                 3 times

        Impact:  None

    11. Request: Separate init_board() into init_dev() and init_bp()

        Change:  Divide init_board() into init_dev() and init_bp()

        Impact:  None

    12. Request: Fix directory name for SuSE

        Change:  Add sles9 and sles10 to the names

        Impact:  None


Version 1.42.3 (February 28, 2008)
==================================

   Fixes
   -----
   1.  Problem: Changing the link speed to "autoneg on" the A1022G will
                cause driver failure

       Cause:   This board is using TP for the 10G interface, but the command
                was interpreted as a request to move to the 1G interface which
                is inactive on this board

       Change:  Do not support switching interfaces since no production board
                has this feature

       Impact:  A user will not be able to switch between the two valid
                interfaces of the T1001 test board without changing the nvram
                configuration


Version 1.42.2 (February 20, 2008)
==================================

   Fixes
   -----
   1.  Problem: TSO is not working against some none Linux clients

       Cause:   TCP flags were not transmitted correctly on TSO packets

       Change:  Corrected bit extraction in tcp_flag_word()

       Impact:  None


Version 0.42.1 (February 14, 2008)
==================================

    Fixes
    -----
     1.  Problem: (CQ #33344) Remove warnings from ethtool -t

         Cause:   The warnings were just debug prints

         Change:  Print is depended on msglevel.
                  Set msglevel in bnx2x_panic_dump() before calling bnx2x_idle_chk()

         Impact:  None

     2.  Problem: (CQ #33638) Remove warnings when failing to enable MSI-X

         Cause:   The warnings was just a debug print

         Change:  Print is depended on msglevel.
                  Change the printed message from error/failure to a notification

         Impact:  None

     3.  Problem: (CQ #33547) Flow control does not work on A1022G board

         Cause:   The flow control was not configured/read at the PHY

         Change:  Implemented the flow control code at the PHY

         Impact:  flow control is now working via autoneg. Please force it if
                  the link partner does not support flow control autoneg

    Enhancements
    ------------
    1.  Request: (CQ #33425) RPM installation fails on some machines

        Change:  Fix installation - copy bnx2x.ko from extra to kernel/drivers/net

        Impact:  None


Version 0.42.0 (February 04, 2008)
==================================
*** This version requires bootcode 4.2.0 or later ***

    Fixes
    -----
     1.  Problem: (CQ #33344) Remove warnings from ethtool -t

         Cause:   The warnings were just debug prints

         Change:  Changed the debug level so by default nothing will be printed

         Impact:  None

     2.  Problem: (CQ #33638) Remove warnings when failing to enable MSI-X

         Cause:   The warnings was just a debug print

         Change:  Changed the debug level so by default nothing will be printed

         Impact:  None

     3.  Problem: (CQ #33533) Failed to install A1022G on 32bits machines

         Cause:   The board is requesting 128MB for BAR2 and the memory
                  allocation fails

         Change:  Allocate only the required amount of memory and not the
                  entire BAR

         Impact:  None

    Enhancements
    ------------
    1.  Request: (CQ33571) new 'shared memory' layout for T4.0E/T4.2 that will
                 be compatible with T4.4 new features

        Change:  As requested

        Impact:  Requires bootcode 4.2.0 or later

    2.  Request: (CQ #33214) Add placeholder to be compatible with the BMPI

        Change:  Added placeholders - the full implementation is scheduled
                 for T4.4

        Impact:  None

    3.  Request: Update the KR code

        Change:  Added placeholders - the full implementation is scheduled
                 for T4.4

        Impact:  None


Version 0.40.19 (January 14, 2008)
==================================

    Fixes
    -----
     1.  Problem: (CQ #31090) Rx pause remains ON after autoneg is retuned
                  back to ON even if MTU > 4500.

         Cause:   Autoneg flow control flag was not considered for
                  advertisement and resolve of the pause mode.

         Change:  Fix the advertisement and the resolve of the pause mode to
                  consider user requests and system constraints.

         Impact:  None

     2.  Problem: Autoneg flow control is ON for XFP cards.

         Cause:   Autoneg flow control from NVRAM is considered without check
                  if autoneg is supported.

         Change:  Autoneg flow control from NVRAM is considered only if
                  autoneg is supported.

         Impact:  None

     3.  Problem: ethtool shows 'Port: FIBRE' for the 10GbaseT interface.

         Cause:   Resolve the port type according to XGXS flag.

         Change:  get settings resolves the XGXS port type in use according to
                  external phy config.

         Impact:  None

     4.  Problem: (CQ #33092, #33215) Unload/load sequence under UDP traffic
                  (receiver) hanged slow path

         Cause:   Wrong flow in resetting HW blocks

         Change:  HW blocks reset flow has been changed

         Impact:  None

     5.  Problem: (CQ #33305) Changing MTU to 9000 was jamming TCP traffic

         Cause:   LSO wasn't properly enabled on some Kernels

         Change:  Fixed LSO enabling code for all kernels

         Impact:  None

    Enhancements
    ------------
    1.  Feature: Wait for completion for ramrods sent during nic unload was
                 only by polling and not by an interrupt.

        Change:  stop multi and stop leading are using poll if netif is not
                 running and interrupt otherwise.

        Impact:  None

    2.  Request: Add workaround for bug in PXP that causes PXP attention on
                 stress scenarios due to under run situation between PXP and
                 USDM

        Change:  The workaround was added

        Impact:  None


Version 0.40.18 (January 03, 2008)
==================================

    Fixes
    -----
     1.  Problem: (CQ #33148) After "make install" command 'modprobe bnx2x'
                  displays "Module bnx2x not found".

         Cause:   Linux Makefile runs depmod automatically only if System.map
                  exists.

         Change:  Run depmod after modules_install.

         Impact:  None

     2.  Problem: (CQ #33054) Link is not detected after configuring BCM57710
                  port with Suse 10Sp1.

         Cause:   HW fails to use INTA after using MSI-X.

         Change:  Set MSI_MSIX_INT_EN bit in HC_CONFIG REG to use INTA after
                  MSI-X.

         Impact:  None

     3.  Problem: (CQ #33190) ifconfig command showed errors received. But
                  ethtool -S ethx did not show any errors.

         Cause:   Some error counters did not have a bin to be printed by
                  ethtool -S command.

         Change:  Add appropriate bins for the missed counters.

         Impact:  None


      4. Problem: BSOD on T1002 boards.

         Cause:   A new code was added that manipulate GPIO 1 for external phy
                  reset. On T1002 board this GPIO control the PERST_L_BYPASS.

         Change:  Do not manipulate GPIO 1 on T1002 boards

         Impact:  None

    Enhancements
    ------------
    1.  Feature: Add support for IPv6 checksum and IPv6 TSO.

        Change:  The support was added

        Impact:  None

    2.  Feature: Add fan failure detection and external PHY power down for the
                 A1022G

        Change:  When a fan failure is detected (indicated by SPIO5) on the
                 A1022G, the driver will shutdown the PHY (reset and low power
                 mode, using GPIO1+2) and issue a warning message

        Impact:  When fan failure occurs the link will go down until server
                 reset


Version 0.40.17 (December 17, 2007)
===================================

    Fixes
    -----
     1.  Problem: (CQ #33023) Pause RX is on when driver is loaded with
                  MTU > 4500.

         Cause:   Pause mode was computed from the requested flow control
                  parameter in NVRAM without considering the MTU size.

         Change:  Resolve the pause mode only before advertising the flow
                  control.

         Impact:  None

     2.  Problem: Pause autoneg can be set on for XFP cards.

         Cause:   Pause autoneg mode was always accepted from user.

         Change:  Pause autoneg is not supported if speed autoneg is not
                  supported (e.g. XFP cards).

         Impact:  None

     3.  Problem: (CQ #33044) make install fail.

         Cause:   No make install target in Makefile.

         Change:  Add make install target to Makefile.

         Impact:  None

     4.  Problem: (CQ #33057) No README.TXT in driver release folder.

         Cause:   No README.TXT in driver project.

         Change:  Add README.TXT in driver release folder.

         Impact:  None

     5.  Problem: (CQ #32541) No README.TXT in driver tarball.

         Cause:   No README.TXT in driver project.

         Change:  Add README.TXT to driver tarball and change the directory
                  name.

         Impact:  None

    Enhancements
    ------------
    1.  Request: Add parity and assert regs for idle check.

        Change:  The check was added

        Impact:  None

    2.  Request: Add workaround for threshold mechanism for usdm-dp

        Change:  The workaround was added

        Impact:  None

    3.  Request: Add workaround for full Tetris buffer bug.

        Change:  The workaround was added

        Impact:  None

    4.  Request: Add support for the SFG10 PHY

        Change:  The support was added

        Impact:  None

    5.  Request: Add support for the BCM8072 PHY

        Change:  The support was added. The code is still not 100% functional

        Impact:  None

    6.  Request: Change the MDC/MDIO CL45 scheme

        Change:  The functions are more generic:
                 - Supports different MDC/MDIO controller
                 - Reduce the clock to 2.5MHz
                 - Less PIO writes (writing all the required information at
                   one attempt)

        Impact:  All external PHY access are using a slower (standard)
                 MDC/MDIO clock

    7.  Request: Hard reset external PHYs

        Change:  The external PHYs are now reset via GPIO. Before working with
                 an external PHY, a reset pulse of 1ms is generated, and when
                 the driver is down, the external PHY is kept in reset

        Impact:  Link partner should always see link down when the link is down

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

    Fixes
    -----
     1.  Problem: (CQ #32296) VLAN broken on older Kernels.

         Cause:   vlan_kill_vid() removed in newer versions is needed by older
                  kernels to allow loading.

         Change:  Re added function.

         Impact:  None

     2.  Problem: (CQ #29543) System panicked if receiving UDP data while load
                  and unload

         Cause:   sp_task work was not synchronized with int_disable_sync()

         Change:  move sp_task to work_queue element

         Impact:  None


     3.  Problem: (CQ #32430) XFP port showed link lights on and link
                  detected = yes when configured port up with no cable
                  attached

         Cause:   Link_up was declared by local phy (XGXS) link up without
                  the external phy (8705) link status

         Change:  Link up is now the combination of local phy (XGXS) link up
                  and external phy (8705) link up

         Impact:  None

    Enhancements
    ------------
    1.  Request: Print PCI link properties upon load.

        Change:  The print was added

        Impact:  None

Version 0.40.15 (November 15, 2007)
==================================

    Fixes
    -----
     1.  Problem: On heavy traffic scenarios, the machine halted due to
                  PCI problem

         Cause:   A HW change in A1 boards requires some registers that
                  controls the PCI credit to be changed as well

         Change:  Updating the PXP credit registers

         Impact:  None

     2.  Problem: (CQ #31120) The traffic LED was not active for lower
                  speeds

         Cause:   A new bootcode is required to set the traffic LED
                  when the speed is less then 10G (using the emac and
                  not the bmac)

         Change:  The set LED routine was updated and bootcode 4.0.10
                  or above is required to have the LED functional

         Impact:  None

     3.  Problem: Found a bug when doing ifconfig down/up during
                  traffic. In this case FW can assert

         Cause:   A packet that was received before unloading driver
                  stayed in Pbuff, and was processed after loading the
                  driver again

         Change:  Added the reordering mechanism to slow path handlers

         Impact:  Implementation of all L2 slow-path commands was modified

     4.  Problem: (CQ #30160) Removed false positives from the self test
                  (ethtool -t)

         Cause:   Many tests in the self test were designed to check halted
                  system (after fatal error) and the test assumed that the
                  chip is idle

         Change:  Any test that can happen while the chip is operational was
                  changed to "info" debug print and is not counted as warning
                  or error

         Impact:  The self test is more reliable

    Enhancements
    ------------
    1.  Request: Forward preparation in the code for 57711

        Change:  Using only two DMAE clients per port. Using "port" instead of
                 "function".

        Impact:  Not visible to the user

    2.  Request: Block RX Pause if Auto-pause was selected and the MTU > 4500
                 to prevent performance retrogression when using PAUSE with big
                 packets

        Change:  The auto-pause resolution will be only TX pause if the MTU
                 is larger than 4500. Force pause mode will be obeyed as
                 requested

        Impact:  Jumbo frames with auto-pause will achieve higher throughput

    3.  Request: Report HW errors

        Change:  Parity and blocks errors attentions code was added to the
                 driver. Not all indications are enabled.

        Impact:  In case of an assert in the chip, the user will get an
                 error notification

    4.  Request: Added the ability to support multi interrupt queues from
                 kernel 2.6.24 and above

        Change:  Allow ISR and NAPI (the stack processing) to run on several
                 CPUs. The new feature is disabled by default

        Impact:  Can reduce latency in some cases

    5.  Request: Move slow-path to work-queue to allow sleeps

        Change:  The slow-path is now implemented as work queue

        Impact:  Better fairness to other host drivers

    6.  Request: Changes with statistics requirements due to
                 performance enhancement and preparation for next
                 features.

        Change:  a. Removed rcv_error_bytes
                 b. Replaced errors_discard stat by: mac_discard stat,
                    checksum_discard stat and packet_too_big_discard
                    stat
                 c. Removed statistics histogram

        Impact:  The displayed statistics format was changed

    7.  Request  Remove FW interrupts that are not needed

        Change:  FW no longer interrupts the driver for reading a new slow-path
                 element (it updates driver only when completing processing it)

        Impact:  None

    8.  Request: Support easier SuSE compilation

        Change:  In previous version, a flag in bnx2x.c was required
                 in order to compile under SUSE. In the new implementation
                 the make file can be used in the following way:
                 SLES9  command: make EXTRA_CFLAGS+=-DBNX2X_SLES_9
                 SLES10 command: make EXTRA_CFLAGS+=-DBNX2X_SLES_10

        Impact:  SLES compilation procedure is different now

Version 0.40.14 (November 06, 2007)
==================================

    Enhancements
    ------------
    1. Naming the TCP performance improvement feature TPA (still for demos only)

Version 0.40.13 (November 05, 2007)
==================================

   Enhancements
   ------------
    1. Added support for L2 Rx TCP performance improvements in a special mode
       (implementation for demos only). This support is disabled by default and
       requires a change of compilation flag to enable.
    2. Added support for vanilla kernel 2.6.18.5, SLES9, and RHES4

Version 0.40.12 (October 29, 2007)
==================================

   Fixes
   -----
    1.  Problem: A fragmented Tcp/Udp packet might have been wrongly dropped

        Cause:   parser doesn't checks tcp/udp checksum for fragmented
                 packets

        Change:  FW will report to driver the tcp/udp checksum wasn't
                 Validated if the packet was fragmented

    2.  Problem: ethtool -S|r|t eth[x] on un-configured port causes
                 errors/panic

        Cause:   When port is un-configured memory is not allocated and
                 blocks in chip can be in reset

        Change:  Check driver state in nway_reset() and self_test() and
                 check memory pointer in get_ethtool_stats()

   Enhancements
   ------------
   1. Supporting the upstream Kernel including new NAPI approach
   2. Open source coding standard modifications throughout the code,
      including new init code, new HSI header files, new registers
      definitions, SPARSE fixes and checkpatch.pl fixes
   3. Replaced patches mechanism with #ifdefs
   4. Supporting big-endian machines
   5. Supporting nVidia chipsets with MCP55
   6. Support checksum offload for A1 boards (modification with some flag in
      PBF command)

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

       Bug fix version, no new features



Version 4.0.9 (August 10, 2007)
===============================

       New features:
       -------------

       1. Updated to firmware version 4.0.7.

       2. Added support for ethtool EEPROM options.




Version 4.0.7 (July 23, 2007)
=============================


       New features:
       -------------

       1. Added support for flow control.

       2. Added patch for Kernel 2.6.22.x.




Version 4.0.6 (July 11, 2007)
=============================


       New features:
       -------------

       1. Added support for new bootcode 4.0.2.



Version 4.0.5 (June 29, 2007)
=============================


       Fixes:
       ------

       1. Problem:
               Linux stack rechecked the RX checksum.

          Cause:
               In most cases, the indication of RX checksum was wrong
               causing the Linux stack to recheck.

          Fix:
               Indication mistake was fixed.

       2. Problem:
               NFS UDP test failed writing to server.

          Cause:
               Incorrect HW init values.

          Fix:
               HW init values were corrected in the driver.

       3. Problem:
               MTU change cause system to assert.

          Cause:
               Memory leak in the ifconfig up/down sequence.

          Fix:
               Memory leak fixed in driver.



Version 4.0.1 (June 15, 2007)
=============================

       New features:
       -------------

       1. Added Power management is support.

       2. Added WoL is support.

       3. Auto-negotiation and speed & duplex is supported.

       4. Updated firmware version to v4.0.2.

       5. Support for Ethtool.

       6. Changing MTU can be done when link is up.



Version 0.30.1 (June 4, 2007)
============================

       New features:
       -------------

       1. Updated firmware version to v0.30.0.


Version 0.29.1 (May 21, 2007)
============================

       New features:
       -------------

       1. Updated firmware version to v0.29.0.



Version 0.27.5 (May 7, 2007)
============================

       New features:
       -------------

       1. Interrupt coalescing values have been optimized.

       2. Updated to Linux Kernel 2.6.20.7.


       Fixes:
       ------

       1. Problem:
               High performance scenarios involving many threads could have
               caused tx ring overrun.

          Cause:
               SNP concurrency driver bug.

          Fix:
               Driver related code was fixed.




Version 0.27.1 (Apr 23, 2007)
============================

       New features:
       -------------

       1. Added speed and activity support for LEDs.



       Fixes:
       ------

       1. Problem:
               Low performance when running Netperf TCP_RR.

          Cause:
               Driver bug caused a the driver to enter a busy loop in
               certain cases when there was no RX processing queued.

          Fix:
               The logic used to decide if there is pending RX work was
               corrected.


       2. Problem:
               XFP link detection problem - intermittent issue.

          Cause:
               Driver would not get link change interrupt.

          Fix:
               Corrected the setting of the link change interrupt.
