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

                Broadcom BCM57710/BCM57711/BCM57711E 10 GigE VBD
                                  For Linux

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

Version 1.48.107 (Mar 09, 2009)
===============================
    Fixes
    -----
    1.  Problem: (CQ39837) Driver stops passing TCP traffic with TPA on IA-64
                 with 64KB page size on 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

        Fix:     Add a proper casting for the argument of SGE_PAGE_ALIGN macro

        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)

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     Don't clear the "MSI reconfigure enable" bit

        Impact:  None

    7.  Problem: Uninitialized HW blocks

        Cause:   XCM and BRB1 port init part were missing

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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.

        Fix:     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

        Fix:     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)

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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.

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     Create private workqueue

        Impact:  None

    5.  Problem: (CQ38139) iSCSI FW: Performance < 40% of Peak Advertised

        Cause:   Inefficient implementation of ring management in firmware

        Fix:     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

        Fix:     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

        Fix:     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.

        Fix:     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

        Fix:     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

        Fix:     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)

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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.

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     Workaround in the code

        Impact:  None

    3.  Problem: (CQ36673) iSCSI FW: Hardware attention on MaxLuns

        Cause:   Activity count leak in Ustorm microprocessor

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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.

        Fix:     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

        Fix:     Fixed in FW 4.6.10

        Impact:  None

   5.  Problem:  (CQ37090) Placement of RQ data to wrong address

        Cause:   ASM problem

        Fix:     Fixed in FW 4.6.10

        Impact:  None

   6.  Problem:  (CQ36912) BSOD when destroying erroneous connections

        Cause:   Activity count leak

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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()

        Fix:     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.

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

        Fix:     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

         Fix:     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

         Fix:     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

        Fix:     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

        Fix:     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.
