                              Release Notes
                        Broadcom tg3 Linux Driver
                              Version 3.124c
                                08/17/2012

                          Broadcom Corporation
                         5300 California Avenue,
                            Irvine, CA 92617

              Copyright (c) 2010 - 2012 Broadcom Corporation
                           All rights reserved


v3.124c (Aug 17, 2012)
========================
    Enhancements
    ------------
        1) Change : Remove the gathering of platform statistics feature
	            as it is not needed now.
           Impact : ESX only

v3.124b (Aug 14, 2012)
========================
    Fixes
    -----
        1) Problem: Very intermittent crash during reboot test.  Very hard to
                    reproduce.
           Cause  : A very small race condition in tg3_get_stats().
           Change : Get spinlock before checking for valid hardware stats
                    block.  There is a small possibility of the stats block
                    becoming NULL (because of shutdown) if we get the
                    spinlock after the check.
           Impact : Statistics reporting.

        2) Problem: (CQ65077) Vmware VM's network traffic stuck during stress
                    for 5717. 
           Cause  : RSS was enabled by mistake.
           Change : Limit irq number for ESX if NetQ is not enabled or device
                    is not IOV capable.
           Impact : MSI-X devices on VMWare only.

v3.123m (July 24, 2012)
========================
    Fixes
    -----
        1) Problem: (CQ63587) Intermittent loopback failure on 5719.
           Cause  : The first 4 TX packets may be stuck if some internal
                    registers have uninitialized values after POR.
           Change : Added workaround to check for invalid values in those
                    registers and set register 0x4910 bit 25 to workaround
                    the problem.
           Impact: 5719.
        2) Problem: (CQ64145) Failure to bring up 57766.
           Cause  : EEE firmware patch loading failure on devices using
                    self boot.
           Change : Fixed firmware loading logic in 57766.
           Impact : 57766 with selfboot.  Please verify EEE on 57766.

v3.123l (July 19, 2012)
========================
    Fixes
    -----
        1) Problem: (CQ64707, CQ64711) Compile error or modprobe error with
                    undefined symbols on some kernels.
           Cause  : IS_ENABLED macro to check kernel config options not
                    properly defined.  This was introduced when adding
                    1588 support to the driver.
           Change : Added complete IS_ENABLED macros from upstream for
                    older kernels that don't have the macro.
           Impact : None

    Enhancements
    ------------
        1) Change : Added hwmon sensor information to README and man page.
           Impact : None

v3.123k (July 17, 2012)
========================
    Fixes
    -----
        1) Problem: Problem running 5906.
           Cause  : Short DMA workaround not properly applied.
           Change : Applied Short DMA workaround for 5906.
           Impact : 5906 only.
    
        2) Problem: VLAN bridge traffic not getting through when NCSI is
                    enabled.
           Cause  : VLAN tag is stripped when NCSI is enabled.  The tag needs
                    to be re-inserted and there is a bug in the re-insertion
                    logic.
           Change : Fixed tag re-insertion by doing it before calling
                    eth_type_trans().
           Impact : VLAN bridge traffic on older kernels.
    
        3) Problem: (CQ64251) PSOD during tg3 driver bring up
           Cause  : Driver was copying data to an unmapped memory location
           Change : Rather then rely on the vmkernel to map the memory
	            the driver will map the memory during initialization
		    and then properly copy the data.
           Impact : All ESX version.

    Enhancements
    ------------
        1) Change : Re-implemented sensor support to match upstream.
           Impact : Older versions of the sensor daemon will no longer work.
                    Please upgrade to the new tg3sd daemon.

v3.123j (June 12, 2012)
========================
    Fixes
    -----
        1) Problem: Driver needs to upload firmware to the chip for
                    the 57766 ASIC rev.
           Cause  : OTP firmware has grown beyond available space.
           Change : Change the firmware image slightly to load firmware
                    data to more than one area of memory.  Add new routines
                    to work with the new firmware image.
           Impact : The new code applies to all variants of the 57766 ASIC
                    revision.

        2) Problem: Sensor data not updating correctly.
           Cause  : Driver is updating the wrong location in sysfs to signal
                    update.
           Change : Fix the sysfs location and always copy all the data once
                    during initialization.
           Impact : Platforms that support sensors and statistics.

v3.123i (June 05, 2012)
========================
    Fixes
    -----
        1) Problem: Driver flags not written correctly in APE scratchpad.
           Cause  : Miscalculated scratchpad offset.
           Change : Fixed offset calculation.
           Impact : Platforms that support sensors and statistics.

        2) Problem: APE driver events not propagated to firmware.
           Cause  : Driver skips sending APE events if NCSI is enabled.
           Change : Removed the check for NCSI.
           Impact : Chips supporting NCSI and APE.

v3.123h (June 03, 2012)
========================
    Fixes
    -----
        1) Problem: (CQ63454) tg3 driver fails to compile on SLES10 kernels.

           Cause  : sysfs_notify() not available on SLES10 kernels.
           Change : Removed sysfs_notify() and modified userspace to poll
                    sysfs periodically.
           Impact : Platforms that support sensors and statistics.

    Enhancements
    ------------
        1) Change : Scan all devices supporting APE for OCIR signature.
           Impact : Platforms that support sensors and statistics.

        2) Change : Disabled NetQ for VMWare inbox driver.
           Impact : VMWare Inbox only.

v3.123g (May 23, 2012)
========================
    Fixes
    -----
        1) Problem: VMWare driver fails to build.
           Cause  : Unused variable and missing function prototypes in new
                    functions added to tg3_vmare.c.
           Change : Fixed the above errors.
           Impact : VMWare only.

v3.123f (May 22, 2012)
========================
    Fixes
    -----
        1) Problem: VMWare driver fails to build because of warnings.
           Cause  : VMWare specific code had a 'unused variable'
                    warning.
           Change : Remove the unused variable.
           Impact : Code compiles on VMWare.

        2) Problem: Compiling the driver on a 32bit version of Linux
                    will show "assignment of pointer to integer of
                    different size".
           Cause  : The driver's compatibility code attempts to get
                    a buffer alignment adjustments by masking off the
                    upper bits of a pointer.  The cast of the pointer
                    to an integer causes the warnings.
           Change : Use ptrdiff_t as the intermediate cast.
           Impact : Code compiles without warnings on 32bit and 64bit
                    architectures.

        3) Problem: Port 0 of 5717 copper devices will not power down
                    when the device is closed.
           Cause  : A previous bug for serdes devices requred the driver
                    to keep port 0 powered when the device is closed.
                    This workaround was mistakenly applied to copper
                    devices as well.
           Change : Limit workaround to 5717 serdes devices only.
           Impact : This bug only affects 5717 and 5718 devices.

    Enhancements
    ------------
        1) Change : Added sensor and statistics support for OEM platform.
           Impact : 5719 only.

v3.123e (April 30, 2012)
========================
    Fixes
    -----
       1) Problem: (CQ62686) Driver crashes during reboot on a particular
                   OEM system.
          Cause  : In this environment, the driver is not closed during
                   the reboot.  The hardware reports that a packet is
                   available on an interrupt vector that does not handle
                   rx traffic.
          Change : Added code to avoid any rx processing on the vector
                   that should not be handling rx traffic.
          Impact : This bug was found on 5717, but may also impact the
                   57765, 57766, 5719 and 5720 ASIC revs.

       2) Problem: Checksum offload does not work with 5719 devices if
                   the host kernel does not support Transmit Send Offload.
          Cause  : There are sections of code surrounded by preprocessor
                   guards to selectively disable the offload hardware
                   features.  These checks were too aggressive.
          Change : Remove the preprocessor guards and add a comment stating
                   that the hardware bits control both features.
          Impact : This bug was found on a 5719, but also affects 5755 and
                   later devices.

       3) Problem: Driver fails to build on SLES 10.X and RH5.X installs.
          Cause  : Code added to support the new kernel reference clock API 
                   is not present on older kernels.  The preprocessor
                   definitions for the older code was incorrect.
          Change : Correct the older preprocessor definitions.
          Impact : This bug should affect all kernels that neither support
                   the reference clock API nor the older clock calibration
                   API.

       4) Problem: (CQ62385) Driver fails to build on RH6.3 kernels.
          Cause  : The driver uses some kernel functions to convert common
                   MII register values to kernel variable values.  The driver's
                   compatibility code for incorrectly determined that these
                   functions were not available.  Multiple definition warnings
                   are the result.
          Change : Change the compat code to properly detect these functions.
          Impact : This bug will only affect newer kernels that have the API.
                   RedHat 6.3 is the first vendor kernel to support the new API.

    Enhancements
    ------------
        1) Change : Apply watermark adjustments to 5719 A0 only.
        2) Change : Reenable new DMA engine for 57766 devices if standard
                    MTU sizes are used. 
        3) Change : Apply a workaround to fix transmit hangs for 57766 devices
                    using selfboot bootcode.
        4) Change : It is possible for the driver to get a tx packet requesting
                    timestamp services without having hardware tx timestamping
                    enabled.  Only apply hardware timestamps on packets when
                    hardware timestamping is requested.
        5) Change : Cleanup.  No need to calibrate the hw clock on suspend.
        6) Change : NetQueue initialization cleanup.


v3.123d (April 24, 2012)
========================
    Enhancements
    ------------
        1) Change : Added new code to support 1588 reference clock API.


v3.123c (April 13, 2012)
========================
    Enhancements
    ------------
        1) Change : Partial sync with upstream driver.


v3.123b (April 03, 2012)
========================
    Fixes
    -----
        1) Problem: (CQ62172) 5720 hangs when running software iSCSI with
                    TSO enabled.
           Cause  : TSO packets with total size equal to or bigger than 64K
                    are transmitted in this setup.  Hardware has a limitation
                    that individual BDs cannot approach 64K in TSO.
           Change : Set dma_limit to 32K for all TSO capable chips when
                    compiled for VMWare.  Driver will break up any BDs bigger
                    than 32K.  Linux limits TSO size to less than 64K, so no
                    workaround is needed.
           Impact : All TSO capable chips under VMWare.

    Enhancements
    ------------
        1) Change : Added psod_on_tx_timeout parameter for VMWare debugging.
           Impact : None.


v3.122o (March 19, 2012)
========================
    Fixes
    -----
        1) Problem: (CQ61255) RX traffic stops in MSI-X mode on 5717 in
                    SLES11 Xen environment.
           Cause  : In RSS mode, there is a race condition between the RSS
                    handlers and the RSS vector 1 handler that refills the
                    single rx producer ring.
           Change : Added a flag and additional code to close the race
                    condition.
           Impact : All chips running in MSI-X/RSS mode in linux only.
                    No impact on NetQ and VMWare.


v3.122n (March 09, 2012)
========================
    Fixes
    -----
        1) Problem: VMWare PSOD in tg3_tso_bug().
           Cause  : skb_gso_segment() always returns NULL in VMWare.
           Change : Check for NULL return from skb_gso_segment() and disable
                    TSO on all chips requiring TSO_BUG workaround.
           Impact : 5750, 5752, 5706, 5714, 5780.

        2) Problem: (CQ62078) Immediate PSOD in VMWare on 5719
           Cause  : Mismatch between the number of NetQ and IRQ vectors.
           Change : Prevent NULL pointer dereference if the number of rxq
                    is less than tx queues.
           Impact : All chips supporting MSI-X.

        3) Problem: (CQ62079) On 5718S, shutting down port 0 causes port 1's
                    serdes link to go down.
           Cause  : Powering down serdes on port 0 affects port 1.
           Change : Don't power down port 0 in 5718S.
           Impact : 5718S


v3.122m (March 07, 2012)
========================
    Fixes
    -----
        1) Problem: (CQ61973) ethtool shows link up after ifdown.
           Cause  : netif_acrrier_off() called too early in tg3_close().  PHY
                    shutdown code later calls netif_carrier_on() again.
           Change : Removed netif_carrier_off() in tg3_stop().  Added
                    it to the very end of tg3_close().
           Impact : ifdown and ethtool -L.


v3.122l (February 29, 2012)
============================
    Fixes
    -----
        1) Problem: (CQ61880) Compile error on SLES9.
           Cause  : LPA_1000FULL and LPA_1000HALF undefined.
           Change : Added definitions in tg3_compat.h.
           Impact : None.


v3.122k (February 28, 2012)
============================
    Fixes
    -----
        1) Problem: (CQ60549) Poor jumbo tx performance on 57762
           Cause  : Hardware DMA engine goes into a mode that requests 256
                    bytes after GRC reset.  A link up is required to bring
                    it back to the normal mode.
           Change : tg3 driver skips PHY reset to avoid link interruption
                    during MTU change.  Add PHY reset back for 57762/57766.
           Impact : 57762/57766 only.

        2) Problem: 5700/5701 hangs during ifdown.
                    (http://bugzilla.kernel.org/show_bug.cgi?id=42707)
           Cause  : tp->lock taken twice during shutdown on 5700/5701.
           Change : Re-arranged tg3_get_stats64() and related functions to
                    avoid the problem.
           Impact : All chips.

    Enhancements
    ------------
        1) Change : Updated README.TXT with updated ethtool information.


v3.122j (February 20, 2012)
============================
    Fixes
    -----
        1) Problem: More compile problems on SLES10.
           Cause  : skb_is_gso_v6() not defined on these older kernels.
           Change : Adjusted skb_is_gso_v6() compatibility code.
           Impact : None.

        2) Problem: (CQ61696) Phy loopback test using jumbo frames failed on
                    5719.
           Cause  : TXD_FLAG_JMB_PKT not set and loopback packet size exceeds
                    DMA limit of 4K.
           Change : Added TXD_FLAG_JMB_PKT if applicable and reduce the jumbo
                    loopback packet size to the DMA limit.  Better fix can
                    be implemented in the next release if desired.
           Impact : Jumbo loopback test on 57765, 5719.


v3.122i (February 20, 2012)
============================
    Fixes
    -----
        1) Problem: (CQ61692, 61693, 61683) Compile errors on RHEL6.x, RHEL5.x,
                    SLES10, SLES11 kernels, etc.
           Cause  : ETHTOOL_{G|S}CHANNELS not defined in these older kernels.
                    RXNFC compatibilty checking has problems.
           Change : Fixed compatibility code in driver and makeflags.sh.
           Impact : None.
           
v3.122h (February 17, 2012)
============================
    Fixes
    -----
        1) Problem: (CQ59599, CQ60505, CQ60549, CQ60763) 57766 devices
                    yeild poor performance with jumbo frames enabled.
           Cause  : The new DMA engine on this device inefficiently
                    orders DMA transactions.
           Change : Disable the new DMA engine.  Use the legacy DMA
                    engine instead.
           Impact : This bug only affects 57766 ASIC rev devices.

        2) Problem: (CQ60550) Stats appear corrupted when running
                    'ethtool -S' while the device is down.
           Cause  : The driver returns the statistics uninitialized.
           Change : Zero out the buffer the system provides for stats
                    when the interface is not running.
           Impact : This bug affects all ASIC revs.

        3) Problem: (CQ60635) VMWare can PSOD under rare edge conditions.
           Cause  : The VMWare kernel does not reliably halt packet
                    transmission attempts while the device is closing.
           Change : Change the tg3_close code to use a function that
                    takes the tx lock while disabling the transmit
                    queues.
           Impact : This workaround will only be applied to VMWare
                    drivers.

        4) Problem: Mailbox writes and tg3 data structure updates may
                    be seen out-of-order.
           Cause  : The VMWare kernel defines away write memory barriers
                    which was used to guard against such problems.
           Change : Add combatibility code to reintroduce the memory
                    barriers if they have been removed.
           Impact : This workaround will only be applied to VMWare
                    drivers.

        5) Problem: NVRAM writes corrupt NVRAM when using Atmel parts.
           Cause  : Traditionally the driver would update the NVRAM
                    offset register each time it submitted new data.
                    This procedure causes problems on newer devices.
           Change : Change the code to submit the NVRAM offset only for
                    the first dword of data.  All subsequent writes
                    should abstain.
           Impact : This bug affects all 57765 and newer devices.

        6) Problem: (CQ60923) "Initialization from incompatible pointer
                    type" warnings when compiling the tg3 driver.
           Cause  : The system functions the driver uses to change the
                    RSS indirection table have different argument lists
                    for different kernels.
           Change : Add compatibility code to test and react to the
                    differences.
           Impact : This bug only affects certain kernel versions.

        7) Problem: (CQ60509) Energy Efficient Ethernet does not work
                    for 57766 ASIC rev devices.
           Cause  : The driver does not enable Energy Efficient Ethernet
                    for these devices.
           Change : Enable Energy Efficient Ethernet.
           Impact : This bug only affects 57766 ASIC rev devices.

        8) Problem: (CQ60632) NetQueue cannot be enabled on capable
                    devices.
           Cause  : A recent IRQ allocation change causes the driver to
                    fail to allocate enough interrupts for the NetQueue
                    case.
           Change : Change the code so that more interrupts can be
                    allocated for NetQueue devices.
           Impact : This bug affects all NetQueue capable devices.

    Enhancements
    ------------
        1) Change : Partial sync-up with upstream tg3 driver.
        2) Change : Updated copyrights.
        3) Change : Handle netif_set_real_num_rx_queues() failures
                    gracefully.
        4) Change : Merge some phylib / non-phylib code to reduce the
                    number of differences between this driver and the
                    upstream kernel driver.
        5) Change : Added code to check phy 1Gbps master settings when
                    checking link advertisements for 5701.
        6) Change : To reduce system resource strain, reduce interrupt
                    vector count when NetQueue is enabled.
        7) Change : Add code to manually set the rx / tx queue count
                    through ethtool.


v3.122g (December 22, 2011)
============================
    Fixes
    -----
        1) Problem: Low performance on 57766 in TSO mode.
           Cause  : 2K BD breakup is not necessary for TSO packets.
           Change : Added logic to exclude TSO packets from executing the
                    code to break up tx packets when tp->dma_limit is set.
           Impact : 57766 devices only.


v3.122f (December 15, 2011)
============================
    Fixes
    -----
        1) Problem: When the kernel crashes with MSI-X interrupts
                    enabled, the driver will not pass traffic when
                    reinitialized in a kdump environment.
           Cause  : Kdump uses a single CPU, so the driver would bypass
                    MSI-X and use another interrupt mode.  MSI-X is
                    left enabled by the previous kernel image though
                    so the alternate interrupt mode will not work.
           Change : Change the code so that single vector MSI-X
                    interrupt mode works and allow the MSI-X code
                    to allocate a single MSI-X interrupt.
           Impact : This bug affects all MSI-X capable devices.

    Enhancements
    ------------
        1) Change : Cleanup some phy code.


v3.122e (December 14, 2011)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.122d (December 12, 2011)
============================
    Enhancements
    ------------
        1) Change : Enabled 57766 ASIC rev support.
        2) Change : Change code to use a kernel routine to translate
                    ethtool flow control parameters to MII
                    advertisements.


v3.122c (December 9, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ60225) Driver crashes when MSI-X interrupts
                    are disabled.
           Cause  : The code that sets up the RSS indirection table
                    does a divide-by-zero when only using a single
                    interrupt.
           Change : Change the code that sets up the RSS table to
                    zero out the RSS indirection table when a
                    single interrupt is used.
           Impact : This bug affects all RSS capable devices.

        2) Problem: EEE does not work on 57791 and 57795 devices.
           Cause  : These are 57765 devices that are only capable of
                    10Mbps and 100Mbps speeds.  The EEE setup code
                    gets bypassed for these devices.
           Change : Change the code so that EEE setup code runs on
                    these devices.
           Impact : This only affects the devices mentioned.


v3.122b (December 8, 2011)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.121l (December 6, 2011)
============================
    Fixes
    -----
        1) Problem: Statistics are being reset during driver operations
                    that induce a chip reset.
           Cause  : The driver zeroes out the statistics block during a
                    chip reset.  While there is a place in the device to
                    save chip stats, it was not being used properly.
           Change : Add code to save chip stats during chip resets.
                    Zero all stats counters on device close.
           Impact : This bug affects all ASIC revs and platforms.

        2) Problem: (CQ59112) When fulfilling an ethtool flow control
                    query, the driver returns the current flow control
                    state rather than the flow control configuration.
                    This makes it impossible to disable rx and / or tx
                    flow control settings if the autoneg could not
                    negotiate flow control.
           Cause  : Ethtool will use the flow control query interface
                    to get the current flow control configuration.  If
                    the desired setting does not differ from the current
                    setting, the operation is aborted.
           Change : Change the ethtool flow control query interface to
                    report the flow control configuration.
           Impact : This change removes the ability to query the flow
                    control state directly.  Newer versions of ethtool
                    report the LP advertisement register, and tg3
                    already reports the local flow control
                    advertisements, so it is possible to work out the
                    flow control state.  Newer, yet unreleased, versions
                    of ethtool will output a better flow control status
                    along with the flow control configuration query
                    output.

    Enhancements
    ------------
        1) Change : Added 2 new 57766 ASIC rev SKUs: 57782 and 57786.
        2) Change : Only report speed settings if link is up.  Otherwise
                    report invalid link settings.


v3.121k (November 30, 2011)
============================
    Enhancements
    ------------
        1) Change : Added LP advertisement reporting through ethtool.


v3.121j (November 29, 2011)
============================
    Enhancements
    ------------
        1) Change : Added 57766 ASIC rev support.  (Device IDs not
                    enabled though.)


v3.121i (November 28, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ59895) Driver does not compile on SLES 10.4.
           Cause  : A recent MRRS fix introduced a new function not
                    present on some distros.
           Change : Add the new function to the compatibility code.
           Impact : This bug should affect most older kernels.


v3.121h (November 23, 2011)
============================
    Enhancements
    ------------
        1) Change : Partial sync with upstream driver.
        2) Change : Reduced code that sets the MRRS to a single section
                    that only caps the value to 2k for 5719 A0.


v3.121g (November 23, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ59887) Link does not come up with 5715.
           Cause  : The new ethtool advertisement translation code
                    exposes a link configuration initialization
                    problem.
           Change : Remove all flow control settings from
                    tp->link_config.flowctrl.
           Impact : This bug should affect all devices.

        2) Problem: (CQ59881) Driver does not compile on RedHat 6.1.
           Cause  : New RSS indirection code adds three new callbacks.
                    All three callbacks are enabled if one of those
                    callbacks is present in the kernel headers.  On
                    RedHat 6.1, that callback was present, but the
                    other two were not.
           Change : Split the callbacks into two groups and test for
                    them separately.
           Impact : This bug only affects those distros where the
                    problem constraints are present.


v3.121f (November 22, 2011)
============================
    Fixes
    -----
        1) Problem: Device fails to pass traffic on 5704 if ASF is
                    enabled.
           Cause  : TSO capability flags are set before the ASF status
                    is known during the init procedure.
           Change : Revaluate firmware TSO status after ASF status is
                    determined.
           Impact : This problem only affects 5703, 5704, and 5705
                    devices.

        2) Problem: Driver fails to compile on VMWare.
           Cause  : The new rss indirection table facilities are not
                    present on VMWare.
           Change : Add preprocessor guards to disable the new rss
                    indirection table facilites on those platforms
                    that do not support it.
           Impact : This problem was found on VMWare, but likely
                    affects older Linux distros as well.


v3.121e (November 22, 2011)
============================
    Enhancements
    ------------
        1) Change : Restricted MRRS workaround from 5720 / 5719 asic
                    revs to only the 5719 A0 asic rev.
        2) Change : Added MDI-X status to ethtool output.
        3) Change : Added code to abstract away ethtool to mii
                    advertisement translations.
        4) Change : Added code to allow the admin to change the
                    indirection table.


v3.121d (November 14, 2011)
============================
    Fixes
    -----
        1) Problem: Driver does not compile on RedHat 6.1 systems.
           Cause  : Code was recently added to align rx buffers to
                    cacheline boundaries.  The code uses the buffer
                    pointers in bitwise masking operations that the
                    compiler dislikes.
           Change : Change the code so that the pointer is converted
                    to an integer before operating on the value.
           Impact : This bug affects all ASIC revs.


v3.121c (November 9, 2011)
============================
    Enhancements
    ------------
        1) Change : Added code to align rx buffers on cacheline boundaries.


v3.121b (November 8, 2011)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.120h (October 24, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ59374) VMWare certification test fails because
                    the driver does not pass 10,000 packets in the
                    time allowed.
           Cause  : The driver incorrectly attempts to clean up a
                    packet fragment that had not been previously setup
                    for DMA.
           Change : Change the code so that cleanup of the packet
                    fragment is avoided.
           Impact : This bug is only known to affect 5719 devices.

        2) Problem: If the driver fails to allocate all the required
                    MSI-X vectors, it fails to cleanup those vectors
                    allocated as part of the resource release
                    process.
           Cause  : The driver fails to iterate through all NAPI
                    data structures when cleaning up in the error path.
           Change : Change the code to iterate through all allocated
                    NAPI instances.
           Impact : This bug affects all devices.

    Enhancements
    ------------
        1) Change : Removed compiler warning on those platforms that
                    do not support skb_tx_timestamp().


v3.120g (October 17, 2011)
============================
    Fixes
    -----
        1) Problem: Driver fails to compile on RH-6.0.
           Cause  : The driver has a set of compatibility functions
                    that are conditionally compiled into the driver
                    based on a preprocessor definition.  In this case
                    The target kernel contains support for one of the
                    two functions, but not the other.
           Change : Change the code so that the makeflags.sh script
                    checks for each function individually rather than
                    as a set.
           Impact : This bug is only known to affect RH-6.0.


v3.120f (October 12, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ59158) PSOD in tg3_tx_recover().
           Cause  : The PSOD was caused by a BUG_ON() statement.  The
                    bug is caused by the error paths of the tx setup
                    code.  The error path attempts to free too many
                    BDs.
           Change : Change the code so that the driver won't progress
                    to the tx setup path if the setup of the first
                    fragment fails.
           Impact : This bug only affects the 5719.


v3.120e (October 4, 2011)
============================
    Fixes
    -----
        1) Problem: Driver could hit BUG_ON condition in tg3_tx_timeout
           Cause  : If the 5719 special transmit path fails, the code
                    that backs out the transmit request reclaims too
                    many tx bds.  Ultimately, when the ring is full,
                    this will cause tg3_tx() to hit the condition where
                    the first BD of a transmit packet does not have an
                    skb associated with it.  Hit that condition twice
                    and the BUG_ON gets triggered.
           Change : Change the transmit code to abort further tx setup
                    if the out-of-bds condition is encountered.  Clean
                    up surrounding code to support this new feature.
           Impact : The 5719 is the only device that might encounter
                    this bug at the time of this writing.

        2) Problem: (CQ58831) EEE status incorrect on port 1 of 5720.
                    Phy MDIO bus addresses incorrect.
           Cause  : v3.120c of the tg3 driver contained a change where
                    it would obtain the function number through shared
                    memory, rather than relying on what the OS
                    specifies.  The 5718 bit enumerations are different
                    than the 5719 and 5720.  The driver mistakenly
                    directs the 5720 down the 5718 path.
           Change : Change the code so that the 5720 follows the correct
                    code path.
           Impact : This bug only affects the 5720.


v3.120d (September 15, 2011)
============================
    Fixes
    -----
        1) Problem: Watchdog timeout while releasing rx NetQueues.
           Cause  : Driver sleeps for 100 msec while releasing an rx
                    netqueue.  Originally the sleep was used to allow
                    the hardware to flush out rx events and to give
                    the driver time to service them.  This is no
                    longer necessary now that the driver drops all new
                    rx events.  Furthermore, sleeping is forbidden as
                    the VMKernel holds a spinlock.
           Change : Remove the sleep.
           Impact : This problem affects all NetQueue capable devices.

        2) Problem: Compiling the driver on RH-5.x systems shows that
                    pci_pme_capable() is defined but not used.
           Cause  : Driver's compatibility code detects that the
                    function is missing, and enables compatiblity code
                    to add it.  The function only needs to be used if
                    another compatibility function is enabled though,
                    which isn't needed on this platform.
           Change : Nest the compatibility code for pci_pme_capable()
                    in the preprocessor guards for the other compatibility
                    function that uses it.
           Impact : This problem affects all RH 5.x distros.

        3) Problem: Individual functions of multifunction devices might
                    clear APE mutex request bits of other functions during
                    initialization.
           Cause  : Initialization code claims ownership of too many of the
                    APE mutex request bits.
           Change : Add code to make each function responsible for its own
                    bits.
           Impact : This bug only affects APE-enabled devices: 5761, 5718,
                    5717, 5719, and 5720 at the time of this writing.


    Enhancements
    ------------
        1) Change : Made a few minor code flow cleanups.


v3.120c (August 25, 2011)
============================
    Fixes
    -----
        1) Problem: Driver doesn't compile for VMWare platforms.
           Cause  : Newly introduced pcie compatibility functions have
                    errors.
           Change : Fix compatibility code.
           Impact : This problem affects all Linux and VMWare platforms
                    that need the compatibility code.

    Enhancements
    ------------
        1) Change : Added new PCI function detection support.


v3.120b (August 22, 2011)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.
        2) Change : Added (proper) external loopback test support to the
                    ethtool selftest.


v3.119w (August 15, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ57777) VMotion migrations fail.  Tx timeouts
                    happen occasionally after rx netqueue deallocations.
           Cause  : Deallocating an rx netqueue requires the driver to
                    disable interrupts on the underlying MSI-X vector.
                    If an interrupt were to happen on that vector during
                    this time, the interrupt will be missed / ignored by
                    the driver.
           Change : Force a final interrupt after the rx netqueue
                    deallocation.
           Impact : This problem affects all tx netq enabled devices.
                    (5719 and 5720 at the time of this writing.)

        2) Problem: (CQ57804) NetqueueTX Basic test failing.
           Cause  : The test scripts require the tx stats from
                    'ethtool -S' to be in a particular format.  tg3
                    didn't conform to that format.
           Change : Reformat tg3 tss stats.
           Impact : This problem affects all tx netq enabled devices.
                    (5719 and 5720 at the time of this writing.)


v3.119v (August 5, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ57572) TSS traffic stalls after a while.
           Cause  : The interrupt mailbox assignments for MSI-X vectors
                    5 and above were incorrectly enumerated.
           Change : Recode the interrupt mailbox assignments correctly.
           Impact : This problem affects all netq enabled devices.


v3.119u (August 3, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ57507) Driver fails to build on RH5.X and
                    SLES 10.X systems.
           Cause  : The fix for CQ56615 requires that the driver call
                    tg3_msi() manually.  This function can take two or
                    three arguments, depending on the kernel version.
           Change : Add a variant of the call for each kernel version.
                    Use preprocessor definitions to select the one to
                    use.
           Impact : This problem affects most older kernel versions.


v3.119t (August 1, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ57120) vCenter does not show true link status
                    on 5715 devices.
           Cause  : Upstream kernels define a new hw_features bit for
                    MAC loopback mode.  This bit collides with a
                    feature privately defined for VMWare kernels.  This
                    bug is a result of the collision.
           Change : Undefine the MAC loopback code for VMWare drivers.
           Impact : This should only affect VMWare drivers.

        2) Problem: (CQ56615) Transmits stop when using TSS.
           Cause  : The device is not reliably generating interrupts for
                    TSS queues.
           Change : Detect the lack of interrupt and schedule NAPI from
                    the timer thread.
           Impact : This bug affects 5719 and 5720 devices.


v3.119s (July 27, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ56615) Transmits stop when using TSS.
           Cause  : The device is in one-shot MSI interrupt mode.
                    Somehow the tx interrupt is getting missed.  The
                    hardware never generates any more interrupts and
                    the driver is unaware of the new status block
                    updates.
           Change : Disable one-shot MSI mode for netqueue devices.
           Impact : This bug affects any netqueue capable device.


v3.119r (July 19, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ54406) Link drops on 2nd time the device is
                    up'd.
           Cause  : On device down, the driver sets the link config to
                    10-HD, but does not restart autoneg.  When the
                    device is up'd the 2nd time, the driver pulls the
                    10-HD config from HW, notices the mismatch between
                    1000-FD and 10-HD and restarts autoneg.
           Change : Remove the code that sets the link config to 10-HD.
                    It was dead code.
           Impact : This bug affects any device that has the link-flap
                    avoidance feature set.

    Enhancements
    ------------
        1) Change : New kernels remove some of the "HAVE_<FEATURE>" flags
                    present in the kernel headers.  The driver needed to
                    implement alternative strategies for those flags.


v3.119q (July 13, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ56770) Interrupt does not pass reliably.
           Cause  : The status tag update fix provided in the original
                    fix does not fix the problem completely.
           Change : The test waits for the interrupt to be delivered in
                    a loop.  Added code to check the status block tag
                    against the last status tag seen by the driver's
                    interrupt handler.  If they differ, rewrite the old
                    tag to the interrupt mailbox register, which will
                    generate a new interrupt.
           Impact : This bug affects 57765, 5717, 5718, 5719, and 5720
                    devices.


v3.119p (July 12, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ56917) Firmware version incorrect.
           Cause  : The fix for CQ56880 revealed that Dell's custom
                    firmware version string was incorrectly being
                    bypassed due to VPD length checks.  The NCSI
                    firmware version was also incorrectly being
                    appended to the version when it shouldn't.
           Change : Ethtool only provides 32 characters of buffer to
                    store the firmware version(s).  If the firmware
                    version was obtained through the VPD area, the
                    NCSI firmware version is dropped from the version
                    string.
           Impact : This bug affects 5717, 5718, 5719, and 5720
                    devices.

        2) Problem: RX PTP (IEEE1588) does not work correctly.
           Cause  : RX PTP (IEEE1588) control bit enumerations
                    incorrect.
           Change : Correct bit enumerations.
           Impact : This bug affects 5719 and 5720 devices.

        3) Problem: (CQ56136) WOL behavior incorrect for OOB_WOL=on
                    OS_WOL=off case.  Link light will illuminate after
                    VMain => VAux switch.
           Cause  : The driver doesn't take APE into account when making
                    power source decisions.  It incorrectly determines
                    power should be removed from the device when VMain
                    goes away.  It seems the APE will cause a power
                    glitch in this case, which resets the adapter to
                    an OOB state.
           Change : Configure the power source to draw from VAux when
                    APE is present.
           Impact : This bug affects 5761*, 5717, 5718, 5719, and 5720
                    devices.

        4) Problem: (CQ56615, CQ56611) Transmits halted after tx netqueue
                    allocated / deallocated.
           Cause  : On tx netqueue deallocation, the driver tunes the
                    coalescing parameters so that tx packet completions
                    are done immediately.  The parameters are adjusted
                    for the wrong tx queue.
           Change : Tune tx coalescing parameters for the right queue.
           Impact : This bug affects 5718, 5719, and 5720 devices.

    Enhancements
    ------------
        1) Change : Added code to extract hardware tx statistics and
                    present them alongside software tx statistics.


v3.119o (July 11, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ56880) NVRAM selftest fails on 5720.
           Cause  : Newer VPD images are larger than before.  The
                    driver hardcoded the VPD size in places where
                    it shouldn't.  This caused size checks to fail
                    and abort the NVRAM test with errors.
           Change : Add code to obtain the VPD size from NVRAM when
                    possible.  Use this limit in place of hardcoded
                    constants.
           Impact : This bug affects 5717, 5718, 5719, and 5720
                    devices.

        2) Problem: Driver doesn't compile correctly on 3.0 kernels.
           Cause  : The driver's makefile assumes 2.6 kernels will
                    be the only kconfig-enabled kernels.
           Change : Change the makefile to include 3.0 kernels for
                    the kconfig path.
           Impact : This bug will be encountered on all 3.0+ kernels.


v3.119n (July 8, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ56770) Selftest fails interrupt test on
                    newer tg3 devices.
           Cause  : It seems that the mailbox update when enabling
                    interrupts isn't taking effect.
           Change : (Re)write the last status tag to the interrupt
                    mailbox register before forcing the interrupt.
           Impact : This bug affects 5717, 5718, 5719, and 5720
                    devices.

        2) Problem: (CQ56762) Fiber loopback selftests fail.
           Cause  : There were two contributing problems.  The first
                    problem was that the driver was not waiting long
                    enough for link to come up.  The second problem
                    was that the driver was applying a reset to the
                    MAC_RX_MODE register as it would do for the
                    5714S and 5715S devices.
           Change : Wait longer for link and avoid the MAC_RX_MODE
                    reset.
           Impact : This bug affects 5717S, 5718S, 5719S, and 5720S
                    devices.


v3.119m (July 7, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ56770, CQ56441) Selftest fails interrupt test
                    on newer tg3 devices.
           Cause  : One-shot MSI mode left enabled.
           Change : Disable one-shot MSI/MSI-X mode.
           Impact : This bug affects 5717, 5718, 5719, and 5720
                    devices.

        2) Problem: (CQ56126) Link does not go down when cable removed.
                    Link LED flashes indefinitely.
           Cause  : The EEE interoperability workaround does not work
                    well if the EEE advertisement register is zeroed.
           Change : Disable the EEE interoperability workaround if no
                    EEE advertisements are made.  Also, the same
                    register is zeroed if we have link against a
                    non-EEE link partner.
           Impact : This bug affects 57765 asic rev, 5717, 5718 and
                    5719 devices.


v3.119l (June 29, 2011)
============================
    Fixes
    -----
        1) Problem: Machine spontaneously reboots when enabling WOL
                    on a tg3 device while older tg3 devices (5703)
                    are also present.
           Cause  : As part of a recent power management addition,
                    tg3_init_one() was changed so that the power
                    source would revert back to VAux when not in use.
                    If a 5703 device is left in this state, without
                    being up'd and down'd, the problem appears.
           Change : Since switching to VAux is a new behavior, the
                    fix was to abstain from switching to VAux for
                    all devices older than 5717.  The switch (and
                    state accounting) is only really needed for
                    newer, multiport devices.
           Impact : This bug affects any system that has legacy
                    devices in it and wish to use WOL.

    Enhancements
    ------------
        1) Change : Temporarily disable TSS in VMWare due to testing
                    problems.


v3.119k (June 24, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ56282) Ethtool selftest fails with selfboot
                    format 1 version 6 firmware.
           Cause  : The nvram test was failing because the checksum
                    for the NVRAM block didn't add up to the correct
                    value.  This happens because the code wasn't
                    checksumming enough of the data.
           Change : Change the NVRAM block size to the correct size
                    for this selfboot format.
           Impact : This bug affects any device that uses selfboot
                    format 1 version 6.

        2) Problem: (CQ56258) WOL fails on VMWare.
           Cause  : The tg3 driver uses a kernel PCI API, in addition
                    to the standard ethtool interface, to determine
                    whether or not to allow WOL.  VMWare kernels do
                    not set CONFIG_PM in their kernel configuration
                    files, so this API gets stubbed-out, and returns
                    'false' to any WOL request.
           Change : Bypass the kernel API for VMWare.
           Impact : This bug affects all WOL capable devices.

        3) Problem: (Novell bugzilla 683886)5714/5715 devices fail to
                    pass traffic after network restart.
           Cause  : After a chip reset, the driver programs the port
                    mode to the mac mode register.  In a recent H2BMC
                    change, the driver tried to preserve more bits in
                    this register.  This feature isn't available for
                    the 5714 / 5715, but a side-effect of the change
                    was to preserve all mac_mode bits.  One of these
                    preserved bits was causing the problem.
           Change : Restore the code to its original state.  After a
                    chip reset, program the port mode and zero out all
                    other bits.  The H2BMC settings will take effect
                    later in chip setup.
           Impact : This bug affects all WOL capable devices.


v3.119j (June 23, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ55292, CQ55242) Link flap on 5719 when connected to
                    a particular EEE switch.
           Cause  : Interoperability problems.
           Change : Tune an internal EEE parameter.
           Impact : 57765, 5717, 5718, 5719 and 5720 devices are affected.

    Enhancements
    ------------
        1) Change : Add code to report flow control settings through the
                    standard ethtool interface.


v3.119i (June 13, 2011)
============================
    Fixes
    -----
        1) Problem: Some or all of the ports of a 5717, 5718, 5719, and
                    5720 device may not operate correctly.
           Cause  : The driver determines what phy address it should
                    use on the MDIO bus through its PCI function number.
                    It obtains its function number through a proprietary
                    register.  Due to a hardware bug, the PCI function
                    number may not be correct 100% of the time.
           Change : Workaround the problem by using the function number
                    provided by the kernel.  The longer term solution
                    will be to obtain the function number from APE
                    space.
           Impact : This bug affects all recent multiport devices.

        2) Problem: The first of the four RSS queues gets a more than
                    its due share of rx traffic.
           Cause  : The RSS indirection table was misconfigured so that
                    more traffic would be pivoted to the 1st queue.
           Change : Fix the indirection table setup so that the load is
                    more evenly distributed.
           Impact : This bug affects all recent multiport devices.


v3.119h (June 8, 2011)
============================
    Fixes
    -----
        1) Problem: 5719 devices can stall the machine.
           Cause  : An internal 4k fifo can overflow.
           Change : Modify the transmit routine so that it never
                    submits more than 4k per BD at a time.
           Impact : This bug affects all 5719 devices.


v3.119g (June 8, 2011)
============================
    Enhancements
    ------------
        1) Change : Added enhanced power source switching for 5717, 5718,
                    5719 and 5720 devices.  These devices should now be
                    able to correctly power switch from within a KVM
                    environment.


v3.119f (June 7, 2011)
============================
    Fixes
    -----
        1) Problem: IEEE1588 support not enabled in the driver for
                    kernels that support it.
           Cause  : makeflags.sh script had a typo in one of the header
                    filenames it used.
           Change : Fix the type.
           Impact : This bug affects all IEEE1588 capable devices.

        2) Problem: Tx netq not exposed.
           Cause  : The driver had a conservative preprocessor definition
                    that turned the feature off.
           Change : Remove the preprocessor guard.
           Impact : This bug affects 5719 and 5720 only.

        3) Problem: tx error cleanup code can cause a kernel panic.
           Cause  : The driver attempted to free one fragment beyond
                    what it should have.
           Change : Correct the loop limit that stops the loop.
           Impact : This bug affects all devices.

    Enhancements
    ------------
        1) Change : Removed unneeded flags from tx path.


v3.119e (May 26, 2011)
============================
    Enhancements
    ------------
        1) Change : Added IEEE1588 support.
        2) Change : Fixed compatibility problems on SLES 10.4.


v3.119d (May 23, 2011)
============================
    Enhancements
    ------------
        1) Change : Added EEE support for 5719 / 5720 devices.
        2) Change : Added TX NetQueue support for 5719 / 5720 devices.


v3.119c (May 20, 2011)
============================
    Enhancements
    ------------
        1) Change : Added NVRAM selftesting for selfboot revisions 4, 5,
                    and 6.
        2) Change : Added link flap avoidance code.


v3.119b (May 20, 2011)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.118k (May 16, 2011)
============================
    Fixes
    -----
        1) Problem: Certain counters do not work on 5704 and later
                    devices.
           Cause  : The hardware statistics structure was modified in
                    an incompatible way to support new stats that were
                    originally unavailable.
           Change : Move new statistics to reserved sections.
           Impact : This bug affects 5700, 5701, 5702, 5703, and 5704.

        2) Problem: Driver doesn't compile on certain kernels that do
                    not have 802.1Q support.
           Cause  : The driver attempts to use a compatibility function
                    only defined if 802.1Q support is enabled.
           Change : Add 802.1Q guards around the function use site.
           Impact : Driver compiles on problematic kernels.

    Enhancements
    ------------
        1) Change : Bring the EEE workaround value inline with the value
                    in the Windows driver.


v3.118j (May 12, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ54861) Device no longer receives traffic after
                    several netq allocations and deallocations.
           Cause  : The previous fix intended to disable the RCV BDI
                    attention bit if the device was NetQueue capable.
                    The test was inverted so that it would only be
                    enabled if the device was NetQueue capable.
           Change : Invert the inversion.
           Impact : This bug affects all devices that support NetQueue.


v3.118i (May 11, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ55469) System locks up while deallocating
                    netqueues under certain conditions.  PSODs seen
                    while deallocating netqueues.
           Cause  : The driver had a route called wait_event_timeout()
                    that it used to use to wait for the NAPI thread to
                    indicate that it finished processing all packets.
                    The PSOD points to a failed spinlock acquisition
                    within that routine.  The system lockups induce
                    "CPU locked up" messages with a backtrace that
                    points to this function.
           Change : There is no reliable way to detect that all packets
                    have been flushed to host memory.  The fix then is
                    to blindly sleep for 100 msecs.
           Impact : This bug affects all netqueue capable devices.


v3.118h (May 10, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ55462) Driver does not compile on SLES 9.
           Cause  : SLES 9 does not have EEH support.  The driver has
                    EEH preprocessor guards, but they missed a spot.
           Change : Add EEH preprocessor guard around missing spot.
           Impact : This bug affects SLES 9 and RHEL 4.X distros.


v3.118g (May 9, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ55116) WOL does not work on SLES 10.4.
           Cause  : Recent compatibility code changes cause broke WOL
                    for this platform.
           Change : Reinstate device_init_wakeup() for this platform.
           Impact : This bug is restricted to SLES 10.4.

        2) Problem: (CQ54861) Device no longer receives traffic after
                    several netq allocations and deallocations.
           Cause  : The RCV BDI state machine generates an attention
                    when the producer rings are disabled during a netq
                    deallocation.  The attention prevents anymore RX
                    BDs from being fetched by the device.
           Change : Disable the RCV BDI state machine attention for
                    netq capable devices.
           Impact : This bug affects all devices that support NetQueue.

        3) Problem: (CQ33752) BCM5755 and newer devices have problems
                    with fragments smaller than or equal to 8 bytes in
                    length.
           Cause  : HW bug.
           Change : The workaround for this problem already exists in
                    the driver.  The change is to apply it to the
                    larger set of affected devices.
           Impact : All 5755 and newer asic revisions.

        4) Problem: (CQ54056) Kernel panic or traffic stop on 57765 B0.
           Cause  : Max FTS limit too aggressive.
           Change : Loosen the PCIe max FTS limit.
           Impact : This bug only applies to the 57765 B0 asic revision.


v3.118f (May 5, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ53189, CQ54274) Cannot pass IPv6 traffic on
                    5719 devices.
           Cause  : TSO needed to be turned off to fix another bug,
                    but the TSO flags in the driver were used to enable
                    generic IPv6 HW processing.
           Change : Use asic revision flags to turn on IPv6 processing.
           Impact : This bug is restricted to the 5719.

        2) Problem: (CQ55236) Ethtool -t produces loopback test failures.
           Cause  : The code that checks the TCP checksum in the BD had
                    its checksum check inverted.
           Change : Invert the inversion.
           Impact : This bug affects all devices that can do TSO.


v3.118e (May 3, 2011)
============================
    Fixes
    -----
        1) Problem: Driver crashes on heavy tx traffic.
           Cause  : Incorrect tx ring index sent to
                    tg3_skb_error_unmap().
           Change : Send correct index.
           Impact : Panic disappears.

        2) Problem: Driver fails to compile on kernels that do not
                    support EEH.
           Cause  : EEH data structures not defined.
           Change : Add preprocessor guards around EEH code.
           Impact : Driver compiles as expected.

        3) Problem: VMWare driver PSODs when deallocating a NetQueue.
           Cause  : Deallocating a NetQueue is an inherently racey
                    process.  It is possible for an interrupt to arrive
                    such that the software and hardware states differ
                    drastically.  This will trigger a runaway rx buffer
                    reclaim, corrupting memory in the process.
           Change : Disable interrupts and NAPI calls while that vector
                    is being brought down.  Add guards to make sure timer
                    does not accidentally reenable interrupts.
           Impact : The PSOD will be eliminated, but the device will
                    eventually stop receiving traffic.  This item is
                    still under investigation.


v3.118d (April 29, 2011)
============================
    Fixes
    -----
        1) Problem: Driver doesn't compile on SLES 10.4
           Cause  : SLES 10.4 does not have cancel_work_sync() function.
           Change : Add compatibility code around this call.
           Impact : Driver compiles as expected.

        2) Problem: Driver BUG_ON's in tg3_tx_recover().
           Cause  : A recent skb error path cleanup failed to
                    set important tx ring structure members.
                    The tx completion path notes this and
                    calls tg3_tx_recover().  If tg3_tx_recover()
                    is called more than once, the kernel panics.
           Change : Assign skb and mapping pointers in
                    tigon3_dma_hwbug_workaround().
           Impact : tx recoverys eliminated.

    Enhancements
    ------------
        1) Change : Applied 5717 / 5718 interrupt workaround code to
                    57765 asic rev as well.
        2) Change : Consolidated autonegotiation advertisement setup
                    code in one place.


v3.118b (April 27, 2011)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.117p (April 21, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ54703) There is no way for the admin to
                    query EEE status.
           Cause  : EEE is still a new feature.  At the moment, there
                    does not exist a userspace tool to query its
                    status.
           Change : Add an EEE capability item to the sign-on banner
                    messages.  Add an EEE status message to the link
                    messages for those devices that support it.
           Impact : These changes are the best we can do short-term.
                    For the long term, we need to add a new ethtool
                    interface to support EEE queries.

        2) Problem: Loopback tests occasionally fail.
           Cause  : RSS is still left enabled.  Packets were being
                    routed to other rx return rings rather than ring 1.
           Change : Change the indirection table to point all packets
                    to ring 1.
           Impact : Loopback tests work as expected.

        3) Problem: 5719 and 5720 devices can go into permanent "during
                    interrupt" state, which will stall that MSI-X vector.
           Cause  : Hardware bug.
           Change : Set bit 7 of register 0x6c to enable hardware
                    workaround.
           Impact : Interrupts work as expected.  5717 still has a problem
                    and this hardware workaround is not available for that
                    asic rev.

    Enhancements
    ------------
        1) Change : Partial sync up with upstream kernel driver.


v3.117o (April 11, 2011)
============================
    Fixes
    -----
        1) Problem: Devices that use PCI configuration space to access
                    the VPD could fail to obtain VPD data correctly.
           Cause  : If the PCI layer call to fetch the VPD gets
                    interrupted, the driver will attempt to resubmit
                    a new request to get the rest of the data.  The
                    driver supplies an incorrect pointer on the
                    subsequent call.
           Change : Supply the correct pointer to the additional PCI
                    layer call to fetch the rest of the VPD data.
           Impact : This bug only affects those devices that have a
                    VPD, but do not use the legacy NVRAM format.

        2) Problem: EEE still enabled by default.
           Cause  : The code that disables EEE essentially removes the
                    ability to set a flag informing the driver in other
                    places that the device can do EEE.  The (invalid)
                    assumption was that a chip reset will wipe out any
                    lingering EEE setting that might leave it enabled.
           Change : Disable EEE in CPMU registers and phy autoneg
                    advertisements.
           Impact : This bug only affects EEE capable chips.


v3.117n (April 8, 2011)
============================
    Fixes
    -----
        1) Problem: NetQueue traffic stops after ~1 hour of heavy
                    traffic.
           Cause  : The amount of rx BD cache memory on the chip has
                    decreased as newer chip revisions are released.
                    The driver configures a rx buffer low watermark
                    that was fine for older chips, but is too high
                    for more recent chips.  If the watermark is too
                    high, the chip could eventually stop fetching
                    BDs.
           Change : Tailor the rx buffer low water mark to suit the
                    particular asic rev being used.
           Impact : Rx buffer deadlock disappears.

        2) Problem: Rx discards stat increments when dropping
                    undesirable multicast frames.
           Cause  : The counter increments because multicast frames
                    are being rejected by the APE, which increases
                    the counter.
           Change : Implement an alternative strategy where the driver
                    counts the number of times rx mbuf resources are
                    unavailable.
           Impact : The workaround grossly approximates the original
                    function of the counter, but not exactly.  This
                    bug only affects 5717 (and 5718), 5719, and 5720
                    asic revs.

    Enhancements
    ------------
        1) Change : Added support for extended VPD area.
        2) Change : Added jumbo frames loopback support.
        3) Change : Disable EEE support by default.


v3.117m (April 1, 2011)
============================
    Enhancements
    ------------
        1) Change : Changed phy read write ioctls to only permit phy
                    accesses when the device is up.
        2) Change : Added accessor routines for phy register 0x18.
        3) Change : Added external loopback support to the selftest.
        4) Change : Changed the firmware update timeout from 10 to
                    30 seconds in a VMWare environment.


v3.117l (March 24, 2011)
============================
    Fixes
    -----
        1) Problem: Device cannot pass traffic after a NetQueue is
                    freed.
           Cause  : The driver incorrectly flushed all rx queues on
                    deallocation rather than just the target queue.
           Change : Flush only the target queue.
           Impact : This bug only affects NetQueue enabled devices.

    Enhancements
    ------------
        1) Change : Added code to respond to the error bit in the
                    status block.
        2) Change : Added error checking for filter type.
        3) Change : Added code to accept VLAN and MACVLAN filter types.
        4) Change : Fixed std and jmb producer ring replenish
                    thresholds.


v3.117k (March 18, 2011)
============================
    Fixes
    -----
        1) Problem: NetQueues are not being freed.
           Cause  : The driver incorrectly assumes the filter ID is
                    zero when removing a rx filter.  The filter ID
                    check was preventing the code from disabling the
                    queue.
           Change : Change the code to check against the filter ID
                    assigned by the driver when the filter is added.
           Impact : This bug only affects NetQueue enabled devices.

        2) Problem: Driver PSODs in VMWare after system deallocates
                    a queue.
           Cause  : The driver was not resetting the rx return ring
                    consumer index pointer to zero when the queue was
                    freed.  The driver will update the hardware
                    consumer index with the wrong value the next time
                    an interrupt occurs on that vector.
           Change : Zero the software rx return ring consumer index.
           Impact : This bug only affects NetQueue enabled devices.

        3) Problem: All traffic stops after disabling a NetQueue.
           Cause  : The driver needs to flush the queue after
                    disabling it.  The flush command accepts a mask
                    of queues _not_ to flush rather than a bitmask
                    of queues that need flushing.
           Change : Invert the sense of the queue flushing.
           Impact : This bug only affects NetQueue enabled devices.


v3.117j (March 17, 2011)
============================
    Fixes
    -----
        1) Problem: Driver does not size 4Mb NVRAM parts correctly.
           Cause  : The 4Mb NVRAM parts share the same pinstrapping
                    as the 2Mb parts.
           Change : The driver needs to look at another NVRAM location
                    to determine the size.
           Impact : This bug only affects the 5717 and 5719 ASIC revs.

        2) Problem: Driver fails to compile for RedHat 4.X distros.
           Cause  : Missing preprocessor definition.
           Change : Added PCI_D3cold to the compatibility code.
           Impact : This bug affects all RedHat 4.X distros.

        3) Problem: When attempting to disable NetQueue support through
                    the driver module parameter, the driver will fail
                    to reduce the number of MSI-X vectors it allocates.
           Cause  : Off-by-one error when checking the force_netq
                    parameter.
           Change : Fixed the error.
           Impact : This bug only affects NetQ enabled devices.

    Enhancements
    ------------
        1) Change : Added full register dump support for tx timeout
                    events.  PCI and PCI-X devices will only dump
                    a select set of registers.
        2) Change : Added more stats for VMWare NetQs.
        3) Change : Added more informational messages about NetQ
                    operation.
        4) Change : Partial sync with upstream kernel.


v3.117i (March 4, 2011)
============================
    Fixes
    -----
        1) Problem: PSOD while kernel is fetching stats from device.
           Cause  : The destination buffer was not big enough because
                    the driver reports fewer stats available if NetQueue
                    support is disabled.  The code that copies the stat
                    strings does not perform the same check.  The result
                    is a buffer overflow.
           Change : Check NetQueue status before attempting to copy
                    additional stat strings to destination buffer.
           Impact : This bug will affect all devices, not just NetQueue
                    enabled devices.  This fix may resolve CQ53476,
                    CQ53382, and CQ52427.


v3.117h (March 1, 2011)
============================
    Enhancements
    ------------
        1) Change : Temporarily removed TSS support when NetQueue is
                    enabled to allow testing to continue while bug is
                    being investigated.


v3.117g (February 24, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ52983, CQ53080) Unable to assign / use VLAN
                    tagged traffic.
           Cause  : The VLAN API has changed in the upstream kernel.
                    Pieces of that API have been backported into
                    vendor kernels, but the backport isn't complete.
                    VLAN tagged frames sent up consequently get
                    dropped.
           Change : Change the compatibility code to use the older
                    VLAN tag implementation for SLES and RedHat
                    installations.
           Impact : This bug affects all ASIC revs.

        2) Problem: Bootcode leaves CPMU clock override enabled, thus
                    consuming more power.
           Cause  : Bootcode needs to finish its tasks in a bounded
                    amount of time.  The default clock speed is too
                    slow for bootcode to meet its time constraints.
                    Bootcode forces the clock speed higher, but then
                    leaves the override enabled.
           Change : Undo the clock override from within the driver.
           Impact : This bug only affects the 5720 ASIC rev.


v3.117f (February 15, 2011)
============================
    Fixes
    -----
        1) Problem: Driver incorrectly reports success on NVRAM
                    checksum errors.
           Cause  : The tg3_test_nvram() function uses the error return
                    variable to capture the tg3_nvram_read() return
                    code.  After NVRAM has been read, the return code
                    will still show success, but the remaining code
                    assumes the value will reflect an error.
           Change : Reset the error return code to an error value.  A
                    success value will be restored later in the routine.
           Impact : This bug affects all tg3 devices.

    Enhancements
    ------------
        1) Change : Added NVRAM pinstrap decoding for 5720.
        2) Change : Added code to verify the VPD RODATA section
                    checksum.


v3.117e (February 8, 2011)
============================
    Fixes
    -----
        1) Problem: VMWare driver can PSOD while waiting for the rx
                    path to complete.
           Cause  : The driver waits for the rx path too late in the
                    cleanup routine.
           Change : Move the code that waits for rx completion earlier
                    in the NetQueue teardown sequence.
           Impact : This bug only affects NetQueue capable devices on
                    VMWare.

    Enhancements
    ------------
        1) Change : Added H2BMC support for the 5720 ASIC rev.


v3.117d (February 7, 2011)
============================
    Fixes
    -----
        1) Problem: Driver doesn't compile under 32-bit SLES 10.x
                    distros if the target kernel is not installed.
           Cause  : The Makefile uses 'uname -m' to determine the
                    current architecture.  The path to the correct
                    source needs the output of 'uname -i' instead.
                    Consequently, the driver attempts to use the
                    wrong source directory for the compile.
           Change : Fix the driver to use 'uname -i'.
           Impact : This fixes builds on all 32-bit SLES 10.x
                    installations.

    Enhancements
    ------------
        1) Change : Added basic 5720 ASIC rev support.


v3.117c (February 2, 2011)
============================
    Enhancements
    ------------
        1) Change : Apply tx underrun workaround to more devices.
        2) Change : Fix compile issues for VMWare driver.


v3.117b (January 26, 2011)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.116k (February 3, 2011)
============================
    Fixes
    -----
        1) Problem: Driver doesn't compile under 32-bit SLES 10.x
                    distros.
           Cause  : The Makefile uses 'uname -m' to determine the
                    current architecture.  The path to the correct
                    source needs the output of 'uname -i' instead.
                    Consequently, the driver attempts to use the
                    wrong source directory for the compile.
           Change : Fix the driver to use 'uname -i'.
           Impact : This fixes builds on all 32-bit SLES 10.x
                    installations.


v3.116j (January 21, 2011)
============================
    Fixes
    -----
        1) Problem: Driver doesn't compile if the NetQueue code is
                    disabled.
           Cause  : A NetQueue only variable is referenced outside
                    of the NetQueue preprocessor guards.
           Change : Surround the offending code with NetQueue
                    preprocessor guards.
           Impact : None.


v3.116i (January 19, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ52356) Phy loopback test fails for 5718.
           Cause  : An EEE workaround causes the problem.
           Change : Disable EEE during the test.
           Impact : This bug could affect 5717, 5719, and 5720
                    ASIC revs.

        2) Problem: SNMP daemons can interfere with management
                    firmware when the device is down.
           Cause  : PHY access collisions between the SNMP daemon and
                    firmware cause unpredictable problems.
           Change : Forbid phy access if the device is down and
                    management firmware is running.
           Impact : This bug affects any device with management
                    firmware.


v3.116h (January 11, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ52203) Unable to set MTU.
           Cause  : The vmware kernel needs the driver to explicitly
                    take the rtnl_lock while changing the MTU size.
                    This code was accidentally enabled for the
                    standard tg3 driver, which will cause a deadlock.
           Change : Fix the preprocessor condition that enables the
                    rtnl_locking code.
           Impact : This bug will affect all asic revs.

    Enhancements
    ------------
        1) Change : Added EEE interoperability fix.


v3.116g (January 10, 2011)
============================
    Enhancements
    ------------
        1) Change : Added NetQueue support for VMWare driver.


v3.116f (January 6, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ51944) 5718 serdes loopback tests fail.
           Cause  : The MAC loopback test has been deprecated.  The
                    internal phy loopback test fails because link has
                    not yet come up when the test is executed.
           Change : Abort MAC loopback tests.  Wait for link for
                    phy loopback tests.
           Impact : The MAC loopback test has been disabled for all
                    CPMU enabled devices.  The phy loopback test fix
                    has been applied to all asic revs.


v3.116e (January 4, 2011)
============================
    Fixes
    -----
        1) Problem: (CQ51944) Unable to pass traffic on 5719.
           Cause  : The fix for CQ51280 accidentally prevented the
                    proper configuration of the rx producer ring
                    RCBs.
           Change : Allow the 5719 to execute the proper code paths to
                    setup the RCBs.
           Impact : This bug only affects the 5719 A0 revision.

    Enhancements
    ------------
        1) Change : Updated copyright strings.


v3.116d (December 23, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ51280) Kernel panics with 5719 on bi-directional
                    Chariot test.
           Cause  : HW bug.
           Change : The best known way to workaround the bug is to
                    disable TSO and jumbo frames.
           Impact : This bug only affects the 5719 asic rev and will be
                    fixed in the A1 revision.


v3.116c (December 16, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ46520) 5718 serdes loopback tests fail.
           Cause  : The hardware needs some time to adjust to the
                    new configuration before running the test.
           Change : For MAC loopback, the hardware needs about 30
                    milliseconds before the test passes.  For internal
                    phy loopback, the driver needs to poll register
                    0x460 for link before proceeding with the test.
           Impact : While the problems are only seen on the 5718S,
                    these changes should benefit all asic revs.

        2) Problem: TSO defaults to off for HW TSO devices on RH5.X
                    distros.
           Cause  : The driver was recently changed to show that TSO
                    implies checksum offload is enabled.  RH5.X kernels
                    use a different netdev feature bit for HW TSO
                    devices though.
           Change : Modify the code so that it checks for the old and
                    current IP checksum flags.
           Impact : This bug affects all HW TSO devices.

        3) Problem: TSS enabled devices can panic on Linux distros that
                    support it.
           Cause  : The driver's compatibility code incorrectly enables
                    itself, causing all tx packets to go to the first
                    tx ring.  When two packets (intended for different
                    rings get transmitted at the same time, the tx BD
                    ring and indexes get corrupted.  Ultimately this
                    causes a tx_recovery, from which the device never
                    recovers.
           Change : Change the compatibility code so that it enables
                    only at the proper times.
           Impact : This bug affects all TSS enabled devices.

    Enhancements
    ------------
        1) Change : Reduce the performance impact of the 5719 FIFO
                    overflow fix.


v3.116b (December 9, 2010)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.115j (December 9, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ46520) Loopback test fails when link is set to
                    10/100Mbps half duplex.
           Cause  : The loopback test is a full duplex test.  The half
                    duplex bit was set in register 0x404.
           Change : Clear the half duplex bit for the loopback test.
           Impact : This bug only seems to affect the 5785.

    Enhancements
    ------------
        1) Change : EEE debounce counters were accidentally set to very
                    relaxed values.  This has been fixed.
        2) Change : Fix 5701 packet loss by 8-byte aligning the rx_offset
                    needed for possible VLAN tag reinsertion.


v3.115i (December 1, 2010)
============================
    Fixes
    -----
        1) Problem: Tx data corruption on 5719.
           Cause  : Hardware bug requiring workaround.
           Change : Coalesce all buffers that contain 8-bytes or less.
           Impact : 5719 only.

        2) Problem: 57765, 5717, and 5719 devices can perform
                    suboptimally.  With packets sized around the MTU
                    size.
           Cause  : Driver sets the jumbo frame flag for packets that
                    were greater than 1500 bytes.
           Change : Only set the jumbo frame flag for frames that are
                    larger than 1518 in length.
           Impact : This problem only affects the 57765, 5717, and 5719
                    ASIC revs.

    Enhancements
    ------------
        1) Change : Added a compile time flag (TG3_NO_EEE) and a module
                    parameter (tg3_disable_eee) to selectively disable
                    EEE support.  See README.TXT for details.


v3.115h (November 16, 2010)
============================
    Fixes
    -----
        1) Problem: RDMA FIFO overrun can still happen with a Gen2
                    x4 PCIe link.
           Cause  : Hardware bug requiring workaround.
           Change : Adjust MRRS PCIE register to 512 bytes.
           Impact : 5719 only.

    Enhancements
    ------------
        1) Change : Sync EEE code with Windows driver.


v3.115g (November 15, 2010)
============================
    Fixes
    -----
        1) Problem: RDMA FIFO overrun can still happen with workaround
                    in place.
           Cause  : Hardware bug requiring workaround.
           Change : Adjust MRRS PCIE register based on PCIE link
                    speed and width.
           Impact : 5719 only.

        2) Problem: Driver crashes on load on RedHat 5.6.
           Cause  : alloc_etherdev_mq() should only be used if
                    the device supports multiple queues.
           Change : Change the code to use alloc_etherdev() instead.
           Impact : All multiqueue devices (5717, 5719, 57765 asic revs).


v3.115f (November 12, 2010)
============================
    Fixes
    -----
        1) Problem: RDMA FIFO overrun on 5719.
           Cause  : Hardware bug requiring workaround.
           Change : Adjust MRRS PCIE register based on PCIE link
                    speed and width.
           Impact : 5719 only.


v3.115e (November 8, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ50579) 57765 EEE does not work until the
                    driver is unloaded and reloaded.
           Cause  : The phy did not enable EEE capabilities after
                    a phy reset.
           Change : Program the CPMU EEE registers before issuing
                    a phy reset.
           Impact : This bug only affects the 57765 B0+ asic rev.

        2) Problem: (CQ50823) Cannot build driver against latest
                    RedHat 5.6 release.
           Cause  : Compatibility code problems.
           Change : Fixed compatibility code.
           Impact : This only affects RedHat 5.6.

    Enhancements
    ------------
        1) Change : Reenabled EEE support.


v3.115d (November 1, 2010)
============================
    Enhancements
    ------------
        1) Change : Reordered tx members in the tg3_napi structure
                    and cacheline-aligned the tx and rx member variable
                    sections.  Improves small packet performance
                    by ~3-4%.
        2) Change : Removed EEE support.


v3.115c (October 27, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ50635) Pass-through does not work with 5718S.
           Cause  : The driver was not preserving the APE rx and tx
                    settings in the mac mode register for serdes
                    devices.
           Change : Preserve the APE rx and tx settings.
           Impact : This bug should only affect 5718S and 5719S.

    Enhancements
    ------------
        1) Change : Enable gphy APD for 5717 and newer devices.
        2) Change : Remove 8-byte DMA fragment length workaround for
                    5719 devices.
        3) Change : Apply 10Mbps CPMU clock workaround for all 57765
                    devices, not just the A0 revision.
        4) Change : Reenable TSS for 5719 devices.
        5) Change : Enable Multiple DMA Read Request featuer for 5719.
        6) Change : Apply tx margin fix for 5719 devices.


v3.115b (October 18, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ50405) Unable to show 5718 bootcode version.
           Cause  : A new sb format had been introduced.
           Change : Add support for sb format 1 revision 6.
           Impact : This bug should only affect 5717 and 5719 asic
                    revs.

    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.114e (October 12, 2010)
============================
    Enhancements
    ------------
        1) Change : Enable EEE support for 57765 B0 and later devices.


v3.114d (October 5, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ50234) Driver crashes when opening non-jumbo
                    capable devices.
           Cause  : Recently the driver was changed to abstain from
                    allocating resources for the jumbo producer ring(s)
                    if the device was not jumbo capable.  One of the
                    tests mistakenly allowed non-jumbo capable devices
                    to attempt to access unallocated resources.  The
                    result was a kernel panic.
           Change : Fix the test so that non-jumbo capable devices are
                    properly blocked.
           Impact : This affects all non-jumbo capable devices.


v3.114c (October 4, 2010)
============================
    Fixes
    -----
        1) Problem: Driver fails to compile for VMWare.
           Cause  : Code errors missed due to build system
                    misconfiguration.
           Change : Fixed the build system configuration and
                    then fixed the syntax errors.
           Impact : This problem only affects the VMWare driver.


v3.114b (October 1, 2010)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.113i (September 30, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ50133) When device is closed, ethtool can
                    report link when it is not available.
           Cause  : The driver only fills in speed / duplex information
                    when the device has been opened.  When the device
                    is closed, the fields are left alone.  When ethtool
                    interprets the information returned from a closed
                    device, it will use whatever value is in that
                    field and interpret it incorrectly.
           Change : Set the speed and duplex fields to the same invalid
                    values that would be used if the link were down.
           Impact : Link always shows down when device is down.  Speed
                    and duplex values are obviously invalid.


v3.113h (September 29, 2010)
============================
    Enhancements
    ------------
        1) Change : Enlarged the standard producer ring size from 512 to 2k.
                    Enlarged the jumbo producer ring size from 256 to 1k.
                    Enlarged the rx return ring size from 1K to 4K.
        2) Change : Removed 5724 device ID.


v3.113g (September 28, 2010)
============================
    Fixes
    -----
        1) Problem: (CQ49992) 5718 partno shows as "none".
           Cause  : The code correctly obtained the partno, but
                    incorrectly branched to the "none" section
                    afterwards.
           Change : Fix the code that caused the branch.
           Impact : All devices.

        2) Problem: (CQ50001) Cannot compile on SuSE 9.X or SuSE 10.X
           Cause  : Compatibility code problems.
           Change : Fixed compatibility code.
           Impact : This bug only affects these two platforms.

        3) Problem: NAPI code will crash if netpoll is enabled.
           Cause  : Netpoll visits each NAPI instance of a device during
                    a poll, whether it is enabled or not.  If an
                    inactive NAPI instance has any uninitialized
                    pointers, the driver will crash.
           Change : Change the code to only add as many NAPI instances
                    as there are allocated interrupt vectors.  Free the
                    NAPI instances when the device is closed.
           Impact : This bug affects all devices.

    Enhancements
    ------------
        1) Change : Replaced hardcoded constants with preprocessor
                    macros.
        2) Change : Added 5717 asic rev partno strings, in case the
                    NVRAM does not contain a VPD section.
        3) Change : Modified the TXMBUF margin to avoid data corruption
                    on 5719 devices.
        4) Change : Set the request size to 4K to improve performance on
                    5719 devices.


v3.113f (September 24, 2010)
============================
    Enhancements
    ------------
        1) Change : Added EEE support for B0 revisions of the
                    5717 asic rev.
        2) Change : Added TSS netq support.  All current hardware
                    implementations are broken, so this code is
                    effectively disabled.


v3.113e (September 24, 2010)
============================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.113d (September 1, 2010)
===========================
    Enhancements
    ------------
        1) Change : Added baseline netqueue support.  Multiple queues
                    are enabled in the hardware but not exposed to
                    the system.
        2) Change : Added fix for CQ25155 (FIFO overflow fix).
        3) Change : Fixed jumbo frames capability report for VMWare
                    driver.


v3.113c (August 18, 2010)
=========================
    Enhancements
    ------------
        1) Change : Removed APE events for NCSI firmware.  They are
                    not used.
        2) Change : Modified code to respect the semantics of
                    TG3_IRQ_MAX_VECS and tp->irq_max.
        3) Change : Moved the producer ring data structures into
                    the per-napi instance structure.
        4) Change : Modified makeflags.sh to report when the
                    mandatory kernel source directory argument is
                    missing.
        5) Change : Moved global rx_mode tracking variable for
                    vmware to a per-device member.


v3.113b (August 03, 2010)
=========================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.112e (July 29, 2010)
========================
    Fixes
    -----
        1) Problem: (CQ49020) Driver does not compile on SLES 10.3 or
                    SLES 9.x.
           Cause  : The preprocessor guard in the previous release was
                    misapplied.
           Change : Correct the preprocessor guard.
           Impact : The driver compiles on SLES 10.3 and SLES 9.x.


v3.112d (July 28, 2010)
========================
    Fixes
    -----
        1) Problem: (CQ48897) Driver fails to show NCSI firmware
                    version, or driver shows wrong firmware
                    description for NCSI firmware.
           Cause  : The firmware wasn't setting the "status ready"
                    bit, which caused the driver to abort the fw
                    version retrieval routine.  Once that was fixed
                    the driver mistakenly assumed DASH was the only
                    type of firmware to be running on the APE.
           Change : Inspect the "firmware features" APE shared
                    memory location to determine the type of firmware.
           Impact : This bug only affects the 5717 and perhaps the
                    upcoming 5719 asic revs.

        2) Problem: (CQ49020) Driver does not compile on SLES 10.3 or
                    SLES 9.x.
           Cause  : The compile fails because the driver uses
                    unrecognised IPv6 TSO preprocessor constants.
                    These platforms do not support IPv6 TSO.
           Change : Protect the unrecognised constants with a
                    preprocessor guard.
           Impact : The driver compiles on SLES 10.3 and SLES 9.x.

        3) Problem: (CQ49066) 5723 device issues an NMI on driver load.
           Cause  : The 5723 received a PCIe packet whose payload was
                    256 bytes in length and interpreted it as a
                    malformed PCIe packet.
           Change : The driver had code which attempted to "correct" the
                    negotiated PCIe payload size to 128 bytes.  This code
                    was introduced for the 5750 ASIC rev and was
                    conservatively applied to all devices older than and
                    including the 5784 ASIC rev.  The change was to
                    remove the 5784 ASIC rev from the list of devices
                    this code should be applied towards.
           Impact : This bug only affects the 5784 ASIC rev.
                    

    Enhancements
    ------------
        1) Change : Increased small packet performance by 3% by recoding
                    transmit related memory barriers.


v3.112c (July 22, 2010)
========================
    Fixes
    -----
        1) Problem: (CQ48173, CQ48172, CQ48171) Link failure (at 1Gbps)
                    when changing link from forced mode.  No link when
                    link is forced to 10Mbps.  Link flaps at 100Mbps
                    when forced.
           Cause  : Driver failed to clear bit 5 of register 0x18,
                    shadow reg 0x7.  This bit enables RGMII inband
                    status updates.
           Change : Set the above bit.
           Impact : Link comes up and passes traffic at all forced
                    and autonegotiated speeds.

    Enhancements
    ------------
        1) Change : Added PCI configuration space register read and
                    write ioctls for VMWare driver.


v3.112b (July 12, 2010)
========================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.111b (July 01, 2010)
========================
    Enhancements
    ------------
        1) Change : Sync-up with upstream tg3 driver.


v3.110j (June 28, 2010)
========================
    Fixes
    -----
        1) Problem: Fix for CQ48242, CQ48186 did not work as expected.
           Cause  : Test compares RSS enable flag against the wrong
                    flags variable.
           Change : Use the correct flags variable.
           Impact : This problem affects 5717 and 57765 asic revs.


v3.110i (June 23, 2010)
========================
    Fixes
    -----
        1) Problem: (CQ48242, CQ48186) Traffic fails or poor performance.
           Cause  : A recent change allowed the driver to allocate a
                    single MSI-X vector, rather than falling back to MSIs.
                    The coalescing register setup function incorrectly
                    used a flag, that indicates the use of MSI-X vectors,
                    to determine whether or not to configure non-zero
                    rx coalescing parameters for vector 0.  Zeroed rx
                    coalescing parameters essentially disables rx
                    interrupts.
           Change : Use the RSS enable flag instead.
           Impact : Rx interrupts are restored.  This problem affects 5717
                    and 5719 ASIC revs.


v3.110h (June 15, 2010)
========================
    Enhancements
    ------------
        1) Change : Replace another VMWARE_ESX_40_DDK preprocessor check
                    with its __VMKLNX__ constant equivalent.
        2) Change : Enable TSO on VMWare async builds.
        3) Change : Add three missing devices to tg3.xml file.


v3.110g (June 8, 2010)
========================
    Fixes
    -----
        1) Problem: (CQ47824) 57765 devices will occasionally not be
                    able to ping.
           Cause  : The fix and reasoning behind the fix for CQ44458
                    below are incorrect.  The indirection table
                    addresses rx queues, not MSI-X vectors.
           Change : Revert the fix for CQ44458.
           Impact : Pings work as expected.  The root cause for CQ44458
                    is that the incoming rx packets just don't hash to
                    the last RSS queue.

    Enhancements
    ------------
        1) Change : Integrate changes based on code review.
        2) Change : Make MSI-X interrupt allocation failure checks
                    more robust.
        3) Change : Add support for 50612E phy for 5785.


v3.110f (May 28, 2010)
========================
    Fixes
    -----
        1) Problem: BD and / or packet corruption happens under high
                    traffic conditions for 5717 B0 and 5719 revs.
           Cause  : The multiple DMA read engine still has problems.
           Change : Turn off the multiple DMA read engine and coalesce
                    all packets that have fragments that are less than
                    8 bytes in length.
           Impact : This problem affects all 5717 and 5719 devices.

        2) Problem: Link up via parallel detect does not work.
           Cause  : The phy on 5717 and 5719 devices determines link up
                    via parallel detection internally.  When the ISR
                    processes the link change though, the remote
                    partner's link advertisement register will read 0x0.
                    This ultimately causes the driver to incorrectly
                    conclude that the link is down.
           Change : Trust the link status in phy register 0x1.  If
                    the remote partner's advertisement register reads
                    0x0, assume link is up via parallel detect.
           Impact : This problem affects all 5717 and 5719 serdes
                    devices.

    Enhancements
    ------------
        1) Change : For the 5717 (and 5719), the driver uses the PCI
                    function number to determine which MDIO bus address
                    the driver should use to address the current
                    device's phy.  This release changes the code to
                    use the function number provided by the kernel
                    rather than decoding a device register.  The
                    5719 changes the layout of this register, so the
                    benefit of this change is more maintainable code.


v3.110e (May 13, 2010)
========================
    Fixes
    -----
        1) Problem: Driver issues ALIGN not defined warnings on 2.4
                    kernels.
           Cause  : Missing compatibility code.
           Change : The driver's compatibility code will define this
                    macro if it does not already exist.
           Impact : This problem was only seen on 2.4 kernels.

        2) Problem: Driver compile fails on newer kernels.
           Cause  : Recent makefile changes assumed `uname -p` would
                    return x86_64, i686, etc.  On some systems, the
                    command actually returns a processor specific
                    descriptive string.
           Change : Use `uname -m` instead, which seems to get it right
                    in all cases so far.
           Impact : This bug affects any system that does not meet the
                    old assumptions.

    Enhancements
    ------------
        1) Change : Allow the allocation of a single MSI-X interrupt if
                    the system supports more than one CPU.  The benefit
                    is that the system can migrate that interrupt to
                    any CPU if needed.


v3.110d (May 11, 2010)
========================
    Fixes
    -----
        1) Problem: (CQ45614) Driver fails to build if kernel variant
                    binaries are not installed.
           Cause  : The driver's makefile looks at the installed kernel
                    binary directory in /lib/modules for a symlink that
                    points to the kernel sources.  If that symlink is
                    not found, the build ultimately fails.
           Change : Change the makefile to look for kernel sources in
                    known locations if the kernel binary symlinks are
                    missing.
           Impact : This problem can happen anytime somebody runs make
                    with KVER set and with only the kernel devel packages
                    installed.

        2) Problem: (CQ44458) CPU3 does not get utilized when RSS mode is
                    enabled.
           Cause  : The RSS indirection table indexes into the MSI-X
                    vector table, not table of RX queues.
           Change : Add one to the indirection table index so that the table
                    always routes packets to valid vectors.
           Impact : This problem happens on 5717 and 57765.  At the time of
                    this writing, these are the only two devices that
                    implement RSS and MSI-X interrupts.

        3) Problem: (CQ44456) 72hour cc32 stress test fails.
           Cause  : The driver was leaking memory.  An out of memory
                    condition could cause the reboot.
           Change : Free all rx rings when deconstructing the device.
           Impact : This problem happens on 5717 and 57765.  At the time of
                    this writing, these are the only two devices that
                    implement RSS and MSI-X interrupts.


v3.110c (April 27, 2010)
========================
    Fixes
    -----
        1) Problem: (CQ47032) Driver version incorrect in Dash
                    Management console.
           Cause  : The driver posted a static 3.81 version to
                    APE shared memory.
           Change : Implement a driver version reporting scheme
                    that will always stay accurate.
           Impact : This problem only afflicts APE-enabled devices.
                    At the time of this writing, only the 5761 and
                    5717 devices are affected.

        2) Problem: Driver implements APE mutex locking incorrectly
                    for the 5717.
           Cause  : APE mutex registers changed location.
           Change : Recode the driver to use the new mutex register
                    location.
           Impact : This bug only affects the 5717 asic rev.

        3) Problem: On SLES 11.X systems, modules that are marked
                    externally supported prevent kernel updates.  This
                    is regarded as a security concern.
           Cause  : The system's update mechanisms simply won't update
                    kernels with such modules in place.
           Change : Remove the Module.supported target from the driver's
                    makefile.  This will render the module unloadable
                    in a default install.  Update the README.TXT file to
                    describe the problem and how to work around it.
           Impact : This problem will affect all SLES 11 and newer
                    installs.
        4) Problem: Jumbo frames are corrupted at 100Mbps.
           Cause  : Driver was accidentally disabling the tx mbuf lockup
                    fix in register 0x45c.
           Change : Set bit 8 of 0x45c to enable lockup fix.
           Impact : This problem affects all 5755 and newer devices.

    Enhancements
    ------------
        1) Change : Enable the multiple DMA read facilities for 5717
                    B0 devices.
        2) Change : Removed the Module.supported file as a build target.
                    This means the admin will have to toggle the
                    allow_unsupported_modules flag in
                    /etc/modprobe.d/unsupported-modules.  The README.TXT
                    has been updated to address this.


v3.110b (April 13, 2010)
========================
    Initial release notes.
