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

                Broadcom BCM57710/BCM57711/BCM57711E 10 GigE VBD
                                  For Linux

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

Version 1.46.13 (Jan 08, 2009)
==============================

    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

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.
