release.txt Driver File Contents (Broadcom_LAN_Chipset_v7.6.4.2_Windows_32.zip)

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

                         Broadcom NetXtreme II GigE VBD
                          For Windows Server 2000-2012

                  Copyright (c) 2000-2013 Broadcom Corporation
                              All rights reserved.



Version 7.6.2.0 (Jan 31, 2013)
==============================

    Bug Fixes:
    ----------

    1. Problem: cq#67177
          BCM5709 page fault on PnP remove device.

       Cause:
          The page fault occurs when MessageNumberLimit is set to 1.  The
          driver is not able to operate with only one MSI-X vector.  It
          requires a vector for each transmit/receive queue.

       Fix:
          In the case where there is only one MSI-X vector, the driver falls
          back to a single interrupt mode.  In this mode, one interrupt
          services all the transmit/receive queues.

       Impact:
          This problem exists in past gold releases.


    2. Problem:
          WOL test causes a break in checked version of Windows.

       Cause:
          The break in Windows is due to the device generating an interrupt
          after interrupts had been disabled.

       Impact:
          This problem exists in past gold releases.
          


Version 7.6.1.0 (Jan 10, 2013)
==============================

    BCM5709 firmware 6.2.7
    ======================

    Bug Fixes:
    ----------

    1. Problem: CQ#65144
          Device goes unresponsive when setting MTU to 1324.

       Cause:
          When MTU is setup configure to a value smaller than 1500 the device
          will receive packets larger than the configured MTU but less than
          1500.  This will result it overflowing the receive buffer.

       Fix:
          Drop packets that are larger than the configured MTU.

    2. Problem: CQ#65408
          Keep alive packets from an offloaded connection are ignored by
          the receiver.

       Cause:
          Keep alive packets from an offloaded connection are sent out with
          incorrect TCP checksum which causes the receiver to ignore them.


    BCM5706/08 firmware 6.2.4
    =========================

    Bug Fixes:
    ----------

    1. Problem: CQ#65144
          Device goes unresponsive when setting MTU to 1324.

       Cause:
          When MTU is setup configure to a value smaller than 1500 the device
          will receive packets larger than the configured MTU but less than
          1500.  This will result it overflowing the receive buffer.

       Fix:
          Drop packets that are larger than the configured MTU.



Version 7.6.0.0 (Oct 4, 2012)
=============================

    Enhancement:
    ------------

    1. Initial T7.6 release.



Version 7.4.14.0 (Aug 27, 2012)
===============================

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

    1. cq#65360 - Add support for flow control option "Auto" as defined by
          Microsoft.



Version 7.4.13.0 (Aug 9, 2012)
==============================

    Bug Fixes:
    ----------

    1. Problem: cq#65068, #65069
          WHCK device install check test failed on Windows 2012.

       Cause:
          The INF contains obsolete entries that the test does not like.

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

    1. Request: Add "Auto" flow control option.Changed default flow control
                settings to "Auto".



Version 7.4.12.0 (July 18, 2012)
===============================

    Bug Fixes:
    ----------

    1. Problem: cq#64688
          A very infrequent break in DriverEntry.

       Cause:
          If a backlash happens to be the next character after the registry
          path, the routine get_reg_key_name will corrupt memory of the
          adjacent structures and will also lead to a page fault.



Version 7.4.8.0 (June 22, 2012)
===============================

    Bug Fixes:
    ----------

    1. Problem: cq#62270
          Break in get_location_str while running Autofail test.

       Cause:
          The test injects faults into system calls.  The driver needs to
          check for valid return values.



Version 7.4.7.0 (June 15, 2012)
===============================

    Bug Fixes:
    ----------

    1. Problem: cq#63977, #63978
          Sparta test failures in TCP_Urgent and TCPWindowScaling scripts.

       Cause:
          There was a race condition between indicating a connection to
          upload and processing forwarding packets.  The race condition
          cause the firmware to ignore the forwarding packets because
          the connection is being closed.

       Fix:
          The processing for the KQ must be done first before processing
          the L2 receive chain.  This will ensure the stack receives
          the upload indication and will not forward the packets back to
          the firmware.

       Impact:
          This problem exists in previous gold drivers but it won't cause
          any function issue.



Version 7.4.6.0 (June 13, 2012)
===============================

    Bug Fixes:
    ----------

    1. Problem: cq#63865
          Driver may crash when the second BCM5709 port is bound to a
          VM switch.

       Cause:
          The second port was not able to get all the required interrupt
          messages for all the processors.  When a request came in to
          create a VMQ, it was not possible to set the queue's processor
          affinity.

       Impact:
          This problem exists in previous gold drivers but the problem is
          system specific.


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

    1. cq#63845 - Undo the changes to cq#63185 below.



Version 7.4.4.0 (June 5, 2012)
==============================

    Bug Fixes:
    ----------

    1. Problem: cq#63432
          Checked driver breaks in mm_process_ooo_pkt while running iSCSI and
          TOE stress test.

       Cause:
          iSCSI OOO processing is out of sync with the firmware due to
          packet drops.

       Fix:
          When out of sync condition is detected, the driver will flush its
          states by dropping all he isles.

       Impact:
          This problem exists in previous gold drivers.


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

    1. Move to WDK 8400.



Version 7.4.3.0 (May 23, 2012)
==============================

    Bug Fixes:
    ----------

    1. Problem: cq#63250
          Windows 8 could crash in DriverEntry due to corruption of the
          Bugcheck call back record.

       Cause:
          get_reg_key_name routine incorrectly assumes a unicode string is
          null terminated.

       Impact:
          This problem does exist in the previous gold drivers.


    2. Problem: cq#62183
          Ndistest RSS test failure when run on a configuration with
          mulitple k-groups.

       Cause:
          The driver does not handle multiple k-groups properly.  As a result
          RSS packets may be indicated on an incorrect processor.

       Impact:
          This problem does exist in the previous gold drivers.
          


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

    1.  Remove an assert in checked driver with the vbd fails to load.

    2.  cq#62923 - Save pointer to the connection context in the backing store.



Version 7.4.2.0 (May 10, 2012)
==============================

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

    1. cq#63185 - Prevent the driver from loading on BCM5706 and BCM5708 on
          Windows 8.



Version 7.4.1.0 (May 2, 2012)
=============================

    Bug Fixes:
    ----------

    1. Problem: cq#63004
          Driver not able to load on some systems due to driver signing
          problem.

       Cause:
          Reverted back to the previous version of the certification used
          for signing.



Version 7.4.0.0 (Apr 30, 2012)
==============================

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

    1. Integrate the changes made to the Windows 8 inbox branch.



Version 7.2.1.0 (Jan 24, 2012)
==============================

    Enhancement:
    ------------

    1. cq#59807 - Changed product version number to v17.2.0.



Version 7.2.0.0 (Nov 22, 2011)
==============================

    Enhancement:
    ------------

    1. Initial T7.2 release.



Version 7.0.6.0 (Oct 14, 2011)
==============================

    BCM5709 firmware 6.2.6
    ======================

    Bug Fixes:
    ----------

    1. Problem: CQ#59255
        Unable to install to a lefthand target over 1G offload

       Fix:
        Changed the iSCSI dataIn pkt processing to allow invalid TTT
        packets to get processed if the err mask is set to 1 (warn).



Version 7.0.5.0 (Oct 13, 2011)
==============================

    BCM5706/08 firmware 6.2.3
    =========================

    Bug Fixes:
    ----------

    1. Problem: CQ#59255
        Unable to install to a lefthand target over 1G offload

       Fix:
        Changed the iSCSI dataIn pkt processing to allow invalid TTT
        packets to get processed if the err mask is set to 1 (warn).


    BCM5709 firmware 6.2.5
    ======================

    Bug Fixes:
    ----------

    1. Problem: CQ#59255
        Unable to install to a lefthand target over 1G offload

       Fix:
        Changed the iSCSI dataIn pkt processing to allow invalid TTT
        packets to get processed if the err mask is set to 1 (warn).



Version 7.0.4.0 (Sept 22, 2011)
===============================

    Bug Fixes:
    ----------

    1. Problem: cq#58664
          Some of the descriptions for the Speed & Duplex options don't
          match the description used in the miniport.

       Fix:
          Used the same descriptions that are in the miniport's INF file.

       Impact:
          This problem does not exist in the previous gold drivers.


    Enhancement:
    ------------

    1. cq#58704 - Added a registry configuration to allow for reporting
          of flow control results instead of the requested settings.


    BCM5706/08 firmware 6.2.2
    =========================

    Bug Fixes:
    ----------

    1. Problem:
          When TCP timestamp option is enable, TCP slow start is not
          functioning correctly.

       Fix:
          TCP should not use non-round trip packets for RTT estimation.

       Impact:
          This problem exists in past gold drivers.


    BCM5709 firmware 6.2.4
    ======================

    Bug Fixes:
    ----------

    1. Problem: cq#58308
          When TCP timestamp option is enable, TCP slow start is not
          functioning correctly.

       Fix:
          TCP should not use non-round trip packets for RTT estimation.

       Impact:
          This problem exists in past gold drivers.



Version 7.0.3.0 (Aug 4, 2011)
=============================

    Bug Fixes:
    ----------

    1. Problem: cq#56242
          In a case where jumbo frames are enabled when running iSCSI over 
          L4/TOE and the Host application is not posting buffers (fast enough),
          it is possible for a BSOD condition to occur (BAD_POOL_HEADER bug
          check) when a connection is uploaded after passing iSCSI traffic.

       Cause:
          The BAD_POOL_HEADER bug check is a result of device driver data 
          structures in host memory having extended outside their defined 
          range.  Again, for this problem to occur jumbo frames must be 
          enabled, in particular, the last jumbo frame that must be placed 
          in generic buffers could exceed the maximum number of generic 
          buffers allowed for the connection.  This problem does not cause 
          data corruption, but instead a system BSOD is observed.

       Fix:
          Increase the maximum number of generic buffers to account for the
          last jumbo frame placement while in generic mode.

       Impact:
          This problem exists in previous gold drivers.


    2. Problem: cq#56102
          System crashes when running diagnostic on the bus driver with
          all the client devices (Ndis miniport and iSCSI) disabled.

       Cause:
          Because no client devices had previous bound to the bus driver,
          the ISRs and DPCs were not setup.

       Impact:
          This problem exists in previous gold drivers.



Version 7.0.2.0 (July 21, 2011)
===============================

    Bug Fixes:
    ----------
    
    1. Problem: cq#57115
          The 2c_Mini6RSSSendRecv fails on BCM5706 and BCM5708.

       Cause:
          The bus driver is incorrectly reporting that it supports IPv6 RSS
          on BCM5706 and BCM5708.

       Impact:
          This problem exists in past gold drivers but it has no functional
          impact.

    Enhancement:
    ------------

    1. Changed *FlowControl to match the miniport's setting.
    2. cq#57159 - Removed support for iSCSI on Windows 2003.



Version 7.0.1.0 (July 11, 2011)
===============================

    Bug Fixes:
    ----------

    1. Problem: cq#56816
          Device fails to resume after hibernation when iSCSI boot is
          enabled.

       Cause:
          After hibernation, the device's interrupt was not enabled.


    Enhancement:
    ------------

    1.  cq#56206 - Hide wol_cap configuration.  WOL capababilities are now
        configured in the Ndis miniport's property page via 
        *WakeOnMagicPacket and *WakeOnPattern keywords.



Version 7.0.0.0 (Jun 1, 2011)
=============================

    Enhancement:
    ------------

    1.  Integrated the changes from the Windows 8 branch.



Version 6.4.4.0 (Apr 11, 2011)
==============================

    Bug Fixes:
    ----------

    1. Problem:
          Magic packet wakes up the system from S5 when WOL setting is
          disabled in the NVRAM.

       Cause:
          The driver is using the OS setting to enable/disable WOL on
          shutdown ignoring the setting in the NVRAM.

       Impact:
          This problem exists in the previous gold driver.



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

    Bug Fixes:
    ----------

    1. Problem: cq#54095
          Ping wakes up the system form S5.

       Cause:
          ACPI wake up was not disabled when the system goes to S5.

       Impact:
          This problem exists in the previous gold driver.


    2. Problem:
          iSCSI OOO is may be enabled even when iSCSI PDO is not enumerated.

       Cause:
          The logic to disable iSCSI OOO based of the numeration of iSCSI
          PDO was incorrect.

       Impact:
          Problem exists in previous gold drivers but it is benign and won't
          result in any functional issue.



Version 6.4.2.0 (Feb 18, 2011)
=============================

    Bug Fixes:
    ----------

    1. Problem: CQ#53040
        BCM5709 failed on WolWin7Pattern under WLK 1.6 RTM.
        
       Fix:
        Allow support of maximum 8 WOL patterns for 5709.

       Impact:
        Problem exists for all previous gold releases. 
       
    2. Problem: CQ#52136
        Win8:VBD:5709: bxvbda!lm_disconnect_tcp+150;Assert is seen 
        while running offloadstress on both ports.

       Fix:
        Fixed a race condition where VBD driver could process an 
        back to back gracefully disconnect and abortive disconnect
        request out of order. 

       Impact:
        Problem exists for all previous gold releases. However, this
        problem depends on timing and the chance of happening is very
        remote. 
        


Version 6.4.1.0 (Feb 9, 2011)
============================

    Bug Fixes:
    ----------

    1. Problem: CQ#51281
          The instance number for the bus driver and the child devices do
          not match the bus driver's software instance number.  Instead
          the Ndis miniport's instance was used in the same way as the
          older releases.

       Cause:
          The bus driver does not change the instance number of the Ndis
          instance number matches the last digit of the software instance
          number.

       Fix:
          Replace the instance number in the friendly name if all of the
          digits don't match the software instance number.

       Impact:
          New introduced in T6.2 release.



Version 6.4.0.0 (Nov 08, 2010)
============================

    Enhancement:
    ------------

    1. Request:
        Changed versioning scheme to include 4 version numbers.



Version 6.2.8 (Jan 05, 2011)
============================

    Bug Fixes:
    ----------

    1. Problem:
        OEM system BSOD after driver update.

       Fix:
        Driver must guard against a race condition where OS asks driver to
        post rx buffers to a TCP connection and the same TCP connection has
        already been invalidated. 

       Impact:
        Problem happens to previous gold drivers. 

    5709 firmware 6.2.3
    -----------------------
    ***** iSCSI offload *****

    Bug Fixes:  

    ----------
    1. Problem: CQ#51894
        5709 - iSCSI ReadWrite throughput has regressed.

       Fix:
        Removed the extra ctx memory read/writes introduced in the fast
        path which contributed to this regression.

       Impact:
        Problem happens in T6.0 gold driver.
    


Version 6.2.7 (Dec 21, 2010)
============================

    Bug Fixes:
    ----------

    1. Problem:
          Changing number of RSS queues causing ping timeout.

       Cause:
          After number of RSS queues get changed, the driver RSS table
          didn't get initialized and may contains stale values.

       Fix:
          Upon NDIS miniport driver unbind, VBD must re-initialize the
          driver RSS table to 0. 

       Impact:
          Problem exists on T6.0 gold driver. 



Version 6.2.6 (Dec 20, 2010)
============================

    Bug Fixes:
    ----------

    1. Problem: CQ#51281
          The instance number for the bus driver and the child devices do
          not match the bus driver's software instance number.  Instead
          the Ndis miniport's instance was used in the same way as the
          older releases.

       Cause:
          The bus driver does not change the instance number of the Ndis
          instance number matches the last digit of the software instance
          number.

       Fix:
          Replace the instance number in the friendly name if all of the
          digits don't match the software instance number.

       Impact:
          New introduced in T6.2 release.



Version 6.2.5 (Dec 14, 2010)
============================
    Bug Fixes:
    1. Problem: CQ#51281
        Driver should set NumberOfInterruptMessages to 1 instead of 0 in 
        INTA mode.

       Fix:
        Driver set NumberOfInterruptMessages to 1 per DDK spec. 

       Impact:
        Problem exists in previous gold drivers. 



Version 6.2.4 (Nov 11, 2010)
============================

    Bug Fixes:  
    ----------

    1. Problem: CQ#50989
        Windows 2003 F6 installation: Windows BSOD at final boot-to-desktop 
        phase.

       Fix:
        Wdfldr and wdf01000 services are set to load group "Boot Bus Extender".

       Impact:
        Newly introduced in release T6.2.
        


Version 6.2.3 (Nov 04, 2010)
============================

    Bug Fixes:
    ----------

    1. Problem: CQ#50502
        Driver load/Unload causes the system to reboot when running
        sockdie stress with driver verifier enabled on one port and
        load/unload test on the other port using 5709.

       Fix:
        Driver should not call PsCreateSystemThread at dispatch level.

       Impact:
        Problem exists in previous gold drivers. However, this problem
        only happens when driver is running out of kwq resources and this
        is very unlikely.

    5709 firmware 6.2.2
    -----------------------
    ***** TOE/iSCSI offload *****
    1. Problem: CQ#50775
        5709: Unable to delete team after running CNIC stress for 72 hrs.
       
       Fix:
        Catchup rate limiter may increase the TX window improperly and 
        resulted in exhausion of TX BD cache if catchup traffic consist of
        many small BDs. 

       Impact: 
        Problem happens in previous gold driver but this is a corner case
        that should not happen frequently. 
    
Version 6.2.2 (Oct 20, 2010)
============================
    5706/08 firmware 6.2.1
    -----------------------
    ***** iSCSI offload *****

    Bug Fixes:  
    ----------
    1. Problem: CQ#44011
        iSCSI SQE fails to get triggered via the mailbox due to the iSCSI 
        cid allocation not being 0x100 boundary aligned.

       Fix: (CP)
        Fixed the iSCSI cid allocation.
    
       Impact:
        Problem exists in previous gold drivers.
   
    Enhancement:
    ------------

    1. Enable MSIX support for 5716 devices when create INF file for 
       BRCM branding, and for 5709/5716 when create INF file for MSFT 
       branding.

    2. Added registry key to allow control of large GRC timeout setting.

    3. cq#36066: Append the same instance number to the end of the bus
          driver's and its client device's friendly names.

Version 6.2.1 (Oct 11, 2010)
    Bug Fixes:
    ----------
    1. Problem: CQ#49618
        Windows shutdown WOL does not work with OEM blade by magic 
        packets with LAA MAC.

       Fix:
        Allowed LAA MAC WOL capability during window shutdown by default.

       Impact:
        Problem exists on previous gold drivers. 

    2. Problem: CQ#50306
        Advanced properties will hang during modification on single 
        processor systems.

       Fix:
        The driver should stay in MSIX interrupt mode instead of entering
        SIMD interrupt mode when running in a single processor system.

       Impact:
        Problem exists on previous gold drivers.
    
    Enhancement:
    ------------
    1. Set "starttype" to 0 (SERVICE_BOOT_START), set "loadordergroup" to 
       "System Bus Extender", and removed bootflags.

Version 6.2.0 (Sep 15, 2010)
    5706/08 firmware 6.2.0
    -----------------------
    1. Problem: CQ#49832
        Flow Control is not operating correctly under stress.         

       Fix:
        RV2P FW needs to be optimized for small packet traffic.
    
    5709 firmware 6.2.0
    -----------------------
    1. Problem: CQ#49832
        Flow Control is not operating correctly under stress.         

       Fix:
        RV2P FW needs to be optimized for small packet traffic.

Version 6.0.24 (Sep 14, 2010)
    5706/08 firmware 6.0.15
    -----------------------
    1. Problem: CQ#49832
        Flow Control is not operating correctly under stress.         

       Fix:
        RV2P FW needs to be optimized for small packet traffic.
    
    5709 firmware 6.0.17
    -----------------------
    1. Problem: CQ#49832
        Flow Control is not operating correctly under stress.         

       Fix:
        RV2P FW needs to be optimized for small packet traffic.

Version 6.0.22 (Sep 2, 2010)
    Bug Fixes:
    ----------
    1. Problem: CQ#49739
        bxvbda!set_rss_params calling WdfInterruptReleaseLock with 
        null interrupt handle.

       Fix:
        Driver must make sure the interrupt is valid before performing
        interrupt spin lock operations.

       Impact:
        Problem exists in previous gold drivers. 
    
Version 6.0.21 (Aug 20, 2010)
    Bug Fixes:
    ----------
    1. Problem: CQ#49590
        NDIS miniport checked driver hits break point at 
        bxnd60a!destroy_q_group+0x1a6.
        
       Fix:
        The consumer index may stop at the end of a BD page boundary.
        In this case, VBD must advance the consumer index one more time.
        
       Impact:
        Newly introduced in T6.0 drivers.
        
Version 6.0.20 (Aug 19, 2010)
    Bug Fixes:
    ----------
    1. Problem:
        Interrupt moderation may not get initialized properly as user
        disable/enable interrupt moderation repetitively.

       Fix:
        VBD must re-initialize packet trig counters each time interrupt 
        moderation setting is changed. 

       Impact:
        Newly introduced in T6.0 drivers.

Version 6.0.19 (Aug 09, 2010)
    Bug Fixes:
    ----------
    1. Problem: CQ#48120
        CNIC stress test fail on chariot portion of the test after running
        for 48 hrs when toggling TOE. 

       Fix:
        Make sure VBD driver to take account for all the bytes received 
        in the case where the connection is initially offloaded to the chip 
        with large partially filled buffer before uploads the TCP connection 
        to the host. 

       Impact:
        Problem exists on the previous gold drivers. The problem should
        happen rarely. 

Version 6.0.18 (Jul 28, 2010)
    Bug Fixes:
    ----------
    1. Problem: CQ#48884
        Disable the ¡°Receive Side Scaling¡± function cause BSOD issue.

       Fix:
        Make sure VBD driver to clear the current RSS state when NDIS
        miniport unbind.  Otherwise, the stale RSS state can be reused
        when the next time miniport driver bind.  If miniport driver
        has RSS disabled when re-bind, the VBD could use the stale RSS
        state and resulted in BSOD. 

       Impact:
        Newly introduced in T6.0 release. 

    2. Problem:
        Driver hits breakpoint in routine post_dummy_buffers when running
        CNIC stress test. 

       Fix:
        VBD driver should reject the TCP connection offload request that has 
        buffered data the exceed amount of BDs that allocated for this 
        TCP connection.

       Impact:
        Problem exists on previous gold drivers. However this situation should
        rarely happen. 

    3. Problem: CQ#47944
        BSOD when running this CNIC Stress finished and then to shutdown system.

       Fix:
        When setting the driver to jumbo frame mode with MTU size of 9000, driver 
        should also increase the catchup mbuf size from default 8k to 9k so the
        catchup path can be functioned properly during TOE mode. 

       Impact:
        Newly introduced in T6.0 release. 

    Enhancement:
    ------------
    1. Add delreg for l2_rx_desc_cnt0 to l2_rx_desc_cnt11.
    
    5706/08 firmware 6.0.11
    -----------------------
    ***** iSCSI offload *****

    Bug Fixes:  
    ----------
    1. Problem: CQ#47606
         Delay ACKs were used instead of immediate ACKs for the acknowledgment
         to the remote's fast retransmit which eventually caused the target
         to drop the connection

       Fix: (RXP)
         Added tracking for the OOO packets so immediate ACKs will be used
         instead of delay ACKs

    Enhancement:
    -----------
    1. Added dynamic TCP advertise windowing support    
    2. Ported over the ACK flood fix from the VMware 5.0.0.j branch P4 CL95688


Version 6.0.17 (Jul 2, 2010)
    Bug Fixes:
    ----------
    1. Problem: CQ48472
        OEM failing system certification with link losses and/or low 
        throughput when the system has more than 64 processors.

       Fix:
        Fixed a problem where VBD might not service the interrupt event
        in the DPC when number of the processors in the system is more
        than 64. 

       Impact:
        This problem exists in previous gold driver and can only happen
        when there are more than 64 processors in the system.
    
    2. Problem:
        Driver BSOD on OEM 96 processors system.

       Fix:
        Make sure VBD query the OS about the correct number of CPU in the
        system.

       Impact:
        Problem exists in previous gold drivers and problem can only happen
        with system that has more than 64 processors.

    3. Problem:
        Driver not receiving enough MSIX messages on 96 processors system.

       Fix:
        Make sure driver limits itself within the processor group 0 when 
        requesting MSIX messages from OS. 

       Impact:
        Problem exists in previous gold drivers but MSIX is not enabled by
        default. So the exposure of this problem should be very low. 

    Enhancement:
    ------------
    1. Allow MSIX mode even when number of MISX messages allowed by
       the OS is less than number RSS queues supported in 5709 chip
       and the number of messages is greater than 1.

    2. Support dynamic VMQ CPU affinity per MSFT request. 

Version 6.0.16 (Jun 10, 2010)
    Bug Fixes:
    ----------
    1. Problem:
        Customer reported driver may crash when running some internal test tools 
        on post win7 RTM builds.

       Fix:
        The post Win7 build seems to have different behavior that is inconsistent 
        with the implementations in the driver. Changed the driver to accommodate
        the behavior. Please refer to CL#113698.
        
       Impact:
        This problem exists in previous gold driver but the impact is minimal.
        The problem is only seen when running the said tools on the post RTM
        OS build.
   
    2. Problem: CQ#47953
        Driver unload sometimes hang when interrupt moderation is disabled in 5709. 

       Fix:
        The per processor HC setting is not correctly setup when interrupt moderation
        is disabled.  Therefore, per processor status blocks might not get updated
        and resulted in pending completions that could prevent driver from unload.

       Impact:
        Problems exists in all previous gold drivers. This problem can only happen
        intermittently when interrupt moderation is disabled and user tries to 
        unload driver. This should be a rare event. 

    3. Problem: CQ#48038
        BSOD when running BACScli test with v2.0.30.

       Fix:
        Under a rare race condition, some packets might not get completed back to
        the host upon queue group destroy. Driver should detect this scenario and 
        complete the packets back to the miniport properly.

       Impact:
        Newly introduced in T6.0 drivers.

    5. Problem: CQ#47493
        unload of 5709 NDIS driver while OIS driver is bind to VBD cause second 
        device on shared interrupt to stop getting interrupts when running w2k3 OS.

       Fix:
        VBD must acknowledge all the per-processor status blocks when handling 
        ISR and RSS is not enabled in OS to avoid causing interrupt storm. 

       Impact:
        Newly introduced in T6.0 drivers.

    6. Problem: CQ#47952
        When RSS enabled, interrupt moderation using static algorithm, not dynamic.

       Fix:
        Enable dynamic interrupt moderation and disabled batch mode completion
        for RSS to improve latency. 
      
      Impact:
        Problem exists in previous gold drivers. 

    5706/08 firmware 6.0.10
    -----------------------
    ***** L2/TOE *****
    
    Bug Fixes:  
    ----------
    1. Problem: CQ47838 Management connection stops after
         drivers load in Windows.
       Fix: (RXP RV2P)
	     Mgmt packet length was not forwarded to MCP properly when
	     the packet is dropped due to insufficient host buffer. Fix
         FW accordingly

       Impact:
         Newly introduced in T6.0.
         
    Bug Fixes:  
    ----------
    2. Problem: CQ47812 RV2P stalls when running sockdie stress client on VM.
       Fix: (RV2P)
	     Incorrect assert upon RV2P MQ update.
       Impact:
         Newly introduced in T6.0.

    5709 firmware 6.0.10
    --------------------  
    ***** iSCSI offload *****
    Bug Fixes:
    ----------
    1. Problem:
         Issue with iLab test 3_4 where package size < mss will generate
         unnecessary ACK responses
       Fix: (TXP)
         Fix ported over from the 5.0.0.j15 branch
         Removed the previously added ACK response when the advertise 
         window is < mss (allow persist probe to do the job)
       Impact:
         Newly introduced in T6.0.

    5709 firmware 6.0.9
    --------------------  
    ***** L2 *****
    
    Bug Fixes:  
    ----------
    1. Problem: CQ47838 Management connection stop after
         drivers load in Windows.
       Fix: (RXP RV2P)
	     Mgmt packet length was not forwarded to MCP properly when
	     the packet is dropped due to insufficient host buffer. Fix
         FW accordingly
       Impact:
         Newly introduced in T6.0.

    Bug Fixes:  
    ----------
    2. Problem: CQ47812 RV2P stalls when running sockdie stress client on VM.
       Fix: (RV2P)
	     Incorrect assert upon RV2P MQ update.
       Impact:
         Newly introduced in T6.0.

    Enhancement:
    ------------
    1. Enabled HW RSS support for Linux driver. 

Version 6.0.15 (May 20, 2010)
=============================
    Bug Fixes:
    ----------

    1. Problem: CQ#47540
        break at bxvbda!ioc_get_q_info+0x7b.

       Fix:
        VBD should not honor q_info query when driver is not in RUNNING
        state or status block pointer is not being setup set. 
    
       Impact:
        Newly introduced in T6.0 drivers.

    2. Problem: CQ#47586
        problems with setting different MTU sizes.

       Fix:
        VBD should setup max_pkt_len + 4 byte crc in the L2 rx ring ctx.

       Impact:
        Newly introduced in T6.0 drivers.

    3. Problem:
        Driver is occasionally reading "DEADBEEF" from the stats memory when 
        running interrupt coalescing algorithm due to GRC access colliding
        with on-chip statistic collection.

       Fix:
        Instead of reading stats memory from the chip, driver will read stats
        from the firmware counters instead. 

       Impact:
        Problem exists on previous gold drivers.

    4. Problem:
        When doing TSS, the send packets may not be send out on the correct 
        TSS queues. 

       Fix:
        Driver should hash the send packet to the correct TSS queue according
        to the hash value and RSS indirection table.

       Impact:
        Problem exists on previous gold drivers. 

    5. Problem: CQ#45788
        VBD:NX2: bxnd60a!set_rss_ioctl+0x19; Assert is seen on VBD while passing 
        traffic to 1 port and disable/enable 2nd port
        
       Fix:
        Added asynchronous set_rss_ioctl completion to VBD to avoid an corner 
        case where VBD could run out kwqes to honor set_rss_ioctl call 
        synchronously under stressfully condition. 

       Impact:
        Problem exists on previous gold drivers.

    6. Problem: CQ#47715
        BSOD is seen when deleting team with driver verifier enabled on VBD.

       Cause:
        A lock is being held too long causing the driver verifier to think
        a dead lock has occurred.  This happens when a team is being deleted
        causing the miniport to get re-initialized which could take awhile
        to complete.  During this period a lock is being held.

       Fix:
        Shortened the period a lock is held.
        
       Impact:
        This problem exists in previous gold driver but the impact is minimal.
        The problem is only seen when driver verifier is enabled.
        
    5706/08 firmware 6.0.9
    ----------------------  
    Enhancement:
    -----------
    1. Added firmware counters to track total bytes tx/rx. 

    5709 firmware 6.0.8
    ----------------------  
    Enhancement:
    -----------
    1. Added firmware counters to track total bytes tx/rx. 

Version 6.0.14 (May 03, 2010)
=============================
    Enhancement:
    -----------

    1. Request:
        Support new driver interface version #6.



Version 6.0.13 (Apr 23, 2010)
=============================
    Bug Fixes:
    ----------

    1. Problem: CQ#47283
        Hyper-V: bxvbda!drv_bugchk_reason_callback+11f assert when unloading 
        NDIS driver during L4 network stress on GOS.

       Fix:
        The crash dump buffer should be allocated before the MARKER1 so it 
        won't get freed up during driver halt state. Otherwise, the crash 
        dump buffer memory won't get re-allocated again when driver 
        transition back to running state. 

       Impact:
        Problem exists in the previous gold driver releases. 

    2. Problem:
        In a very rare case, Driver break at bxvbda!WdfInterruptReleaseLock+1b 
        when running sleep Stress With IO of the device test category.

       Fix:
        Fixed a rare case where driver is releasing a interrupt object spin 
        lock that it never held before. 

       Impact:
        Problem exists in the previous gold driver releases, but this problem
        should happen rarely. 
    
    3. Problem: CQ#47300
        BSOD (bxvbda!um_bdrv_alloc_ooo_resc+0x2b7) occurs after upgrading the vbd
        driver to v6.0.12 when driver verifier is enabled.

       Fix:
        Driver should acquire the RX lock in DPC level instead of passive level. 

       Impact:
        Newly introduced in T6.0 release. 
        
    5706/08 firmware 6.0.8
    ----------------------    
    ***** iSCSI offload *****
    1. Problem: CQ#47287
        5708 B2: Fails to boot to W2K8 x64 SP2 in an iSCSI boot Environement 
        (HBA mode disabled).

       Fix: (RXP)
        Optimize code size so iSCSi offload have enough stack space to run and
        avoid crash. 

       Impact:
        Newly introduced in T6.0 release.

Version 6.0.12 (Apr 19, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ#47111
        System blue-screens running "Dual Port with Individual Driver 
        load/unload test" with driver verifier enable.
    
       Fix:
        VBD should gracefully exit ISR if there are no packets to process. 

       Impact:
        Newly introduced in T6.0 driver. 

    Enhancement:
    ------------
    1. Request:
        Enable TCP out-of-order support for iSCSi offload by default. 

    5709 firmware 6.0.7
    ----------------------    
    ***** L2 *****
    
    Bug Fixes:  
    ----------
    1. Problem: CQ46940 ftq discards were observed under L2 min pkt test 
        running under the newer Linux 2.6.32 kernel
        Modified the hc algorithm to include an 1us guard time before checking
        for mbuf emptiness

    ***** iSCSI offload *****

    Enhancement:
    ------------
    1. Request:
        Support TCP out-of-order reassembly when running iSCSi offload. 

    2. Modified the TCP rx window from 0xFFFF to 0xFFFC to improve performance
        when connecting to targets which packs iSCSI PDUs to max

    5706/08 firmware 6.0.7
    ----------------------    
    ***** iSCSI offload *****

    Enhancement:
    -----------
    1. Modified the TCP rx window from 0xFFFF to 0xFFFC to improve performance
       when connecting to targets which packs iSCSI PDUs to max

Version 6.0.11 (Mar 29, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ46850
        break at  X64_0x0_bxvbda!q_grp_process_destroy_req+b58 while 
        updating NDIS driver.

       Fix:
        VBD should clean all queue related variables prior calling
        destroy done up call to NDIS miniport driver. 

       Impact:
        Newly introduced in T6.0 driver. 

    Enhancement:
    ------------
    1. Request:
        Support *FlowControl registry in VBD. 

    5709 firmware 6.0.6
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem: CQ46036
        Break @ [bxnd60x!create_q_group+0x2f8] Running 
        (sequential) Devcon_load_unload + NRIOv2 IPv4/IPv6.

       Fix: (RXP)
        Stack space is very low in some old legacy chip. Optimized code size
        to fix the problem.

    5706/8 firmware 6.0.6
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem: CQ46036
        Break @ [bxnd60x!create_q_group+0x2f8] Running 
        (sequential) Devcon_load_unload + NRIOv2 IPv4/IPv6.

       Fix: (RXP)
        Stack space is very low in some old legacy chip. Optimized code size
        to fix the problem.


Version 6.0.10 (Mar 22, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ46378, CQ46612
        T6.0:BCM5708 BDOS on NDISTest 6.0 "1c_faulthanding" under w2k8 x64 
        sp2.

       Fix:
        VBD should watch out for the queues that are not mapped to the
        interrupt mapping table and completed all the aborted packets
        to the NDIS miniport during l2nd unbind.

       Impact:
        Newly introduced in T6.0 driver. 

Version 6.0.9 (Mar 15, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ46565
        Changing interrupt moderation NDIS registry key has no effect on 
        VBD.  VBD most of time behaves as interrupt moderation is turned 
        off. 

       Fix:
        VBD should handle the Interrupt moderation change request properly
        by updating the corresponding its internal interrupt moderation 
        parameters correctly.

       Impact:
        Newly introduced in VBD 6.0.8. 

    2. Problem:
        VBD didn't advertised correct number of RSS queues to NDIS during
        L2ND bind.

       Fix:
        Instead of always advertised maximum number of RSS queues, VBD should
        only advertised the actual number of RSS queues that it can support. 

       Impact:
        Newly introduced in T6.0. 

Version 6.0.8 (Mar 07, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ46291
        VMQ: break at bxvbda!q_grp_process_destroy_req when running 
        load/unload on vbd while running sockdie stress on 8 virtual 
        machines.

       Fix:
        VBD shouldn't reset the STOP indication upon completing the
        queue group destroy since upper driver can post buffer during 
        this period from a different thread. The STOP indication should 
        get reset upon next queue group creation.

       Impact:
        Newly Introduced in T6.0 driver. 
        
    Enhancement:
    ------------
    1. Request:
        Move Interrupt Moderation related registry key controls to NDIS 
        miniport.
    
Version 6.0.7 (Feb 26, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ46214
        5709:VBD:W2K3:Deadlock is observed in system while running heavy 
        traffic and running load/unload with team present.

       Fix:
        VBD should avoid holding lock when indicate rx in the tx_switcher 
        since BASP might return packet in the same thread.

       Impact:
        Newly introduced in T6.0 dirver. 

    2. Problem: CQ46218
        5709: Break at "bxvbda!tx_pkt_switcher+2a2" occurs when running Common
        Scenario Stress Test W/ IO (iSCSI Certs Testing).

       Fix:
        VBD should take care of case where there could be no buffer posted from 
        NDIS miniport driver yet while iSCSi miniport driver wants to forward 
        packets to NDIS.

       Impact:
        Newly introduced in T6.0 driver. 

    5709 firmware 6.0.5
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem: CQ46090
        VMQ: RV2P stalled when running load/unload on vbd while running sockdie
        stress on 8 virtual machines.

       Fix: (RXP)
        After a VMQ filter is cleared, there could some in-filght packets arrived
        with the cleared filter idx. However, RXP won't be able to make correct
        decision on how to place the packet since the corresponding filter ctx is
        cleared.  In this case, RXP should just route the packet to default queue. 

       Impact:
        This was introduced in T6.0 Windows driver only.
    
    ***** iSCSI offload *****
    Bug Fixes:
    ----------
    1. Problem:  CQ 45943
         5709: Header Digest set to CRC32C fails
       Fix: (CP)
         The problem was caused by the driver for-going to utilize the offload
         path to do the iSCSI login/logout exchange.  This prevented an
         internal state machine from progressing.

       Impact:
         This was introduced in T6.0 Windows driver only

    5706/8 firmware 6.0.5
    ----------------------
    ***** iSCSI offload *****
    Bug Fixes:
    ----------
    1. Problem:  CQ 45943
         5709: Header Digest set to CRC32C fails
       Fix: (CP)
         The problem was caused by the driver for-going to utilize the offload
         path to do the iSCSI login/logout exchange.  This prevented an
         internal state machine from progressing.

       Impact:
         This was introduced in T6.0 Windows driver only

Version 6.0.6 (Feb 17, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ45966
        VBD:NX2:Max packet length is not propagated to the chip for iSCSI 
        L2 queue.

       Fix:
        VBD should set the max packet length in the iSCSi L2 queue ctx so
        firmware can drop the packets that are exceeding the max packet
        length. 
     
       Impact:
        None. Newly introduced in T6.0 driver.

    2. Problem: CQ45976
        VMQ: system breaks at bxvbda!l2_create_q_group+0x8df when launching 
        virtual machines after enabling jumbo frames.

       Fix:
        When disable/enable NDIS miniport driver instance, the link list that
        keep track of free queue group list is not getting initialize properly.

       Impact:
        None. Newly introduced in T6.0 driver. 
    
Version 6.0.5 (Feb 11, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem: CQ45776/CQ45391
        X64_0x0_bxnd60a!destroy_q_group+1a6 disabling NDIS via device manager.

       Fix:
        The destroy queue group thread and the posting RX buffers thread are
        not synchronized properly and causes some RX packets pending in VBD
        during default queue group destroy. 

       Impact:
        None. Newly introduced in T6.0 driver. 

    2. Problem:
        5708/06: when indicate tx completion, the ref_cnt of a queue group 
        is decremented incorrectly since VBD didn't take account of the TSS 
        queue may be sharing the same queue as iSCSi/RDMA L2 queues.

       Fix:
        Make VBD aware of the queue sharing when running 5708/06 chips. 

       Impact:
        None. Newly introduced in T6.0 driver. 

    5709 firmware 6.0.4
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem:
        In a rare case, host can offload a TCP connection that is in the
        middle of retransimssion. Firmware sometimes doesn't detect the
        retx state properly.

       Fix: (CP)
        Make the retx detection scheme more robust when handling TCP
        connection offload.

       Impact:
        Newly introduced in T6.0 driver.

    5706/8 firmware 6.0.4
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem:
        In a rare case, host can offload a TCP connection that is in the
        middle of retransimssion. Firmware sometimes doesn't detect the
        retx state properly.

       Fix: (CP)
        Make the retx detection scheme more robust when handling TCP
        connection offload.

       Impact:
        Newly introduced in T6.0 driver.

Version 6.0.4 (Feb 04, 2010)
=============================
    Bug Fixes:
    ----------

    1. Problem: CQ45654
        NDIS:iSCSI:5709: bxnd60a!l2nd_indicate_rx+13c; BSOD is seen when 
        installing bxois.sys driver. The problem is due to the VBD tx packet 
        switcher algorithm is forwarding the packets to the wrong miniport.

       Fix:
        Fix a bug that the tx packet switcher algorithm is looking at the 
        wrong do_type and make sure it put packet back to pending queue after
        it is done indicating with LM_STATUS_RESOURCE. 

       Impact: 
        None. Newly introduced in T6.0 driver. 

    2. Problem: CQ45714
        5708/5706: bxvbda!indicate_tx_done+303; Assert is seen on vbd while 
        passing sockdie traffic.

       Fix:
        Driver should be aware that the some tss queues are shared between 
        iSCSi/RDMA L2 queues for 5708/06 chips.  

       Impact:
        None. Newly introduced in T6.0 driver.

    5709 firmware 6.0.3
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes: 
    ----------
    1. Problem: CQ00045576
        In rare occasion, obsolete BDs might get transmitted during 
        retransmission

       Fix: (COM)
        There is a race condition between CP and COM. There is a
        small window that tx data is completed prematurely.

       Impact: None. Merged from T5.2 branch. 

    Bug Fixes:
    ----------
    2. Problem:  
        Server 2008 R2 - Similar symptoms of Windows 7 430977 (Windows SE 
        251309 covers the Longhorn bug for this) where Closesocket never 
        returns.

       Fix: (com)
        After firmware completed an ABORT request back to the host, it must
        issue an upload request immediately after. Otherwise, the connection
        could stay offloaded forever if there are outstanding send requests 
        waiting to be completed back to the host. 

       Impact: None. Merged from T5.2 branch. 

    5706/08 firmware 6.0.3
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes: 
    ----------
    1. Problem: CQ00045576
        In rare occasion, obsolete BDs might get transmitted during 
        retransmission

       Fix: (COM)
        There is a race condition between CP and COM. There is a
        small window that tx data is completed prematurely.

       Impact: None. Merged from T5.2 branch. 

    Bug Fixes:
    ----------
    2. Problem:  
        Server 2008 R2 - Similar symptoms of Windows 7 430977 (Windows SE 
        251309 covers the Longhorn bug for this) where Closesocket never 
        returns.

       Fix: (com)
        After firmware completed an ABORT request back to the host, it must
        issue an upload request immediately after. Otherwise, the connection
        could stay offloaded forever if there are outstanding send requests 
        waiting to be completed back to the host. 

       Impact: None. Merged from T5.2 branch. 
    
Version 6.0.3 (Jan 26, 2010)
=============================
    Bug Fixes:
    ----------

    1. Problem: CQ45477
        Assert is seen on the VBD while trying to run Bacs diag on 5708 
        and/or 5709 in Win2k8-R2.
        
       Fix:
        The assertion is newly introduced in T6.0 VBD driver. In this case,
        the driver should gracefully return instead of assert when NDIS is
        trying to post rx buffer while diag mode is enabled in VBD. 
    
    Enhancement:
    ------------
    1. Request:
        Support q_info cmd thru B06_IOC_GET_Q_INFO for vdiag utility.
        
    5709 firmware 6.0.2
    ----------------------
    ***** TCP offload/L2 *****

    Bug Fixes:
    ----------
    1. Problem:  
        Cont00045480:   Failing TCP_ZeroWindow Sparta test  
        Cont00045526:   Got recv failure while running 72-hour stress test with 
                        TOE chimney toggled

       Fix: (RV2P)
        In RV2P code, we are supposed to subtract 1 for host_bdidx (16 lsb) in 
        context for end of BD chain for RBDC compatibility
        e.g. 0x12345600 -> 0x123455ff 
        However, we have to treat host_bdidx == 0 differently.
        0x12340000 should become 0x1234ffff instead of 0x1233ffff
        Otherwise, the 16 msb ctx field be will altered unintentionally.
    
    5706/8 firmware 6.0.2
    ----------------------
    ***** TCP offload/L2 *****

    Bug Fixes:
    ----------
    1. Problem:  
        Cont00045480:   Failing TCP_ZeroWindow Sparta test  
        Cont00045526:   Got recv failure while running MeatGrinder 72-hour 
            stress test with TOE chimney toggled

       Fix: (RV2P)
        In RV2P code, we are supposed to subtract 1 for host_bdidx (16 lsb) in 
        context for end of BD chain for RBDC compatibility
        e.g. 0x12345600 -> 0x123455ff 
        However, we have to treat host_bdidx == 0 differently.
        0x12340000 should become 0x1234ffff instead of 0x1233ffff
        Otherwise, the 16 msb ctx field be will altered unintentionally.
    

Version 6.0.2 (Jan 20, 2010)
=============================
    Enhancement:
    ------------
    1. Request:
        Preliminary Irq/RSS/VMQ statistics support for vdiag utility. 
    2. Request:
        CQ#45324 - Change copyright year to 2010.
    3. Request:
        CQ#44707 - Add new advanced driver property to "pause on exhausted host 
        ring" for 5708/09.
    
    5709 firmware 6.0.1
    ----------------------
    ***** TCP offload/L2 *****

    Bug Fixes:
    ----------
    1. Problem:
        The l2 coalesce now algorithm is setting the wrong status block bit
        mask. 

       Fix: (COM)
        Use correct bit mask.

    2. Problem: CQ00045161 
         MG-tool abort during TCP Chimney offload toggled

       Fix: (COM)
         Problem is caused by deferred KCQE buffer overflow. We fix
         it by completing reload earlier. 

    Enhancement:
    ------------
    1. Request: 
         VMQ support: disallow jumbo frame placement when BD doesn't fit.

    5706/8 firmware 6.0.1
    ----------------------
    ***** TCP offload/L2 *****

    Bug Fixes:
    ----------
    1. Problem: CQ00045161 
         MG-tool abort during TCP Chimney offload toggled

       Fix: (COM)
         Problem is caused by deferred KCQE buffer overflow. We fix
         it by completing reload earlier. 

    ***** L2 ******
    Enhancement:
    ------------
    1. Request: 
         VMQ support: disallow jumbo frame placement when BD doesn't fit.

Version 6.0.1 (Jan 07, 2010)
=============================
    Bug Fixes:
    ----------
    1. Problem:
        Under stressful condition, there could be some rx packets still
        pending in the vmq even the destroy vmq group command complete.

       Fix:
        Fixed a race condition when driver can still post buffer to the chip
        while the chip think the queue is already destroyed.

    2. Problem:
        There is a bd_left == 0 assertion in checked built mode. This assertion
        is invalid since this situation can happen.

       Fix:
        Removed this invalid assertion. 

    5706/8 firmware 6.0.0
    ----------------------
    
    Enhancement:
    ------------
    1. Request: 
         VMQ support.

    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ43085 
         5709 intermittently fails T3 of TCP_Reassembly 

        Fix: (COM, RV2P)
         In this OOO FIN sparta test, a context variable is accessed by both
         RV2P and COM. Timing issue will occasionally cause one of the test
         variations to fail.  To synchronize access to this context location,
         the value of this variable is passed down in the FTQ for COM to access.

    2. Problem: CQ43015 
        Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload 

        Fix: (RV2P)
         In rare occasions, if an OOO packet is placed at the partially filled
         buffer right and FW do a 0-byte completion upon push timer expiration,
         the OOO packet will not be completed correctly.  The fix is to bypass
         0-byte completion whenever partially filled rx buffer is placed. 
    
    ***** L2 ******
    Bug Fixes:
    ----------
    1. Problem:
         Firmware is taking forever to flush a rx queue. During queue flushing,
         the math that calculate the number of BD outstanding appears to
         be wrong.

       Fix:(RXP)
         Make sure to use signed 16bit subtraction when doing the BD calculation.
    
    ***** iSCSI offload *****
    
    Bug Fixes:  
    ----------
    1. Problem: PR500146 from VMware
         When RQ is full, the silent drop procedure erroneously overwrites
         the iSCSI header remainder count which is used in split header
         situations.

       Fix: (RXP)
         The iSCSI header remainder count will be preserved in the described
         situation

    2. Problem: PR500146 from VMware Cont'd
         No packet will get transmitted when the L5 payload is > mss but the
         ewin is < mss.  This will lead to a remote retransmission timeout
         due to a lack of ACK response.

       Fix: (RXP, TXP)
         A pure ACK with the updated ACK seq# will get generated in the 
         described situation

    5709 firmware 6.0.0
    ----------------------
    
    Enhancement:
    ------------
    1. Request: 
         VMQ support.


    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ43085 
         5709 intermittently fails T3 of TCP_Reassembly 

        Fix: (COM, RV2P)
         In this OOO FIN sparta test, a context variable is accessed by both
         RV2P and COM. Timing issue will occasionally cause one of the test
         variations to fail.  To synchronize access to this context location,
         the value of this variable is passed down in the FTQ for COM to access.

    2. Problem: CQ43015 
        Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload 

        Fix: (RV2P)
         In rare occasions, if an OOO packet is placed at the partially filled
         buffer right and FW do a 0-byte completion upon push timer expiration,
         the OOO packet will not be completed correctly.  The fix is to bypass
         0-byte completion whenever partially filled rx buffer is placed.

    ***** L2 ******
    Bug Fixes:
    ----------
    1. Problem:
         Firmware is taking forever to flush a rx queue. During queue flushing,
         the math that calculate the number of BD outstanding appears to
         be wrong.

       Fix:(RXP)
         Make sure to use signed 16bit subtraction when doing the BD calculation.
    
    ***** iSCSI offload *****
    
    Bug Fixes:  
    ----------
    1. Problem: PR500146 from VMware
         When RQ is full, the silent drop procedure erroneously overwrites
         the iSCSI header remainder count which is used in split header
         situations.

       Fix: (RXP)
         The iSCSI header remainder count will be preserved in the described
         situation

    2. Problem: PR500146 from VMware Cont'd
         No packet will get transmitted when the L5 payload is > mss but the
         ewin is < mss.  This will lead to a remote retransmission timeout
         due to a lack of ACK response.

       Fix: (RXP, TXP)
         A pure ACK with the updated ACK SEQ NUM will get generated in the 
         described situation
    
Version 6.0.0 (Jan 04, 2010)
=============================
    Enhancements:
    -------------
    1. Request: Added support for Hyper-V VMQ.

    2. Request: Integrated fixes from t5.0 and t5.2.

Version 5.2.14 (Dec 15, 2009)
=============================

    Bug Fixes:
    ----------

    1. Problem: cq#44926
          INF file failed the WLK 1.5 inf checker.

       Cause:
          The "params_flow_control" was taken out recently but it is still
          being referenced.

       Fix:
          Remove all references to "params_flow_control".

    2. Problem: CQ#44768
          WLK 1.5 RTM:BCM5708/5709 BSOD on Plug and Play Driver under Win7 x64.

       Cause:
          There are two problems. 
          Upon surprise removal, the VBD may leak MDLs which causes DV to assert.
          For the artificial SR cases, the VBD needs to gracefully disable DMA 
          engines.

       Fix:
          Fixed the 2 problems mentioned above.


    Enhancements:
    -------------

    1. Request: Undo cq#44749 below.

    2. Request: 
         Add driver software key "MSISupport" to filter out MSI resource if the
         key is present and the key value is set to 1. 

    5706/08 firmware 5.2.5
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem:
         RV2P locks up with iSCSI traffic. 
 
       Fix: (RV2P)
         Fix an incorrect assertion in RBDC mode check.

    5709 firmware 5.2.5
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem:
         RV2P locks up with iSCSI traffic. 
 
       Fix: (RV2P)
         Fix an incorrect assertion in RBDC mode check. 
    
    

Version 5.2.13 (Dec 10, 2009)
=============================

    5706/08 firmware 5.2.4
    ----------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem:
         NETQ MAC VLAN matching is taking account of vlan priority tag and
         CFI bit. 
 
       Fix: (RXP)
         The match algorithm should only look at 12-bit VLAN identifier. 
 
    2. Problem: 
         TCP_Urgent t7 failure in WLK 1.5
 
        Fix: (RXP)
         A check for non-zero urgent pointer was put in to pass the same test
         in WLK 1.4 which was later found to be a stack issue.  This is now
         causing failure in WLK 1.5. We just need to undo the change.
 
    3. Problem: 
         TCP_ChimneyOffload t18 and t21 failures in WLK 1.5
 
        Fix: (COM)
         A minor FW design flaw causes send request to be completed with 
         status_aborted instead of status_reset upon receiving RST from the 
         remote peer in some situations.

    5709 firmware 5.2.4
    -------------------
    ***** TCP offload/L2 *****
    Bug Fixes:
    ----------
    1. Problem:
         NETQ MAC VLAN matching is taking account of vlan priority tag and
         CFI bit. 
       Fix: (RXP)
         The match algorithm should only look at 12-bit VLAN identifier. 
    2. Problem: 
         TCP_Urgent t7 failure in WLK 1.5
        Fix: (RXP)
         A check for non-zero urgent pointer was put in to pass the same test
         in WLK 1.4 which was later found to be a stack issue.  This is now
         causing failure in WLK 1.5. We just need to undo the change.
    3. Problem: 
         TCP_ChimneyOffload t18 and t21 failures in WLK 1.5
        Fix: (COM)
         A minor FW design flaw causes send request to be completed with 
         status_aborted instead of status_reset upon receiving RST from the 
         remote peer in some situations.
    4. Problem: (Linux only)
         In Flow control, there is a corner case for context coherency 
         problem when all posted buffers are depleted.
       Fix: (RV2P)
         Modified RV2P to ensure context coherency is maintained.
    

Version 5.2.12 (Dec 04, 2009)
=============================

    Bug Fixes:
    ----------

    1. Problem:
          Driver can queue redundant dpc twice to the same interrupt
          event when running in INTA mode.

       Fix:
          Make sure dpc is only queued once to the same interrupt event.


    2. Problem: cq#44727
          The driver breaks in indicate_rx_comp while processing partial
          receive request.

       Cause:
          A receive request contains partial data that have already processed
          by the stack prior to offloading the connection.  In such case, the
          chip could complete the receive request without placing additional
          data into the request.  Such completion happens when the push timer
          expires.  Also in this case the request is so big that only part of
          the request is posted in the bd chain.   When this partial request
          completes, the driver needs to advance the bseq number to the end of
          the partial request.  This assert happens because bseq advancement
          didn't occur.

    3. Problem: cq#44747, cq#44476
          Under w2k8r2, the inbox will cause BSOD since it can't handle MSIX 
          after un-installing t5.2 driver which has MSIX enabled by default. 

       Fix:
          Disable MSIX as default for the T5.2 driver to workaround this 
          problem. 

       Impact:
             T5.2 only.  No previous drivers have this problem, since MSI-x is
             not enabled (by default) in those earlier drivers
       

    4. Problem: cq44774
          Win2k8 R2: Xinan is unable to ping when setting the Number of RSS 
          Queues to 4.

       Fix:
          The msg id to qidx lookup table should be initialized according to
          number of rss queues available instead of MAX number of rss queues.


    Enhancements:
    -------------

    1. Request: cq#44749
          Add support "*FlowControl" registry keyword for configuring
          flow control setting via BACS.



Version 5.2.11 (Nov 18, 2009)
=============================
    Bug Fixes:
    ----------
    1. Problem: iSCSI boot in Win2K3 is slow or not functional with new 
       iSCSI ROM that runs in polling mode (with PCI interrupt disabled).

       Fix:
          Unmask PCI interrupt when it runs in legacy PCI interrupt mode.

    Enhancements:
    -------------
    1. Request: 
           Add 32k grc register dump to vbd crash dump mechanism.



Version 5.2.10 (Nov 17, 2009)
=============================

    Bug Fixes:
    ----------

    1. Problem: cq#43420, #43504
          DVD install to an iSCSI target causes the system to crash.

       Cause:
          This problem occurs because MSI-X is enabled on BCM5709.  Two
          GRC windows are used to point to the MSI-X vector and PBA.  These
          two windows are initialized once by the boot code during power-on-
          reset.  When pre-boot agents (PXE or iSCSI boot) are running, it
          will reset the chip.  As a result these two windows are no longer
          pointing to the MSI-X table which is needed by the OS for
          configuration.  Since the OS is not able to configure the MSI-X
          table, it eventually disables the device by clearing the PCI
          bus master and memory enable bits in the command register causing
          the bus driver to fail initialization.

       Fix:
          Added a workaround to restore the GRC window mappings in AddDevice
          routine.


    2. Problem: cq#44517, #44543
          The fix in v5.2.8 to complete pending transmit and receive
          requests with status RESET after receiving a TCP RST segment
          is breaking tcpip.sys in W2K3.

       Fix:
          Reverted back to the old status code ABORTED for W2K3.
          


Version 5.2.9 (Nov 10, 2009)
============================

   Bug fix:
   -------------
    1. Problem: CQ#44424-Break at bxnd52a!l4nd_forward_catchup_done+0x323 
         using checked build

       Fix:
         Removed a bogus assert.



Version 5.2.8 (Nov 09, 2009)
----------------------------

    Bug Fixes:
    ----------

    1. Problem: cq#43710
          iSCSI boot adapter in SLB team is not active when Lievelink probe
          ID is tagged.

       Cause:
          When iSCSI boot via the HBA path is enabled, the NDIS miniport
          can be part of an SLB team.  To allow for this, the NDIS miniport
          needs to know if it is in the boot path or not.

       Fix:
          Modified the L2_IOC_GET_ISCSIBOOT_PAGING_INFO to only return
          MBA_ISCSIBOOT_ENABLE if the device is in the paging path.

    2. Problem: cq#43918
          Unable to change device properties after running basccli
          continuously.

       Cause:
          The driver reads an area in TPAT scratch pad to determine if the
          device is being used as an iSCSI boot device.  The way it makes
          this determination is by checking for a non-zero value instead of
          checking for a valid signature.

    3. Problem:
          Failing a pre-release Sparta test.

       Cause:
          Upon receiving a TCP RST segment, the driver will complete all
          pending transmit and receive requests with status ABORT.  The new
          Sparta test requires pending requests to complete with status RESET.

    4. Problem:
          W2k8 Checked Kernel assert during driver unload. 
       
       Cause:
          VBD could cancel an uninitialized timer during driver unload when 
          MSIX is enabled. (Regression bug)

Version 5.2.7 (Sep 11, 2009)
----------------------------

    Bug Fixes:
    ----------

    1. Problem: cq#43420
          OIS fails to load during DVD install to an iSCSI target.

       Cause:
          This problem is related to the fix for cq#42967 which prevent
          iSCSI device enumeration on client OS.  During DVD install
          the kernel is detected as a client OS.

       Fix:
          The bus driver will force iSCSI enumeration if the device
          was used for iSCSI boot.

    2. Problem: CQ#43597
          "Number of RSS Queues" driver property is missing in win2k3.
       Fix: 
          Added nt52 section to inf file.

    3. Problem: cq#43710
          iSCSI boot adapter in SLB team is not active when Lievelink probe
          ID is tagged.

       Cause:
          When iSCSI boot via the HBA path is enabled, the NDIS miniport
          can be part of an SLB team.  To allow for this, the NDIS miniport
          needs to know if it is in the boot path or not.

       Fix:
          Modified the L2_IOC_GET_ISCSIBOOT_PAGING_INFO to only return
          MBA_ISCSIBOOT_ENABLE if the device is in the paging path.


    Enhancements:
    -------------

    1. Request: CQ#43581
           Update the inf product version string to 14.2.0 for T5.2.


Version 5.2.6 (Sept 2, 2009)
----------------------------
    Bug Fixes:
    ----------

    1. Problem: cq#43438
        w2k3sp2x64: Running Chariot Traffic against 5709 Results in CHR0200 
        and CHR0245 Error Messages.

       Fix:
        Restrict the tx queue idx to within the range of number of tss queues 
        allowed.  

Version 5.2.5 (Aug 31, 2009)
----------------------------
    Bug Fixes:
    ----------

    1. Problem:
          The inf file is using kmdf v1.9 which needs to revert back
          to kmdf v1.7 to resolve cq#43166.

Version 5.2.4 (Aug 28, 2009)
----------------------------
    Bug Fixes:
    ----------

    1. Problem: cq#43313
        5709:VBD:bxvbda!xinan_service_intr_rss+5a; Assert is observed during 
        BacsCLI automation, setting advanced driver properties in CLI mode.

       Causes:
        The driver is not setting the RSS qidx mapping table correctly.

       Fixes:
        Re-adjust the RSS qidx mapping table algorithm. 


    2. Problem: cq#43166
          DVD install over iSCSI to a target is broken.

       Cause:
          This is caused by the move to kmdf v1.9.  Since installing
          kmdf v1.9 requires a reboot and with dvd install a reboot
          is not allowed.

       Fix:
          Rolled back to kmdf v1.7.
        

    Enhancement:
    ------------

    1. Request: cq#42568
        Enable MSI-X capability by default on 5709.



Version 5.2.3 (Aug 21, 2009)
----------------------------

    Enhancement:
    ------------

    1. Request: cq#43081
          Additional functionality to `vdiag` (Internal Tool) distinguish LSO 
          and CSO statistics for IPv4 and IPv6.  

    2. Request: cq#42567
          Support for NDIS6 MSI-X RSS cpu affinity according to the RSS 
          indirection table.



Version 5.2.2 (Aug 12, 2009)
----------------------------

    Enhancement:
    ------------

    1. Request: cq#42625
          Remove RSS queue configuration from the advanced properties
          paged in Windows XP.

    2. Request: cq#43079
          Move to WDK 7600 for building the driver and upgrade to
          KMDF v1.9.

    3. Request: cq#43081
          Added functionality to `vdiag` (Internal Tool) for CSO statistics
          and mtu size info.


    5706/08 firmware release 5.2.2
    ==============================

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------
    
    1. Problem: CQ43085 
         5709 intermittently fails T3 of TCP_Reassembly 

        Fix: (COM, RV2P)
         In this OOO FIN sparta test, a context variable is accessed by both
         RV2P and COM. Timing issue will occasionally cause one of the test
         variation to fail.  To synchronize access to this context location.
         The value of this variable is passed down in the FTQ for COM to access.


    5709 firmware release 5.2.2
    ===========================

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------
    
    1. Problem: CQ43085 
         5709 intermittently fails T3 of TCP_Reassembly 

        Fix: (COM, RV2P)
         In this OOO FIN sparta test, a context variable is accessed by both
         RV2P and COM. Timing issue will occasionally cause one of the test
         variations to fail.  To synchronize access to this context location.
         The value of this variable is passed down in the FTQ for COM to access.



Version 5.2.1 (Aug 7, 2009)
---------------------------

    Bug Fixes:  
    ----------

    1. Problem: CQ#41237
          Windows driver is not providing full link status word for NCSI 
          get link command

       Cause:
          Driver did not fully populate the full link status word.

       Fix:
          Populate all supported line status word for NCSI.


    2. Problem: CQ#42967
          The iSCSI device is enumerated on Vista and Windows 7 Client.

       Fix:
          The driver was modified to prevent iSCSI device enumeration
          on client operating systems.

    
    Enhancement:
    ------------

    1. Request: Support 64-processor server system. 



    5706/08 firmware release 5.2.1
    ==============================

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------
    
    1. Problem: CQ43015 
        Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload 

        Fix: (RV2P)
         In rare occasions, if an OOO packet is placed at the partially filled
         buffer right and FW do a 0-byte completion upon push timer expiration,
         the OOO packet will not be completed correctly.  The fix is to bypass
         0-byte completion whenever partially filled rx buffer is placed. 


    5709 firmware release 5.2.1
    ===========================

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------
    
    1. Problem: CQ43015 
        Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload 

        Fix: (RV2P)
         In rare occasions, if an OOO packet is placed at the partially filled
         buffer right and FW do a 0-byte completion upon push timer expiration,
         the OOO packet will not be completed correctly.  The fix is to bypass
         0-byte completion whenever partially filled rx buffer is placed. 
       


Version 5.2.0.0 (Jul 29, 2009)
-----------------------------

    Bug Fixes:  
    ----------

    1. Problem: CQ#42648
          Flow control appears not to be working as expected.

       Cause:
          The fix for cq#40029 and #38307 exposes this problem where
          transmit completion is batched too aggressively.  Normally
          batching threshold is dynamically adjusted as a function of
          traffic rate.  The fix for these issues sets "optimize_ips" to
          "0" which prevents the batching threshold to be adjusted
          dynamically.

       Fix:
          Disable transmit and receive completion batching whenever
          optimize_ips is set to 0.

    2. Problem: CQ#42214
          bxnd60a!complete_done_blks+b4;Assert is observed
       
       Cause:
          Incorrect number of toe connections is reported to the OS
          while toe connection is unchecked from RR in BACS.
       
       Fix:
          Change the driver to report correct number of toe connections.

    5706/08 firmware release 5.2.0 (Jul 27, 2009)
    =============================
    ***** iSCSI offload *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ42827 
        Protocol Reject when connecting to MSA1510i
 
        Fix: (CP)
         In some occasions, L4 FW overwrite a context location shared with iSCSI 
         when the retx delta field in KWQE field is non-zero.  


    5709 firmware release 5.2.0 (Jul 27, 2009)
    =============================
    ***** iSCSI offload *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ42827 
        Protocol Reject when connecting to MSA1510i
 
        Fix: (CP)
         In some occasions, L4 FW overwrite a context location shared with iSCSI 
         when the retx delta field in KWQE field is non-zero.  
    
    Enhancement:
    ------------
    
    1. Request: Starting from T5.2, NDIS 6 won't modified the RSS indirection
       table anymore.  VBD will perform the MOD operation with the rxq_cnt to
       the RSS indirection table instead.
    
Version 5.0.15 (Jun 29, 2009)
-----------------------------

    5706/08 firmware 5.0.10 (Jun 29, 2009)
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    1. Problem: CQ41926
        CNIC Stress can’t be completed under very stressful network condition.

       Fix: (COM, TXP)
        Reload is completed prematurely.  Fixed by postponing
        reload completion until tx side is ready.

    5709 firmware 5.0.10 (Jun 29, 2009)
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    1. Problem: CQ41926
        TOE: Data invalidate error running CNIC Stress.

       Fix: (COM, TXP)
        Reload is completed prematurely.  Fixed by postponing
        reload completion till snd_next == snd_max.


Version 5.0.14 (Jun 22, 2009)
-----------------------------
    Bug fix:
    -------
    1. Problem: CQ#42007 - Setting RX buffer size <= 30 causes adapter to 
                not be able to pass traffic.
       Cause:   The extremely low RX buffer count is not compatible with
                the way the receive path was designed.
       Fix:     Change the RX buffer lower limit to 50.

    2. Problem: CQ#41987 - VBD:5709: bxvbda!um_clnt_unbind+522; Assert is 
                seen passing L4 sockdie traffic to SLB, toggling TOE, disabling
                VBD.
       Cause:   There is a race condition when updating client state and
                its corresponding data structure.
       Fix:     reorder the variable updates

Version 5.0.13 (Jun 10, 2009)
-----------------------------
    Bug fix:
    --------
    1. Problem: CQ#41803 Wakeup frame failed in W2k8 and Win7 on 5709c.
       Cause:   A previous fix for Win7 WOL introduces a bug where
                the driver may not use WOL pattern size consistently.
       Fix:     Changed the driver to use correct WOL pattern size.

    2. Problem: CQ41755 
         5709:TOE:Lost network connectivity to one port after 5 minutes 

       Fix: Take out a Read-modify-write to a context location updated by both
            MQ and VBD.

    5706/08/09 Firmware 5.0.9 (Jun 10, 2009)
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
 
    1. Problem: CQ41924
        5708:TOE:X64_0x0_bxvbda!build_frag_list_from_gen_bufs+30e running CNIC 
        stress.
 
       Fix: (RV2P)
        In supporting Partially Filled Rx Request in WIN7, there is a context
        variable that RV2P P1 and P2 are both reading and writing.  That 
        create a potential race condition that they could overwrite each other.
        It's fixed by eliminating write access from RV2P P2.
    

Version 5.0.12 (Jun 03, 2009)
----------------------------
    1. Request: CQ#41711 - Don't enumerate iscsi pdo when running on windows 7
        client.
       Fix:     As requested.


Version 5.0.11 (Jun 1, 2009)
----------------------------
    Bug fix:
    --------
    1. Problem: CQ41622 
        Windows7x64 7127: SUT Encounters BSOD (0xD1) for Break at 
        bxvbda!copy_gen_bufs+b1, under Bi-Directional SockdieStress Test 
        Scenario
       Problem: CQ41620 - 
        Windows7x64 Build 7127: Running Bi-Directional SockdieStress against
        Xinan Results in Breaks at bxvbda!indicate_rx_comp+70 

       Fix: update complete bseq in case of 0-byte completion due to partial
       filled rx request

    5706/08 firmware 5.0.8 (Jun 1, 2009)
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
 
    1. Problem: CQ41545
        Win7 Hyper-V: connection timed out running sockdie stress client.
 
       Fix: (COM)
        COM should stop processing any timers when an offloaded connection
        is de-activated to avoid potential lockup/assertion in the firmware.
 
    2. Problem: CQ41622 
        Windows7x64 7127: SUT Encounters BSOD (0xD1) for Break at 
        bxvbda!copy_gen_bufs+b1, under Bi-Directional SockdieStress Test 
        Scenario
       Problem: CQ41620 - 
        Windows7x64 Build 7127: Running Bi-Directional SockdieStress against
        Xinan Results in Breaks at bxvbda!indicate_rx_comp+70 
 
       Fix: (RV2P)
        Fix bug when doing 0-byte completion due to partially filled rx request
    
    5709 firmware 5.0.8 (Jun 1, 2009)
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------

    1. Problem: CQ41545
        Win7 Hyper-V: connection timed out running sockdie stress client.

       Fix: (COM)
        COM should stop processing any timers when an offloaded connection
        is de-activated to avoid potential lockup/assertion in the firmware. 

    2. Problem: CQ41622 
        Windows7x64 7127: SUT Encounters BSOD (0xD1) for Break at 
        bxvbda!copy_gen_bufs+b1, under Bi-Directional SockdieStress Test 
        Scenario
       Problem: CQ41620 - 
        Windows7x64 Build 7127: Running Bi-Directional SockdieStress against
        Xinan Results in Breaks at bxvbda!indicate_rx_comp+70 

       Fix: (RV2P)
        Fix bug when doing 0-byte completion due to partially filled rx request

    

Version 5.0.10 (May 27, 2009)
    Bug fix:
    --------
    1. Problem: (CQ37376,38375,41225,41226,41242)
        Win7 WOL doesn't work for both magic and pattern wake up.
       Fix: Implemented new PM interface for NDIS6.20.
    2. Problem: CQ41377	
        Some advanced settings to configure the driver parameters 
        cannot be applied correctly.
       Fix: Change the step size for affected parameter to 1.


Version 5.0.9 (May 21, 2009)
    Bug fix:
    --------
    1. Problem: (CQ40029, CQ38307)
        Erratic throughput seen when RSS Enabled Using OEM 4-port 5709 System
       
       Fix:
        Disabled dynamic interrupt coalescing when RSS is enable since the 
        algorithm is only tuned for single queue (NON_RSS mode). 

    2. Problem: 
                CQ#41136-Assert is seen on the vbd while passing sockdie 
                traffic to SLB team on a OEM platform, with 2 ports permanantly disabled, 
                and 1 port being disabled every 20 secs and 1 port passing traffic.
       Fix: 
                Changed the driver to wait for unbind event to be signaled before 
                unbinding iSCSI HBA client.

    
    5706/08 firmware version 5.0.7 (May 20, 2009)
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    1. Problem: CQ40989
        WIN7 sparta failures observed in latest Win7 7100 & WLK 1.4 Final
       Fix: (COM, RXP)
        The WLK 1.4 Final exposed some minor flaws in TCP offload 
        implementation.

    2. Problem: CQ41132 
        5709 fails TCP_BadHeaderAfterConnection Sparta test from WLK 1.4
       Fix: (RXP)
        If TCP header length or option is invalid, we need to drop the 
        packet.
    
    3. Problem:
        The tx completions are out of sync during upload when there is
        an outstanding disconnect request.

       Fix: (COM)
        Before generating the upload kcqes, COM should do a final
        tx/rx completion first, and then complete the pending disconnect
        request. 

    4. Problem: CQ40987 (regression bug)
        VBD:BASP6: Chariot error 242 is observed while passing 
        chariot highperf IPv6 traffic to SLB team and toggling TOE.

       Fix: (TXP)
        Undo changes where we allow the tx pipeline continue to transmit
        while the connection is in the process of uploading. 
        
    5. Problem: CQ41143 
        bsod at x64_0xd1_bxnd60a!indicate_rx_as_success

       Fix: (COM)
        When FIN_ACKED is honored in OOO packet, we need to make sure TCP 
        state is updated correctly. 
        
    

    5709 firmware version 5.0.7 (May 20, 2009)
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem:
        iSCSi kwq/kcq communication is broken when netq is active. 

       Fix: (COM, RXP)
        In RXP, the CID field of any PG related command should be filled
        in with PG cid instead of 0 such that COM can based on the CID and
        find the correct kcq id.  In COM, it must also check the layer code 
        of the incoming ftq to determine whether it is belong to iSCSi 
        instead of purely relying on the CID range. 

    2. Problem: CQ40989
        WIN7 sparta failures observed in latest Win7 7100 & WLK 1.4 Final
       Fix: (COM, RXP)
        The WLK 1.4 Final exposed some minor flaws in TCP offload 
        implementation.

    3. Problem: CQ41132 
        5709 fails TCP_BadHeaderAfterConnection Sparta test from WLK 1.4
       Fix: (RXP)
        If TCP header length or option is invalid, we need to drop the 
        packet.
    
    4. Problem:
        The tx completions are out of sync during upload when there is
        an outstanding disconnect request.

       Fix: (COM)
        Before generating the upload kcqes, COM should do a final
        tx/rx completion first, and then complete the pending disconnect
        request. 

    5. Problem: CQ40987 (regression bug)
        VBD:BASP6: Chariot error 242 is observed while passing
        chariot highperf IPv6 traffic to SLB team and toggling TOE.

       Fix: (TXP)
        Undo changes where we allow the tx pipeline continue to transmit
        while the connection is in the process of uploading.

    6. Problem: CQ41143 
        bsod at x64_0xd1_bxnd60a!indicate_rx_as_success

       Fix: (COM)
        When FIN_ACKED is honored in OOO packet, we need to make sure TCP 
        state is updated correctly. 
    

Version 5.0.8 (May 13, 2009)

    Enhancement:
    ------------
    1. Request: Driver must be kgroup compatible for win2k8r2/win7
       Change:  Changed the bus driver to be kgroup compatible.


Version 5.0.7 (May 05, 2009)

    Bug fix:
    --------
    1. Problem: Customer reported driver would crash upon stress test in particular
                environment on win7.
       Fix:     Changed the driver to match surprise removal behavior on win7.

    2. Problem: CQ#40942 The new vbd 5.0.6 causes bacs to display the jumbo mtu 
                size as 1486, it should display it as 1500,
       Fix:     Changed the driver to report MTU correctly for PDOs.

    5706/08 firmware 5.0.6
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40996
        5709: connection timed out when running cnic stress. The problem 
        happens when cp doesn't honor any reload kwqes that come after the
        upload request kwqe and allow COM to complete the request immediately.
        However, txp can be sending at the same time and cause the bseq out 
        of sync with host driver. 
 
       Fix: (COM)
        Defer the reload completion even reload request is not honored. TXP 
        will trigger the reload request completion later once the 
        snd_next >= snd_una.
    
    5709 firmware 5.0.6
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40996
        5709: connection timed out when running cnic stress. The problem 
        happens when cp doesn't honor any reload kwqes that come after the
        upload request kwqe and allow COM to complete the request immediately.
        However, txp can be sending at the same time and cause the bseq out 
        of sync with host driver. 
 
       Fix: (COM)
        Defer the reload completion even reload request is not honored. TXP 
        will trigger the reload request completion later once the 
        snd_next >= snd_una.
    
    
Version 5.0.6 (May 01, 2009)
    
    Bug fix:
    --------
    1. Problem: Assert at bxvbda!um_bdrv_get_vbd_params on checked build.
       Cause:   Checked driver asserts because the newly introduced registry
                subkey is normally absent on current platforms.
       Fix:     Separate the subkey handling and remove the assert for those
                optional subkeys.

    2. Problem: CQ# 39854 OEM reports bugcheck 10D on reboot stress test.
       Cause:   Driver sometimes would not turn on off interrupt during shutdown.
       Fixed:   Changed the driver to correctly disable interrupt.

    
Version 5.0.5 (Apr 30, 2009)

    Enhancement:
    ------------
    1. Request: CQ#40683 iSCSI Jumbo Frame will be a supported feature in T5.0 
                release and the consensus is to have each feature (TOE/iSCSI/FCOE) 
                configure the MTU individually.  The request is for VBD to add the 
                new registry key 'MTU' for the iSCSI device.
    
    2. Request: Optimized DPC importance in win2k8 and win7 OS's.
    
    Bug fix:
    --------
    1. Problem: Assert at bxvbda!defer_kcqe+0x43
       Fix: Fix a bug introduced the previous release to correctly merge 
            tx complete kcqe.
   
    5706/08 firmware 5.0.5
    =============================
    ***** iSCSI offload *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40751 
        Win7 Build 7077:5706 lost network connectivity while running cnic stress

        Fix: (RV2P)
         In a rare coincidence, RV2P is unaware of the context has been overwritten.
         RBDC halt when used info from wrong context.

    5709  firmware 5.0.5
    =============================
    ***** iSCSI offload *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40751 
        Win7 Build 7077:5706 lost network connectivity while running cnic stress
 
        Fix: (RV2P)
         In a rare coincidence, RV2P is unaware of the context has been overwritten.
         RBDC halt when used info from wrong context.
    

Version 5.0.4 (Apr 21, 2009)

    Bug Fixes:
    ----------
    1. Problem: CQ#39501 Issue Description: Auto MDIX mode doesn't work in forced 
                speed while two 5716 connected back-to-back
       Fix: Enable auto mdix for copper phy. 

    2. Problem: CQ#39895 System asks to reboot when disabling iSCSI or
                NDIS miniports that is not used to boot.
       Fix: Changed the driver to veto query remove correctly.
    
    3. Problem: Assert at bxvbda!defer_kcqe+0x43
        Fix: Changed the driver to merge tx complete kcqe if possible correctly.

    
    5706/08 firmware 5.0.4
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40554 
         OEM test tool throughput is reduced to more than 50% (80MBps vs 200MBps)

        Fix: (COM)
         A bug was introduced in last release for piggy back delay ack.

    2. Problem: CQ40511 
         VBD:5709:bxvbda!verify_con_state+175; Assert occurred passing sockdie 
         ipv6 traffic to SLB team with 2 vlans

        Fix: (COM)
         In some cases, OOO FIN is dropped (partially) as soon as it's received.
         COM is unaware of it and thought FIN has been received

    5709 firmware 5.0.4
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40554 
         OEM test tool throughput is reduced to more than 50% (80MBps vs 200MBps)

        Fix: (COM)
         A bug was introduced in last release for piggy back delay ack.

    2. Problem: CQ40511 
         VBD:5709:bxvbda!verify_con_state+175; Assert occurred passing sockdie 
         ipv6 traffic to SLB team with 2 vlans

        Fix: (COM)
         In some cases, OOO FIN is dropped (partially) as soon as it's received.
         COM is unaware of it and thought FIN has been received.

Version 5.0.3 (Apr 07, 2009)

    5706/08 firmware 5.0.3
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40366  
         Firmware still try to submit a reload request when the tcp_state
         has transitioned to CLOSED. (Regression Bug)

       Fix: (COM)
         COM should cancel the reload request if the tcp_state is at CLOSED. 

    2. Problem: CQ40375
         The fix for pending reload request is not complete and will cause TXP
         to stall under stress scenario.

       Fix: (TXP)
         Merged in the txp change from T4.8 branch that will prevent TXP to 
         get into this situation. 

    3. Problem: CQ40397
         Win7 Build 7068:5708:Lockup running Offloadstress

       Fix: (RXP)
         The difference in RXP FIO between 5708 and 5709 was overlooked, that 
         caused TCP header offset was read at the wrong location
    
    5709 firmware 5.0.3
    =============================
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    
    1. Problem: CQ40366  
         Firmware still try to submit a reload request when the tcp_state
         has transitioned to CLOSED. (Regression Bug)

       Fix: (COM)
         COM should cancel the reload request if the tcp_state is at CLOSED. 

    2. Problem: CQ40375
         The fix for pending reload request is not complete and will cause TXP
         to stall under stress scenario.

       Fix: (TXP)
         Merged in the txp change from T4.8 branch that will prevent TXP to 
         get into this situation.
    
Version 5.0.2 (Mar 31, 2009)
    
    Fixes:
    -----
    BCM5706/08 Firmware v5.0.2
    --------------------------
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    1. Problem: CQ40150 
         Xinan win2k8 Sparta:  TCP_ChimneyOffload failure of tests T9,T10,
         T12-16,T18-T22.
 
       Fix: (COM)
         Premature window update timeout introduce in change-list 59772.
    

    BCM5709 Firmware v5.0.2
    --------------------------
    ***** TCP offload/L2 *****
    Bug Fixes:  
    ----------
    1. Problem: CQ40150 
         Xinan win2k8 Sparta:  TCP_ChimneyOffload failure of tests T9,T10,
         T12-16,T18-T22.

       Fix: (COM)
         Premature window update timeout introduce in change-list 59772.

    2. Problem:
         Connection upload stalled when running sockdie test in win7 due
         to pending reload request completion. The pending reload request
         completion causing vbd to postpone firmware upload request 
         indefinitely.

       Fix: (COM)
         Make sure to complete the pending reload request in the scenario.
    


Version 5.0.1 (Mar 30, 2009)
    
    Fixes:
    ------
    1. CQ#40124 - change copyright year to 2009
    
    Enhancement:
    ------------
    1. Cont00039527	Issue Description:  Add an end user configurable option
       to the advanced driver properties that would allow for setting the
       INT-coalecing parameter. 
    2. Cont00039629	Issue Description:  For NX2/NX2_EV MSI-x capable devices 
       we will allow an option in the advanced driver properties that will 
       allow the user to change the amount of RSS queues 
    
Version 5.0.0 (Mar 24, 2009)

    Enhancement: 
    ------------
    1. CQ#39526 add  min/max/default option for Tx + Rx buffers

    2. CQ#39838 - iSCSI boot over HBA should work with
           BACS "iSCSI Offload Engine" option unchecked.

    3. Integrated firmware 5.0.1 into the bus driver.

    Integrated bug fix 1 - 6 from 4.6b branch
    Bug Fixes:  
    ----------

    1. Problem: cq#39856
          iSCSI device disappears from the system after a reboot.

       Cause:
          The driver only enumerates the iSCSI device if the iSCSI
          license is present.  For OEMs that uses the universal license,
          the number of iSCSI connection allowed should be assumed to be
          the maximum.

    2. Problem: cq#39795
          System crash when upgrading the driver after having it installed
          via the F6 mechanism.

       Cause:
          During the F6 install, the system creates another service name
          that is different than the service name used for normal driver
          install.  This causes the driver to load twice.  The second
          load corrupts the driver list.  A crash may occur when a device
          in the list is removed.

       Fix:
          During driver load, we will not initialize the driver list since
          by default it is already initialized.

    3. Problem: CQ#39414
          System may NMI on driver repeated driver load/unload when
          NCSI is enabled.

       Cause:
          The driver starts rv2p too early before the L2 receive context
          is fully initialized.  When NCSI is enabled, EMAC is enabled
          immediately after a reset which opens the gate for packet
          reception.  Since the context has not been initialized, rv2p
          will start placing packets using invalid context.

       Fix:
          the driver is modified to start rv2p only after the context
          is initialized.
    
    4. Problem: CQ#39614 - PCIE error when chimeny enabled OID is 
                used during shutdown.
        Cause:
          After the system has called us to handle a shutdown request
          and has put our device to low power state, NDIS may issue an
          OID to change offload parameters.  This causes us to touch
          the hardware while it is in D3hot state which leads to NMI.

        Fix:
          The driver will not process the set OID request if system
          has called us to handle shutdown. A registry key is also
          introduced to stop the PCIe device from reporting non-fatal
          error reporting to system in case the device is being accessed
          at d3hot state.

    5. Problem: CQ#39459-NDIS5.2:5709S: With remote phy enabled, setting 
                speed/duplex to 1gb full auto, 5709s links at 10HD
       Cause:
         The driver is testing the wrong bits for auto negotiation settings
         hence the firmware is not notified to enable auto negotiation
         when setting link speed to 1 Gbps on systems with remote phy.

       Fix:
         Fix the driver to test the auto negotiation bits correctly for
         systems with remote phy.

    6. Problem: CQ#39600: System does not enumerate iscsi device with token key        
       Cause:
          The driver doesn't setup max number of iscsi connections if it has
          not configured. The VBD will not enumerate the iSCSI device
          if the max number of iscsi connections is not set.

       Fix:
          Change the driver to setup max number of iSCSI connections to the 
          value that is in the license key. 

    7. Problem: CQ#40094:iSCSI boot -BSOD seen after upgrade to 5709c boot 
          code v5.0.0
       cause:
          Driver pulse is not getting properly registered to the shmem. 

       Fix:
          Make sure driver is using the correct offset when registering the
          driver pulse to shmem via the grc_window. 

    8. Problem: CQ#29705:5708C performance issue: TOE's throughput drops at 
          IO size 1MB
       cause:
          Teton requires smaller breakup of application buffer to support full
          line rate for large IO size.

       Fix:
          Fine-tune application buffer breakdown size for Teton.



Version 4.8.2 (Feb 13, 2009)
============================
    
    Bug Fixes:  
    ----------

    1. Problem: CQ#34349
           5709:  Bidirectional UDP performance testing is lower than 5708.

       Cause:
           The interrupt coalescing parameters for 5709 is bit conservative
           and thus caused the lower throughput. 


    2. Problem: CQ#38313
          iSCSI boot over the offload path is causing BSOD when iSCSI HBA
          is disabled by default.

       Cause:
          The bus driver does not enumerate the iSCSI device when the
          enum bit in the nvram has iSCSI disabled.

       Fix:
          Changed the bus driver to always enumerate the iSCSI device
          regardless of the enum configuration in the nvram when there is
          an iSCSI license and iSCSI boot occurs over the HBA.


    3. Problem: CQ#39008
          System may NMI during system shutdown.

       Cause:
          After the system has called us to handle a shutdown request
          and has put our device to low power state, NDIS may issue an
          OID to clear the multicast address.  This causes us to touch
          the hardware while it is in D3hot state which leads to NMI.

       Fix:
          The driver will not process the set OID request if system
          has called us to handle shutdown.


    4. Problem: CQ#39414
          System may NMI on driver repeated driver load/unload when
          NCSI is enabled.

       Cause:
          The driver starts rv2p too early before the L2 receive context
          is fully initialized.  When NCSI is enabled, EMAC is enabled
          immediately after a reset which opens the gate for packet
          reception.  Since the context has not been initialized, rv2p
          will start placing packets using invalid context.

       Fix:
          the driver is modified to start rv2p only after the context
          is initialized.


    Enhancement:
    ------------

    1. cq#37418 - Add support for selective autoneg for 2.5gb.

    2. Increase default number of TX/RX descriptors to improve performance
       on some test configurations.



Version 4.8.1 (Dec 23, 2008)
============================

    Bug Fixes:  
    ----------

    1. Problem: CQ#38477
           Windows xp should not enumerate iscsi device.

       Cause:
           There should be check for OS_TYPE before iSCSi enumeration.


    2. Problem: CQ#38895
          NMI is seen during system shutdown when there is an iSCSI
          connection running over TOE.

       Cause:
          After the system puts our device into D3Hot, the Microsoft
          iSCSI initiator posts a transmit buffer.  As a result our
          device reports a non-fatal error back to the bridge which
          then issues a NMI.

       Fix:
          Changed the driver to fail the transmit buffer post if the
          device's shutdown routine has been called.


    BCM5706/08 Firmware v4.8.2
    --------------------------

    ***** TCP offload/L2 *****

    Bug Fixes:
    ----------

    1. Problem: (win-7 sparta)
          TCP_ackfrequency and tcp_receive indication test failed in WIN-7
          sparta test.

       Fix: (COM)
          TOE stack should not shrink the receive window when a hole
          is filled and OOO data is placed in generic buffer. It should
          wait till the data to get copied to posted buffer before sending
          out the ACKs to remote.

    2. Problem: (win-7 sparta)
          WIN-7 TCP_Chimneyoffload test failed in IPV6 mode.

       Fix: (TXP)
          TOE stack should honor the hop limit value passed down from the host
          stack when building ipv6 header.

    3. Problem: (win-7 sparta)
          In a corner case, the TOE stack can still increase the receive window
          size even though the host has made a receive window reduction request.

       Fix: (COM)
          Check host request for window reduction first before proceed to update
          receive window in one of the code path.

    4. Problem: (win-7 sparta)
          Apparently the TOE rx path is sending challenge ACK to remote even a
          portion of data in the packet lies within the receive window.

       Fix: (RXP)
          TOE stack should only send challenge ACK to remote when the packet is
          invalid (ie. the data lies outside of receive window).

    5. Problem: (win-7 sparta)
          TOE stack still attempt to send out window update while delay ack is
          active.

       Fix: (COM)
          window update should be piggy back to delay ack if possible.


    BCM5709 Firmware v4.8.2
    -----------------------

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------
   
    1. Problem: (win-7 sparta)
          TCP_ackfrequency and tcp_receive indication test failed in WIN-7 
          sparta test.

       Fix: (COM)
          TOE stack should not shrink the receive window when a hole
          is filled and OOO data is placed in generic buffer. It should
          wait till the data to get copied to posted buffer before sending
          out the ACKs to remote. 
         
    2. Problem: (win-7 sparta)
          WIN-7 TCP_Chimneyoffload test failed in IPV6 mode.

       Fix: (TXP)
          TOE stack should honor the hop limit value passed down from the host
          stack when building ipv6 header.

    3. Problem: (win-7 sparta)
          In a corner case, the TOE stack can still increase the receive window
          size even though the host has made a receive window reduction request.

       Fix: (COM)
          Check host request for window reduction first before proceed to update
          receive window in one of the code path. 
     
    4. Problem: (win-7 sparta)
          Apparently the TOE rx path is sending challenge ACK to remote even a
          portion of data in the packet lies within the receive window. 

       Fix: (RXP)
          TOE stack should only send challenge ACK to remote when the packet is
          invalid (ie. the data lies outside of receive window).

    5. Problem: (win-7 sparta)
          TOE stack still attempt to send out window update while delay ack is 
          active. 

       Fix: (COM)
          window update should be piggy back to delay ack if possible.



Version 4.8.0 (Dec 10, 2008)
============================

    Bug Fixes:  
    ----------

    1. Problem: CQ#38338
           iSCSI device gets enumerated when the iSCSI offload hardware
           key is not present.

       Cause:
           The driver incorrectly computes the number of iSCSI connection
           from the hardware license key.

    2.  Problem:
           Driver may crash in hyper-v environment with Chimney enabled.

        Cause:
           The driver indicates a buffered data to the stack which
           partially accepted the data.  If the stack decides to post
           a zero-length receive buffer, the driver will crash because
           it is not expecting such a request.

    3. Problem: CQ#38727
           BSOD on an OEM 5706 LOM due to timers in VBD don't get cancel
           properly during driver unload.

       Fix:
           Added extra delay to wait for timers to expired and make sure we 
           don't re-arm timers when driver state is not DRIVER_STATE_RUNNING.


    Enhancement:
    ------------

    1.  Request: CQ#38399
           Cap the maximum number of iSCSI pending task to 128.

    2.  Request:
           Add support for BCM5716S.


    BCM5706/08 Firmware v4.8.1
    --------------------------

    ***** TCP offload/L2 *****

    1. Problem: 
         In 5706/08, there is a possible race condition in RV2P when
         too many L4 buffer post requests are en-queued in Mailbox Queue (MQ)

       Fix: (COM, CP)
         A fix is put in such that all L4 buffer post MQ are re-routed  via
         Cmd Scheduler and Cmd Processor.


    Enhancement:
    ------------
    
    1. Request: (COM, CP)
          Incorporate changes to support Sparta tests for Win7 was released 
          on 11/3


    BCM5706/08 Firmware v4.8.0
    --------------------------

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------

    1. Problem: Cont00037913
         Got connection timeout after running OEM application for 
         about 30 minutes 

       Fix: (COM)
          In change-list 56320, a bug was introduced that flow control
          state was not updated consistently.

    2. Problem: 
         TCP_ChimneyOffload T16 sparta failure in W2K8.

       Fix: (COM)
          Connection abort kcqe was sent out prematurely. This causes the 
          driver to complete the receive request as ABORT instead of 
          RESET.

    3. Problem: 
          IPv4 checksum clearing for LSO is done incorrectly.

       Fix: (TPAT)
          Offset to the IPv4 checksum is fixed.

    4. Problem: 
          Poor IOMeter performance for small packet size.

       Fix: (COM)
          Optimized Tx completion algorithm.


    Enhancement:
    ------------
    
    1. Request: (RXP)
          Taking account for SORT_VEC_2 setting when forward multi-cast/
          broadcast packet to iSCSi L2 ring (LINUX only feature). 

    2. Request: (RXP)
          Pass t39 of TCP_ChimneyOffload sparta test: TOE must be able to 
          handle IP options by forwarding the segment to stack for processing

    3. Request: (CP, RXP, RV2P, COM)
         In Linux, driver can issue a Flush BD chain KWQE that will reset the BD
         chain (i.e. for L2 ISCSI). 

    4. Request: (COM, CP)
         Pass t65 and t66 of TCP_ChimneyOffload sparta test: Fast recovery/fast 
         retransmit parameters must be preserved connection is offloaded 
         before/after entering fast recovery. 


    ***** iSCSI offload *****

    Bug Fixes:
    ----------
    
    1. Problem: CQ37753
           Windows iSCSI Offload:  Limit on iSCSI offload connections set to 10 
       Fix: (CP)
           iSCSI context allocation has been fixed.

    2. Problem: CQ 
           iSCSI Offload:  Data corruption was discovered on the IOMonkey test
                           bench.
       Fix:  (CP, RXP, COM)
           The destroy handling has a bug where the sgl cache didn't get
           flushed.  The complete destroy path has been revamped.

    3. Problem: CQ38461
           The TCP checksum is found to be corrupted when tagged VLAN AND
           header/data digest is enabled.

       Fix: (TPAT)
           The TCP checksum patching routines were modified.

    4. Problem: CQ38348
           Async msg with Sense data was not supported.

       Fix: (RXP)
           Added support for iSCSI async message with Sense data.


    BCM5709 Firmware v4.8.1
    -----------------------

    Enhancement:
    ------------
    
    1. Request: (COM, CP)
          Incorporate changes to support Sparta tests for Win7 was released 
          on 11/3.


    BCM5709 Firmware v4.8.0
    -----------------------

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------

    1. Problem: Cont00037913
         Got connection timeout after running test application for 
         about 30 minutes 

       Fix: (COM)
          In change-list 56320, a bug was introduced that tcp flow 
          state was not updated consistently.

    2. Problem: Cont00037887
        5709 subsequent Sparta tests fail after running TCP_SendAndDisconnect 

       Fix: (CP)
          In change-list 49525, a bug was introduced when integrating 5706/5709
          FW. CTX window was accessed before CTX window CID was initialized.

    3. Problem: 
         TCP_ChimneyOffload T16 sparta failure in W2K8.

       Fix: (COM)
          Connection abort kcqe was sent out prematurely. This causes the 
          driver to complete the receive request as ABORT instead of 
          RESET.

    4. Problem: 
          IPv4 checksum clearing for LSO is done incorrectly.

       Fix: (TPAT)
          Take out IPv4 checksum clearing since it's not needed for 5709.

    5. Problem: 
          Poor IOMeter performance for small packet size.

       Fix: (COM)
          Optimized Tx completion algorithm.


    Enhancement:
    ------------
    
    1. Request: (RXP)
          Taking account for SORT_VEC_2 setting when forward multi-cast/
          broadcast packet to iSCSi L2 ring (LINUX only feature). 

    2. Request: (COM)
          Added capability to route L2 iSCSI status block updates to any 
          per processor status block based on the status block number 
          specified in L2 iSCSi context (LINUX only feature).

    3. Request: (RXP)
          Pass t39 of TCP_ChimneyOffload sparta test: TOE must be able to 
          handle IP options by forwarding the segment to stack for processing

    4. Request: (RXP)
         Added more Perfect match and RULE checker resources for NCSI management
         firmware. 

    5. Request: (CP, RXP, RV2P, COM)
         In Linux, driver can issue a Flush BD chain KWQE that will reset the BD
         chain (i.e. for L2 ISCSI). 

    6. Request: (COM)
         Pass t65 and t66 of TCP_ChimneyOffload sparta test: Fast recovery/fast 
         retransmit parameters must be preserved connection is offloaded 
         before/after entering fast recovery. 


    ***** iSCSI offload *****

    Bug Fixes:
    ----------

    1. Problem:  
           iSCSI Offload:  Data corruption was discovered on the IOMonkey test
                           bench.
       Fix: (CP, RXP, COM)
           The destroy handling has a bug where the sgl cache didn't get
           flushed.  The complete destroy path has been revamped.

    2. Problem: CQ38348
           Async msg with Sense data was not supported.

       Fix: (RXP)
           Added support for iSCSI async message with Sense data.



Version 4.6.17 (Nov 4, 2008)
============================

    BCM5706/08 Firmware v4.6.11
    ---------------------------

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------

    1. Problem: 
         TCP_ChimneyOffload T16 sparta failure in W2K8.

       Fix: (COM)
          Connection abort kcqe was sent out prematurely. This causes the 
          driver to complete the receive request as ABORT instead of 
          RESET.

    2. Problem: 
          IPv4 checksum clearing for LSO is done incorrectly.

       Fix: (TPAT)
          Offset to the IPv4 checksum is fixed.

    3. Problem: 
          Poor IOMeter performance for small packet size.

       Fix: (COM)
          Optimized Tx completion algorithm.


    BCM5709 Firmware v4.6.12
    ------------------------

    ***** TCP offload/L2 *****

    Bug Fixes:  
    ----------

    1. Problem: 
         TCP_ChimneyOffload T16 sparta failure in W2K8.

       Fix: (COM)
          Connection abort kcqe was sent out prematurely. This causes the 
          driver to complete the receive request as ABORT instead of 
          RESET.

    2. Problem: 
          IPv4 checksum clearing for LSO is done incorrectly.

       Fix: (TPAT)
          Take out IPv4 checksum clearing since it's not needed for 5709.

    3. Problem: 
          Poor IOMeter performance for small packet size.

       Fix: (COM)
          Optimized Tx completion algorithm.



Version 4.6.16 (Oct 27, 2008)
=============================

    BCM5709 Firmware v4.6.11
    ------------------------

    ***** iSCSI offload *****

    Bug Fixes:
    ----------

    1.  Problem:  
            iSCSI Offload:  Cont00038138
            iLab Retransmit timer expiration failure observed.

        Fix:  (COM)
            The destroy handler contains a bug which corrupted the cid
            when the connection gets destroyed.



Version 4.6.15 (Oct 24, 2008)
=============================

   1.  Problem:  
          Checked Windows assert on a call to cancel timers.

       Cause:
          Uninitialized timers are being cancelled.


   BCM5706/08 Firmware v4.6.10
   ---------------------------

   ***** iSCSI offload *****

   Bug Fixes:
   ----------

   1.  Problem:  
           Application (iomonkey) does not run to completion.

       Fix:  (CP, RXP, COM)
           The destroy handling has a bug where the sgl cache didn't get
           flushed.  The complete destroy path has been revamped.
   

   BCM5709 Firmware v4.6.10
   ------------------------

   ***** iSCSI offload *****

   Bug Fixes:
   ----------

   1.  Problem:  
           Application (iomonkey) does not run to completion.

       Fix:  (CP, RXP, COM)
           The destroy handling has a bug where the sgl cache didn't get
           flushed.  The complete destroy path has been revamped.



Version 4.6.14 (Oct 21, 2008)
=============================

    Bug Fixes:  
    ----------

    1. Problem: CQ#37592
          Unable to pass traffic after coming out of S4.

       Cause:
          The device stops generating interrupts because there is
          a pending interrupt that never go acknowledged.

       Fix:
          Kick start the interrupt by acknowledging the pending interrupt.



Version 4.6.13 (Oct 17, 2008)
=============================

    Bug Fixes:  
    ----------

    1. Problem: CQ#37730
           Link polarity is reverted in 5709s Mezz card when remote phy
           is enable.

       Fix:
           The GRC window1 is not mapped into the PCI address space 
           properly. Therefore, driver could not read the link status
           information correctly.
       
    2. Problem: 
           Driver verifier assert when VBD use spin lock during chip 
           core dump.  

       Fix:
           Remove use of spin lock during chip core dump since there is 
           no need for it. 

    3. Problem: CQ#37867
           NDIS test 2c_holdpackets test fails on Windows XP.

       Cause:
           The VBD did not wait for all the rx packets to return before
           completing miniport unbind.

    4. problem: CQ#37962
           System hangs when trying to load/unload the vbd when msi-x is 
           enabled on the device.

       Cause: 
           The grc_window1 and grc_window2 setting weren't getting preserved
           during vbd driver unload. Therefore, win2k8 OS won't be able to
           write the correct MSI-X vectors/data to the chip during next driver
           load.
           
    Enhancement:
    ------------

    1. Request: Track diag isr counter during MSI/MSI-X interrupt so
                interrupt diagnostic test can be ran with BACS when
                MSI/MSI-X is enabled. 

    2. Request: Add support for L2_IOC_GET_HW_INFO.


   BCM5706/08 Firmware v4.6.9
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------

   1. Problem: Cont00037913
        Got connection timeout after running test application for 
        about 30 minutes 

      Fix: (COM)
         In change-list 56320, a bug was introduced that tcp flow 
         state was not updated consistently.


   ***** iSCSI offload *****

   Bug Fixes:
   ----------
   
   1. Problem: CQ37753
          Windows iSCSI Offload:  Limit on iSCSI offload connections set to 10 
      Fix: (CP)
          iSCSI context allocation has been fixed.


   BCM5709 Firmware v4.6.9
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------

   1. Problem: Cont00037913
        Got connection timeout after running test application for 
        about 30 minutes 

      Fix: (COM)
         In change-list 56320, a bug was introduced that tcp flow 
         state was not updated consistently.


   2. Problem: Cont00037887
       5709 subsequent Sparta tests fail after running TCP_SendAndDisconnect 

      Fix: (CP)
         In change-list 49525, a bug was introduced when integrating 5706/5709
         FW. CTX window was accessed before CTX window CID was initialized.

   Enhancement:

   1. Request: (RXP)
         Added additional RULE CHECKER and perfect match filter resources for
         NCSI management firmware. 



Version 4.6.12 (Oct 6, 2008)
============================
   
   Enhancement:
   ------------

   1. Request : Added iSCSI boot support for UEFI environment. (CQ#35085)

      Change  : Implemented iBFT logic to search for iBFT in both ACPI table
      as well as low memory region.



Version 4.6.11 (Oct 2, 2008)
============================
   
   Enhancement:
   ------------
    
   1. Added single ISR/multiple DPC support in MSIX mode for fallback purpose. 


   BCM5706/08 Firmware v4.6.8
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------

   1. Problem: Cont00037612
         5709: connection timed out when running a bi-dir sockdie stress and 
         offloadstress test

      Fix: (COM)
         When RV2P drop a packet partially or completely, COM would 
         misinterpret the packet as OOO.  We don't need to be alarmed
         by that.

   2. Problem: Cont00037652
         Xinan TOE:  Failure in TCP_Sack (Sparta) test

      Fix: (COM)
         Need to schedule tx whenever send window is updated.


   BCM5709 Firmware v4.6.8
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------

   1. Problem: Cont00037612
         5709: connection timed out when running a bi-dir sockdie stress and 
         offloadstress test

      Fix: (COM)
         When RV2P drop a packet partially or completely, COM would 
         misinterpret the packet as OOO.  We don't need to be alarmed
         by that.

   2. Problem: Cont00037652
         Xinan TOE:  Failure in TCP_Sack (Sparta) test

      Fix: (COM)
         Need to schedule tx whenever send window is updated.



Version 4.6.10 (Sept 29, 2008)
==============================

   Bug Fixes:  
   ----------

   1.  Problem: cq#37487
          Checked driver broke in bxvbda!l4_abort+0x2a8 during vbd enable/
          disable test while passing traffic.

       Cause:
          The driver checks to make sure all the generic buffers are returned
          before disabling the bus driver.

       Fix:
          The bus driver needs to wait for all the generic buffers to be
          returned before completing the unbind operation.


   Enhancement:
   ------------
    
   1. Added MSIX/MSI support for 5709 chip. 


   BCM5706/08 Firmware v4.6.7
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------

   1. Problem: Cont00037389
         5709: TXP is hitting an ASSERT due to data after FIN

      Fix: (TXP)
         Won't assert data after FIN in the tx side, drop it on the rx side 
         instead.


   Enhancement:
   ------------

   1. Request: (TXP, CP and COM)
         Support New LH ChimneyOffload sparta test t64 and t79
         when peer advertises sub-MSS window. 


   BCM5709 Firmware v4.6.7
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------

   1. Problem: Cont00037389
         5709: TXP is hitting an ASSERT due to data after FIN

      Fix: (TXP)
         Won't assert data after FIN in the tx side, drop it on the rx side 
         instead.


    Enhancement:
    ------------
   
    1. Request: (TXP, CP and COM)
          Support New LH ChimneyOffload sparta test t64 and t79
          when peer advertises sub-MSS window. 



Version 4.6.9 (Sept 17, 2008)
=============================

   Bug Fixes:  
   ----------

   1.  Problem: cq#37300
          Installing the VBD causes the system to reboot.

       Cause:
          The driver is calling KeAcquireSpinLockAtDpcLevel from the wrong IRQL.


   Enhancement:
   ------------

   1. Flow Control:  Adjusted flow control trip points as according to the
         MTU size selected.


   BCM5706/08 Firmware v4.6.6
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------

   1. Problem: Cont00037344
         Win2k3 Sparta failure occurs on tcp_statenonconformance_CLOSE_WAIT 
         and tcp_statenonconformance_LAST_ACK

      Fix: (RXP)
         In the two sparta failures, A SYN is transmitted after FIN.  A check 
         has been added recently in the FW to drop any packet after FIN.  
         To fix this, we will allow any 0 length packet after FIN.

   Enhancement:
   ------------
  
   1. Request: (CP and COM)
         Support New LH ChimneyOffload sparta test t52, t57, t58, t72 and t73.


   BCM5709 Firmware v4.6.6
   -----------------------

   ***** iSCSI offload *****

   Bug Fixes:
   ----------
    
   1. Problem: CQ36780
          iSCSI Offload: Invalid error opcode for the max tcp retx iSCSI kcqe 
      Fix (COM):
          Fixed the opcode



Version 4.6.8 (Sept 10, 2008)
=============================

   BCM5706/08 Firmware v4.6.4
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------
    
   1. Problem: 
         A change was checked in by mistake in last release

      Fix: (COM)
         Undo change-list 55291
   

   BCM5709 Firmware v4.6.4
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------
    
   1. Problem: 
         A change was checked in by mistake in last release

      Fix: (COM)
         Undo change-list 55291



Version 4.6.7 (Sept 8, 2008)
============================

   Fixes:
   ------

   1. Problem: cq#36907
         iSCSI device was enumerated even when the iSCSI license was not
         present.

      Cause:
         The driver did not taken into account the iSCSI license information
         when enumerating the iSCSI PDO.


   Enhancement:
   ------------

   1. CQ#36727: Disable WOL advertisement if VAUX is not present.


   BCM5706/08 Firmware v4.6.3
   --------------------------

   1. Problem:
          iSCSI NOP-Out response contains garbage data bits in the header byte

      Fix: (TXP)
          Fixed by masking out the unused bits before sending the data to the 
          line.

   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------
   
   1. Problem: Cont00037145
          Occasionally, 5709 fails Sparta TCP_Nagle test. 

      Fix: (CP, TXP)
          Changed the TDBC cache line threshold dynamically to prevent tcp 
          nagle algorithm to exit prematurely. 

   2. Problem: Cont00036794 and 37051
          When OOO FIN is detected, tcp state is not updated correctly. 

      Fix: (RXP, COM)
          OOO FIN state was not properly reset when OOO FIN is processed,
          that caused incorrect tcp state transition. 

   3. Problem: Cont00036993
          Occasionally, we are seeing data completion after FIN and that 
          got misinterpreted as lack of Generic buffer.

      Fix: (RXP, COM)
           The problem is caused by rx data completion after FIN.  There are 
           several reasons for that.
           1.  The recent OOO FIN feature has a bug that cause incorrect state 
               transition could lead to premature Remote Disconnect kcqe
           2.  We have observed the tx side is transmitting data after FIN.  
               For now, we work around it by dropping all data after FIN
           3.  On the rx side, we will not send remote disconnect until the 
               whole FIN packet is placed.


   BCM5709 Firmware v4.6.3
   -----------------------

   ***** iSCSI offload *****

   Bug Fixes:
   ----------
   
   1. Problem:
          iSCSI NOP-Out response contains garbage data bits in the header byte

      Fix: (TXP)
          Fixed by masking out the unused bits before sending the data to the 
          line.


   ***** TCP offload/L2 *****

   Bug Fixes:  
   ----------
   
   1. Problem: Cont00037145
          Occasionally, 5709 fails Sparta TCP_Nagle test. 

      Fix: (CP, TXP)
          Changed the TDBC cache line threshold dynamically to prevent tcp 
          nagle algorithm to exit prematurely. 

   2. Problem: Cont00036794 and 37051
          When OOO FIN is detected, tcp state is not updated correctly. 

      Fix: (RXP, COM)
          OOO FIN state was not properly reset when OOO FIN is processed,
          that caused incorrect tcp state transition. 

   3. Problem: Cont00036993
          Occasionally, we are seeing data completion after FIN and that 
          got misinterpreted as lack of Generic buffer.

      Fix: (RXP, COM)
           The problem is caused by rx data completion after FIN.  There are 
           several reasons for that.
           1.  The recent OOO FIN feature has a bug that cause incorrect state 
               transition could lead to premature Remote Disconnect kcqe
           2.  We have observed the tx side is transmitting data after FIN.  
               For now, we work around it by dropping all data after FIN
           3.  On the rx side, we will not send remote disconnect until the 
               whole FIN packet is placed.



Version 4.6.6 (Aug 20, 2008)
============================

   BCM5706/08 Firmware v4.6.2
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes: 
   ----------
    
   1. Problem:
          TOE stack doesn't process valid ack in OOO segments that are within
          the window per RFC 793. 

      Fix: (RXP, COM)
          If the sequence number of the OOO segment is within the window and 
          ACK sequence number is valid, TOE stack will process the new ACK
          sequence number. 

   2. Problem:
          FW needs to keep track of Max RT and Total RT to pass new Retransmit
          Sparta tests.

      Fix: (CP, COM)
          Keep track of max and total RT in FW and pass total RT to host
          upon upload.

   3. Problem:
          For LSO, we were clearing IP header checksum based on a hardcoded
          offset in a frame.  In case of VLAN/SNAP, the offset could be 
          different.

      Fix: (TPAT)
          Clearing IP header checksum relative to the end of L2 header.

   4. Problem:
          Per MSFT LH sparta requirement, we should stop nagle if there 
          is only one send_request in the send queue. This is a slight 
          deviation from RFC 896. This deviation is causing failure in 
          the new SillyWindow Sparta test.

      Fix: (TXP)
          It appears this deviation has been taken out in latest Sparta
          tests.  We are taking that out too in FW.
           
   5. Problem: Cont00036938
          Some instructions were taken out in COM to conserve code memory, 
          later found out 5706 won't allow it. Most changes were undone
          but missed one of the kcqe message (i.e. SEQ_UPDATE). 
      Fix: (COM)
          Undo code optimization change.


   BCM5709 Firmware v4.6.2
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes: 
   ----------
    
   1. Problem:
          TOE stack doesn't process valid ack in OOO segments that are within
          the window per RFC 793. 

      Fix: (RXP, COM)
          If the sequence number of the OOO segment is within the window and 
          ACK sequence number is valid, TOE stack will process the new ACK
          sequence number. 

   2. Problem:
          FW needs to keep track of Max RT and Total RT to pass new Retransmit
          Sparta tests.

      Fix: (CP, COM)
          Keep track of max and total RT in FW and pass total RT to host
          upon upload.

   3. Problem:
          For LSO, we were clearing IP header checksum based on a hardcoded
          offset in a frame.  In case of VLAN/SNAP, the offset could be 
          different.

      Fix: (TPAT)
          Clearing IP header checksum relative to the end of L2 header.
           
   4. Problem:
          Per MSFT LH sparta requirement, we should stop nagle if there 
          is only one send_request in the send queue. This is a slight 
          deviation from RFC 896. This deviation is causing failure in 
          the new SillyWindow Sparta test.

      Fix: (TXP)
          It appears this deviation has been taken out in latest Sparta
          tests.  We are taking that out too in FW.

   Enhancement:
   ------------
  
   1. Request: (COM)
          VLAN tag needs to be forwarded to MCP when NCSI is active and 
          hardware is setting up to strip VLAN. Otherwise, NCSI can't insert
          the VLAN tag back to the packet as it passes on the packets to 
          BMC.  



Version 4.6.5 (Aug 3, 2008)
===========================

   Fixes:
   ------

   1.  Problem: CQ#35540, #35792, #35793
          Running BACS diagnostic test overnight could cause system with
          remote phy enabled to hang.

       Cause:
          There is a locking issue that was introduced in vbd v4.4.4.  The
          macro REG_RD_IND cannot be called from the ISR because it could
          lead to a deadlock situation.

       Fix:
          Modified the call to REG_RD_IND in the ISR to use directly register
          access.


   2.  Problem: CQ#35777
          Enabling/disabling the iSCSI device while the NDIS device is active
          could cause the driver to break.

       Cause:
          There is a bug in s_list_add_tail routine where if one of the list
          is empty, the add operation will lead to inconsistent list state.


   3.  Problem:
          BSOD while updating miniport.

       Cause:
          There are cases that reference count of the client block is decremented 
          even though the client block pointer is not initialized. 


   4.  Problem:
          Chariot reported Error 245 when running it with large transmit I/O's
          (greater than 1MB) and sockdie stress at the same time.  TOE
          toggling must also be running in the background.

       Cause:
          A transmit I/O could be completed with 0 bytes transferred even
          though it is partially completed.  For this condition to occur
          a portion of the transmit I/O is completed with success and
          immediately afterward the connection gets uploaded (as a result of
          TOE toggling).  This conditional is very rare.


   5.  Problem:
          Chariot reported Error 245 when running it with large receive
          I/O's (greater than 10MB) and sockdie stress at the same time.  TOE
          toggling must also be running in the background.

       Cause:
          A receive I/O could be completed with 0 bytes transferred even
          though it is partially completed.


   6.  Problem:
          High interrupt count is observed on BCM5709 when RSS is enabled.

       Cause:
          The driver may intermittently not acknowledge interrupts associated
          with the RSS receive queue.


   BCM5706/08 Firmware v4.6.1
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes: 

   1. Problem: 
          Sparta issues: TCP_Urgent_TOE 
      Fix: (RXP, COM)
          Per input from Qasim of MS, if both SYN and URG bit is present,  
          Sparta test expects us to upload the connection and then indicate 
          the urgent packet to the stack via non-offload path for the 
          stack to deal with it. Thus, we need to ignore tcp SYN.


   2. Problem:
          In-order packet may be placed in generic buffer even there is
          posted buffer available in single island mode.
      Fix: (RV2P)
          Scenario example: 
          Before MQ update:
              gen_start_seq =hostseq = 0x1000,  io_seq = 0x1100, 
              hole_seq = 0x1200, end_seq = 0x1300 
          After After MQ update of 0x200 bytes:
              gen_start_seq =0x1100, hostseq = 0x1200, io_seq = 0x1100, 
              hole_seq = 0x1200, end_seq = 0x1300 
          Any packets with seq between 0x1100 and 0x1200 will be placed
          in generic buffer instead of posted buffer instead.
          gen_start_seq should have been updated to 0x1200 instead because
          seq between 0x1100 is not a valid gen_start_seq.
   
   3. Problem:
          Upon send window update, we don't schedule transmission all the
          time.

      Fix: (COM)
          Always schedule tx pipeline when activate retransmission in send 
          window update.


   BCM5709 Firmware v4.6.1
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes: 

   1. Problem: 
          Sparta issues: TCP_Urgent_TOE 
      Fix: (RXP, COM)
          Per input from Qasim of MS, if both SYN and URG bit is present,  
          Sparta test expects us to upload the connection and then indicate 
          the urgent packet to the stack via non-offload path for the 
          stack to deal with it. Thus, we need to ignore tcp SYN.


   2. Problem:
          In-order packet may be placed in generic buffer even there is
          posted buffer available in single island mode.
      Fix: (RV2P)
          Scenario example: 
          Before MQ update:
              gen_start_seq =hostseq = 0x1000,  io_seq = 0x1100, 
              hole_seq = 0x1200, end_seq = 0x1300 
          After After MQ update of 0x200 bytes:
              gen_start_seq =0x1100, hostseq = 0x1200, io_seq = 0x1100, 
              hole_seq = 0x1200, end_seq = 0x1300 
          Any packets with seq between 0x1100 and 0x1200 will be placed
          in generic buffer instead of posted buffer instead.
          gen_start_seq should have been updated to 0x1200 instead because
          seq between 0x1100 is not a valid gen_start_seq.
   

   3. Problem:
          Upon send window update, we don't schedule transmission all the
          time.

      Fix: (COM)
          Always schedule tx pipeline when activate retransmission in send 
          window update.



Version 4.6.4 (Jun 3, 2008)
============================
    
   Fixes:
   ------

   1. Problem:
        When 5706/5708/5709 adapters are disabled in the system and a bug 
        check happens due to error of other components, the vbd chip crash 
        dump caused another bug check during system memory dump process. 
        
      Cause:
        Even the adapters are disabled in the system, the vbd driver still 
        get loaded to the memory and its bug check callback is registered
        to the OS. When a bug check happens, the callback get calls and device
        handle is NULL. 

      Fix:
        If device handle is NULL, chip crash dump should not be allowed to 
        continue.


   Enhancement:
   ------------

   1. CQ#35563: Add support for BCM5716.


   BCM5706/08 Firmware v4.4.17
   ---------------------------

   ***** TCP offload/L2 *****

   Bug Fixes: 

   1. Problem: CQ34909 
          VBD break bxvbda!get_packets_rcvd running Iometer, Chariot and 
          Sockdie Stress 

      Fix: (RV2P)
           When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) 
           mode in rbdc, rx BD got overwritten some of the time.  RV2P needs 
           to keep track of transition between the two modes and acts 
           accordingly. P1 also needs to wait for P2 to finished the NOP cmd.


   BCM5709 Firmware v4.4.21
   ------------------------

   ***** TCP offload/L2 *****

   Bug Fixes: 
   ----------

   1. Problem: CQ35612
          system breaks at bxvbda!rx_indicate_gen when running C-NIC 
          stress test.

      Fix: (RV2P)
          L4 FLUSH is actually shared between L4 and iSCSI. RV2P
          need to check CTX type before engaging fix for CQ35094.
          Or erroneous L4 commands with iSCSI CID may be passed down
          to COM.
         


Version 4.6.2 (May 20, 2008)
============================
    
   Fixes:
   ------
   
   1. Problem: CQ#33827, #35308
         Error Event ID 56 appears in the System Event Log in some machines
         during driver installation on W2K8.

      Cause:
         The device capabilities of the child device has the UniqueID set to
         TRUE which result in the same PnP device ID for the two BCM5709
         ports.  UniqueID is propagated from the parent device and it set
         by the PCI bus driver.

      Fix:
         Always set the UniqueID to FALSE in the child's device capabilities.



Version 4.6.1 (May 13, 2008)
============================
    
  Fixes:
  ------

  1. Problem:
        During tcp connection upload, driver is not updating the total_rt 
        parameter of the tcp delegated state variables.

     Cause:
        Driver totally ignore the total_rt parameter. 

     Fix:
        Driver should derive the total_rt parameter value based on the retx_num
        srtt, rttvar, and retx timeout delta.


   Enhancement:

   1.  CQ#34894 - Incorporate the ability to search for iBFT in low memory
       to determine if the device is an iSCSI boot device.

   2.  After a path update, driver should also issue tcp updates to all 
       offloaded connections that reference to this path in case MSS value
       is updated during the path update. 

   3.  CQ#33620 - Move to the latest WDK (6001.18000).

   4.  Use the latest WDF Co-installer (WDF 1.7).


   BCM5706/08 Firmware v4.6.0
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: CQ34767 
           linux bnx2 NCSI traffic plus jumbo frames on SUT cause kernel panic

      Fix: (RV2P)
           One register for reading context was not properly initialized in  
           jumbo frame mode.  Thus, wrong context was read in when more than
           one CIDs are used.

   2. Problem: CQ34909 
          VBD break bxvbda!get_packets_rcvd running Iometer, Chariot and 
          Sockdie Stress 

      Fix: (RV2P)
           When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) 
           mode in rbdc, rx BD got overwritten some of the time.  RV2P needs 
           to keep track of transition between the two modes and acts 
           accordingly. P1 also needs to wait for P2 to finished the NOP cmd.

   3. Problem: CQ34889
          5709: connection timed out when running multiple adapter stress
          test (RBDC hang)

      Fix: (RV2P)
          Since hostbdidx locates at a lower address than hostbseq, there is a
          small time window that if RV2P read hostbdidx and hostbseq while
          Mailbox updates them. Hostbdidx can have a stale value and it will
          be behind hostbseq. As a workaround, we can reload hostbdidx from
          context. It might already be way ahead of hostbseq, but that's okay.


    Enhancement:

    1. Request: (COM, RV2P for LH sparta test)
           During TCP reassembly when some OOO data are in generic buffer, TOE 
           stack should wait till the data in generic buffer are copied to 
           posted buffer before sending out the ACK when hole is filled
           providing that posted buffer is available at that time. This avoids
           sending a ACK with reduce window then immediately follows with a window 
           update after all the generic buffer data are copied to post buffer. 


   BCM5709 Firmware v4.6.0
   ------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: CQ34889
          5709: connection timed out when running multiple adapter stress 
          test (RBDC hang)

      Fix: (RV2P)
          Since hostbdidx locates at a lower address than hostbseq, there is a
          small time window that if RV2P read hostbdidx and hostbseq while
          Mailbox updates them. Hostbdidx can have a stale value and it will
          be behind hostbseq. As a workaround, we can reload hostbdidx from 
          context. It might already be way ahead of hostbseq, but that's okay.


   2. Problem: CQ34909 
          VBD break bxvbda!get_packets_rcvd running Iometer, Chariot and 
          Sockdie Stress 

      Fix: (RV2P)
           When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) 
           mode in rbdc, rx BD got overwritten some of the time.  RV2P needs 
           to keep track of transition between the two modes and acts 
           accordingly. P1 also needs to wait for P2 to finished the NOP cmd.


    Enhancement:

    1. Request: (COM, RV2P for LH sparta test)
           During TCP reassembly when some OOO data are in generic buffer, TOE 
           stack should wait till the data in generic buffer are copied to 
           posted buffer before sending out the ACK when hole is filled
           providing that posted buffer is available at that time. This avoids
           sending a ACK with reduce window then immediately follows with a window 
           update after all the generic buffer data are copied to post buffer. 

    2. Request: (CP)
           Reduce the timer ctx polling period to 500us instead of core freq rate.
           Slower polling period reduce un-necessary PCI-E traffic across the bus.



Version 4.6.0 (Apr 30, 2008)
============================

   Fixes:
   ------

   1.  Problem: CQ#34975
          The device shows the link is disconnected even when the cable is
          plugged in.

       Cause:
          The problem occurs when management firmware is enabled.  There is
          a bug in the driver where it does not respond to the firmware
          knock-knock event.  Because of this the firmware thinks it is running
          in an OS absent mode.  In this mode it owns the PHY.



Version 4.4.12 (Apr 24, 2008)
=============================
   
   BCM5706/08 Firmware v4.4.14
   ---------------------------

   ***** TCP offload/L2 *****

   Bug Fixes: 

   1. Problem: CQ34483, CQ34825.
           When RSS and BMC(management) are enabled, adapter could loss
           network connectivity when receiving multi-cast/broadcast packets
           to both host ip and BMC ip simultaneously.

      Fix: (RXP)
           In RSS multi-cast/broadcast path, RXP must set indication to COM so
           it forwards the management traffic to MCP. Otherwise, these packets
           are not getting free up and resulted in mbuf leak. 


   BCM5709 Firmware v4.4.14
   ------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: CQ34483, CQ34825
           When RSS and BMC(management) are enabled, adapter could loss
           network connectivity when receiving multi-cast/broadcast packets
           to both host ip and BMC ip simultaneously.

      Fix: (RXP)
           In RSS multi-cast/broadcast path, RXP must set indication to COM so
           it forwards the management traffic to MCP. Otherwise, these packets
           are not getting free up and resulted in mbuf leak. 



Version 4.4.11 (Apr 20, 2008)
=============================
   
   Fixes:
   ------
   
   1. Problem: CQ#34012
         Packet size is 12 bytes too long with RFC 1323 timestamp enabled.
         
      Cause:
         After driver is taking account for the timestamp tcp option when 
         derive the MSS value from the path MTU, it then comparing this MSS 
         value with remote_MSS value. If remote_MSS value is less, then 
         calculated MSS value is overwritten by remote_MSS. The correct thing 
         to do is to compare with the remote_MSS value first, then take account
         for tcp option size. 

   Enhancement:

   1. Don't invoke VBD chip crash dump feature when iSCSi boot is present. 


   BCM5706/08 Firmware v4.4.13
   ---------------------------

    ***** TCP offload/L2 *****

    Bug Fixes:

    1. Problem: CQ34123
            LH: xinan times out when running bi-dir sockdie stress and 
            offloadstress due to TDMA stall.

       Fixes: (CP)
            When completing the upload, we should send out a delist command
            to TSCH to make sure the CID is delist in TSCH task memory. 
            Otherwise, it could erroneous start the connection while
            the ctx is being initialized for new connection with the same
            old cid. 


   BCM5709 Firmware v4.4.13
   ------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: 
            RV2P code hangs on when running on 5709 A1.
      Fixes (RV2P):
            In last release, the fix for Cont00033290 should only apply to
            5706 and 5709 B/C parts.  The fix uses a register that is needed
            by 5709 A1 code. Compiler switch is needed for this fix.

   2. Problem: 
            L2 CRC error when running loopback test in Xdiag. 
      Fixes (TXP):
            Set ONE_CHANNEL bit rbdc_control reg at init.

   3. Problem: CQ34123
            LH: xinan times out when running bi-dir sockdie stress and 
            offloadstress due to TDMA stall.

       Fixes: (CP)
            When completing the upload, we should send out a delist command
            to TSCH to make sure the CID is delist in TSCH task memory. 
            Otherwise, it could erroneous start the connection while
            the ctx is being initialized for new connection with the same
            old cid. 



Version 4.4.10 (Apr 15, 2008)
=============================

   BCM5706/08 Firmware v4.4.12
   ---------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: Cont00033290    
            IPv6 Offload: connection timed out when running a bi-dir 
            offloadstress test.

       Fixes (RV2P):
            In last release, the fix didn't work correctly because HW requires
            at least one instruction after switch bank for local context before
            reading it.


   BCM5709 Firmware v4.4.12
   ------------------------

   ***** iSCSI offload *****

   Bug Fixes:

   1. Problem: Cont00034768
            able to connect more iscsi targets than reserved in BACS in 
            function 1.
      Fix:
            shmem pointer now calculated according to the Xinan function 
            number (0/1)


   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: Cont00033290    
            IPv6 Offload: connection timed out when running a bi-dir 
            offloadstress 
            test.
       Fixes (RV2P):
            In last release, the fix didn't work correctly because HW requires
            at least one instruction after switch bank for local context before
            reading it.



Version 4.4.9 (Apr 11, 2008)
============================

   Enhancements:
   ============

   1.  Ensure the number of connections offloaded and offload pending does
       not exceed the maximum offload capacity.  W2K3 does not seem to 
       honor maximum offload capacity that we report to NDIS.


   BCM5706/08 Firmware v4.4.11
   ---------------------------

   ***** iSCSi/TCP offload/L2 *****
    
   Bug Fixes:

   1. Problem: Cont00034590, 34575, 34664, 34578
         5709:
            Received invalid tcp_rcv_win_seq when running sockdie suite & 
            iSCSI Iometer traffic.

            system breaks while runing sockdie-data verify for TOE and  
            iomonkey for iscsi in ipv6 environment.

            Lost network connectivity over one port while running Sockdie 
            Suite and iSCSI traffic iSCSI digest error observed in xdiag setup.

         5708:
            System assert running while running sockdie suite and iSCSI 
            traffic through Iometer.

      Fixes (RV2P):
           A bug was introduced iSCSI RV2P FW in FW 4.4.6. It causes RDMA ftq 
           message corruption in stressful conditions.


   2. Problem: Cont00033290    
           IPv6 Offload: connection timed out when running a bi-dir
           offloadstress test.

      Fixes (RV2P):
           L4 Post MQ message occasionally arrives to RV2P after the L4 Place 
           message.  Firmware fix is put in to do an actual read instead of 
           pre-read to avoid P1 from preempting P2 in reading BD of the same CID. 


   BCM5709 Firmware v4.4.11
   ------------------------

   ***** iSCSi/TCP offload/L2 *****
    
   Bug Fixes:

   1. Problem: Cont00034590, 34575, 34664, 34578
         5709:
            Received invalid tcp_rcv_win_seq when running sockdie suite & 
            iSCSI Iometer traffic.

            system breaks while runing sockdie-data verify for TOE and  
            iomonkey for iscsi in ipv6 environment.

            Lost network connectivity over one port while running Sockdie 
            Suite and iSCSI traffic iSCSI digest error observed in xdiag setup.

         5708:
            System assert running while running sockdie suite and iSCSI 
            traffic through Iometer.

      Fixes (RV2P):
           A bug was introduced iSCSI RV2P FW in FW 4.4.6. It causes RDMA ftq 
           message corruption in stressful conditions.


   2. Problem: Cont00033290    
           IPv6 Offload: connection timed out when running a bi-dir
           offloadstress test.

      Fixes (RV2P):
           L4 Post MQ message occasionally arrives to RV2P after the L4 Place 
           message.  Firmware fix is put in to do an actual read instead of 
           pre-read to avoid P1 from preempting P2 in reading BD of the same CID. 



Version 4.4.8 (Arp 9, 2008)
===========================

   Fixes:
   ------

   1.  Problem: CQ#34553
          User can disable the iSCSI device which is also used as the boot
          device.

       Cause:
          The bus driver always sets the NDIS PDO to NotDisableable when
          the iSCSI and NDIS devices are present regardless of which device
          is the boot device.


   2.  Problem: CQ#34581
          The driver could hit an assertion in reload_tx_bseq.

       Cause:
          The driver did not post all the send_unack data when the connection
          gets offload.  All the send_unack data must be present in the
          bd chain.


   3. Problem: CQ#34625
         VBD 4.4.7 Driver Installation Error and BSOD occurs for NXII device 
         in W2K.

      Cause:
         Some of the Kernel API functions used in the new chip crash dump
         feature are not available for W2K.


   4. Problem: CQ#34671
         Remote PHY flow control options are not consistent with the NDIS
         miniport flow control options.

      Fix:
         Change the VBD inf so the remote phy flow control options are
         consistent with the NDIS miniport.


   BCM5706/08 Firmware v4.4.10
   ---------------------------

   ***** iSCSI offload *****

   Bug Fixes:

   1. Problem:
           RV2P hangs in iSCSi path because it has no more BD to place
           all the data. 

      Fix:
           Flush the SGL from the RBDC in case of middle of PDU when destroy 
           connection.


   ***** TCP offload/L2 *****
    
   Bug Fixes:

   1. Problem: Cont00034554  
           System breaks at bxvbdx!disconnect_comp+0x1df when running sockdie 
           stress and offloadstress. There is a small window period between
           upload init and upload request where TOE stack didn't send tx 
           completions. 

      Fixes (COM):
           Allowed sending of TX completions in the period between upload init
           and upload request. 


   2. Problem: 
           OOO FIN broke due to a change for Sparta in 4.4.5. 

      Fixes (RXP):
           Set L4_OPAQUE_FLAGS_REQ_UPLOAD bit in vp.opaque_flags for OOO FIN.


   3. Problem:
           KeepAlive Ack detection code is mistakenly get optimized out due to
           changes 4.4.9 and cause KA timer not getting reset properly. 

      Fixes: (RXP)
           Put back the keepalive ack detection mechanism.


   Enhancement:
    
   1. Request:
           RXP code space is getting too low. 

      changes: (RXP)
           Optimize rss_workaround routine to conserve space.


   BCM5709 Firmware v4.4.10
   ------------------------

   ***** iSCSI offload *****

   Bug Fixes:

   1. Problem:
           RV2P hangs in iSCSi path because it have no more BD to place
           all the data. 

      Fix:
           Flush the SGL from the RBDC in case of middle of PDU in destroy 
           connection.


   2. Problem:
           TXP dead loops when processing ftq with iSCSi CID. 

      Fix: (CP)
           Initialized TXP and TPAT num_of_ccells according to _cp_hsi and 
           not according to KQWE.


   ***** TCP offload/L2 *****
    
   Bug Fixes:

   1. Problem: Cont00034554  
           System breaks at bxvbdx!disconnect_comp+0x1df when running sockdie 
           stress and offloadstress. There is a small window period between
           upload init and upload request where TOE stack didn't send tx 
           completions. 

      Fixes (COM):
           Allowed sending of TX completions in the period between upload init
           and upload request. 


   2. Problem: 
           OOO FIN broke due to a change for Sparta in 4.4.5. 

      Fixes: (RXP)
           Set L4_OPAQUE_FLAGS_REQ_UPLOAD bit in vp.opaque_flags for OOO FIN.


   3. Problem:
           TOE clears DF bit in each TX packet and could lead to fragmentation
           in VPN channel.

      Fixes: (TXP)
           Sets DF bit in every TOE packets.
    

   Enhancement:

   1. Request: 
           RXP code space is getting low. 

      Changes: (RXP)
           Optimize rss_workaround routine to conserve space.

   2. Request:
           Expose iSCSi context and pg context map to host via CP HSI so Linux
           bnx2 driver can use them. 

      Changes: (cp)
           Added variables iscsi_ctx_map and pg_ctx_map to support this. 



Version 4.4.7 (Mar 27, 2008)
============================

   Fixes:
   ------

   1.  Problem: CQ#34289
          The driver could break when coming out of S4.

       Cause:
          The break occurs because the tx completion index in the status block
          is bigger than the producer index written by the driver.  Coming out
          of S4, the driver issues a chip reset but some of the L2 context
          fields do not get re-initialized to zero's.  As a result some of
          the fields in the command cell are stale.

       Fix:
          On a chip reset, the driver will zero out the backing store in
          host memory.


   Enhancements:
    
   1. Added preliminary support of chip crash dump feature.   


   BCM5706/08 Firmware v4.4.9
   --------------------------

   ***** iSCSI offload *****

   Bug fixes:

   1. Problem: CQ34284
           Windows iSCSI Offload: Xinan - BSOD occurs while running iSCSI 
           scripts test6_4.pl (Data digest error test) 
      Fixes:
           Fixed race between COM and RXP, both changing the 
           conn_flags_state context variable.


   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: Cont00034460  
           Win2k3 Sparta TCP_StateConformance test fails
      Fixes: (RXP)
           It was supposed to be resolved in 4.4.8.  A pair of parentheses 
           were missing to enforce C precedence.

   Enhancement:
    
   1. Request:
           Make TCP URGENT handling comply to latest LH SPARTA requirement.
      Changes: (RXP, COM)
           Re-spin TCP URGENT handling mechanism. 
   

   BCM5709 Firmware v4.4.9
   -----------------------

   ***** iSCSI offload *****

   Bug fixes:

   1. Problem: CQ34284
           Windows iSCSI Offload: Xinan - BSOD occurs while running iSCSI 
           scripts test6_4.pl (Data digest error test) 
      Fixes:
           Fixed race between COM and RXP, both changing the 
           conn_flags_state context variable.


   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: Cont00034460  
           Win2k3 Sparta TCP_StateConformance test fails
      Fixes: (RXP)
           It was supposed to be resolved in 4.4.8.  A pair of parentheses 
           were missing to enforce C precedence.


   Enhancement:
    
   1. Request:
           Make TCP URGENT handling comply to latest LH SPARTA requirement.
      Changes: (RXP, COM)
           Re-spin TCP URGENT handling mechanism. 



Version 4.4.6 (Mar 24, 2008)
============================

   Fixes:
   ------

   1.  Problem: CQ#34154
          Shutdown causes a crash on W2K.

       Cause:
          When iSCSI PDO is enumerated, the driver will call
          WdfDeviceInitSetPowerNotPageable.  This call will cause W2K to crash.
          There could be an issue with KMDF library running on W2K.

       Fix:
          Since iSCSI is not supported on W2K, the bus driver will not
          enumerate the iSCSI PDO.


   Enhancements:

   1.  CQ#34206 - Add support for additional devices in the inf file.
   2.  Log bind failure to the event viewer.


   BCM5706/08 Firmware v4.4.8
   --------------------------

   ***** iSCSI offload *****

   Enhancement:

   1. Request:
           Initialize Firmware KWQ consumer index during driver KWQ
           initialization
    
   Bug fixes:

   1. Problem: 
       Cont00033830 - Xinan - Chariot 0245 Error running HPThroughput and 
            Iometer to iSCSI luns simultaneously
        Cont00033881 - Xinan: System becomes unresponsive running Iometer, 
            Chariot HPTput & SockdieStress
        Cont00033866 - Xinan: NIC stops responding after running Sockdie 
            Stress and Chariot HP Throughput
        Fixes: (RV2P)
            When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) 
            mode in rbdc, rx BD got overwritten some of the time.  RV2P needs 
            to keep track of transition between the two modes and acts accordingly.

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: 
           Minor bug in comparing Seq Num.
      Fixes: (COM)
           Change < to SEQ_LT() in congestion ctrl code.

   2. Problem:
           TOE stack receives a segment with TCP timestamp option and TsValue
           of 0.  It then receives a segment with TsValue of 0x80000000 and
           accepts the second segment by ACKing it even though 0x80000000 < 0.
      Fixes: (RXP)
           Removed erroneus TsValue of 0x80000000 check rule.
            
   3. Problem:
           W2K3 Sparta failed in StateNonConformance and ZeroWindow at
           ver 4.4.7.
      Fixes: (RXP)
           Selectively perform the change introduced in version 4.4.7.


   BCM5709 Firmware v4.4.8
   -----------------------

   ***** iSCSI offload *****

   Enhancement:

   1. Request:
           Initialize Firmware KWQ consumer index during driver KWQ 
           initialization.
    

   Bug Fixes:

   1. Problem: 
           HW bug prevents the use of CIDs 0x3800 - 0x3C00 in iSCSI and TOE 
           connections.
      Fixes: (CP)
           Reduced allowed iSCSI CID range to 0x2100 - 0x3800 to skip the 
           problem range. 

   2. Problem: 
       Cont00033830 - Xinan - Chariot 0245 Error running HPThroughput and 
           Iometer to iSCSI luns simultaneously
       Cont00033881 - Xinan: System becomes unresponsive running Iometer, 
           Chariot HPTput & SockdieStress
       Cont00033866 - Xinan: NIC stops responding after running Sockdie 
           Stress and Chariot HP Throughput
       Fixes: (RV2P)
           When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) 
           mode in rbdc, rx BD got overwritten some of the time.  RV2P needs 
           to keep track of transition between the two modes and acts 
           accordingly.


    ***** TCP offload/L2 *****

    Bug fixes:

    1. Problem: 
            Cont00034261 - 5709 fails Sparta TCP_OutOfOrder test script
       Fixes: (COM)
            Took out a check for UPLOAD REQUEST for OOO in last release. Need 
            to put it back in.
            
    2. Problem: 
            Minor bug in comparing Seq Num.
       Fixes: (COM)
            Change < to SEQ_LT() in congestion_ctrl code.

    3. Problem:
            TOE stack receives a segment with TCP timestamp option and TsValue 
            of 0. It then receives a segment with TsValue of 0x80000000 and 
            accepts the second segment by ACKing it even though 0x80000000 < 0
       Fixes: (RXP)
            Removed errenous TsValue of 0x80000000 check rule. 

    4. Problem:
            W2K3 Sparta failed in StateNonConformance and ZeroWindow at version 
            4.4.7.
       Fixes: (RXP)
            Selectively perform the change introduced in version 4.4.7.

    5. Problem:
            When L4 buffer is posted immediately before requesting upload, the 
            upload request reached RV2P before the mail event.  That causes 
            RV2P to drop the L4 buffer post.
       Fixes: (CP)
            According to LSI, that is indeed possible for 5709.  The firmware 
            need to compare the hostbseq in the context to the one specified
            in wqe.  We need to reject the upload request if it does not match.



Version 4.4.5 (Mar 9, 2008)
===========================

   Fixes:
   ------

   1. Problem: CQ#33835, #33794
         Chariot reports Error 202 when running the High Performance Throughput
         test script configured to transfer large buffers (1MB or larger).
         Problem is seen when TOE is being toggled.

      Cause:
         When a connection is uploaded, the driver may not set the correct
         completion status on a buffer if only part of it is present in the
         BD chain.  The completion status should be UPLOAD_IN_PROGRESS instead
         of SUCCESS.


   BCM5706/08 Firmware v4.4.7
   --------------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: CQ34142
           w2k8 x64: system break when running bidirectional offload stress
           test on both Xinan ports.
      Fixes: (RXP, COM)
           When transition to CLOSING state, TOE stack shouldn't request upload
           until it reaches TIME_WAIT state. When receive a disc request and an
           abort request back to back, COM should complete the disc request
           with status SC_CONNECTION_ABORT. 


   BCM5709 Firmware v4.4.7
   -----------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: CQ34142
           w2k8 x64: system break when running bidirectional offload stress
           test on both Xinan ports.
      Fixes: (RXP, COM)
           When transition to CLOSING state, TOE stack shouldn't request upload
           until it reaches TIME_WAIT state. When receive a disc request and an
           abort request back to back, COM should complete the disc request
           with status SC_CONNECTION_ABORT. 


   BCM5706/08 Firmware v4.4.6
   --------------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: CQ34123
           TDMA stalled when running bi-dir sockdie stress and offload stress
           test. Apparently, TXP is writing a ftq message with 
           TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT bit set to TDMA even when host
           didn't post any bytes to send. This bit will cause TDMA to stall
           when fetching BD since BD is not in the cache or in the host. 
      Fix:(TXP)
           Reset TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT in ftq message when host_bseq
           is 0.


   Enhancement:

   1. Request:
           Support OOO FIN.
      Changes: (RXP, RV2P, COM)
           OOO FIN algorithm added and it is compliance to LH sparta from
           initial testing. This feature is currently defaulted to off until
           more stress testing are done.

   2. Request: CQ#31456
         Change "Jumbo MTU" to "Jumbo Packet" for the description of the
         jumbo frame configuration.



   BCM5709 Firmware v4.4.6
   -----------------------

   ***** iSCSI offloa *****

   Enhancement:

   1. Added BACS and licensing support to enforce max iSCSI and TOE connections
   2. Increased max number of iSCSI connections from 64 to 128


   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: CQ34123
           TDMA stalled when running bi-dir sockdie stress and offload stress
           test. Apparently, TXP is writing a ftq message with 
           TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT bit set to TDMA even when host
           didn't post any bytes to send. This bit will cause TDMA to stall
           when fetching BD since BD is not in the cache or in the host. 
      Fix:(TXP)
           Reset TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT in ftq message when host_bseq
           is 0.


    Enhancement:

    1. Added BACS and licensing support

    2. Request:
            Support OOO FIN.
       Changes: (RXP, RV2P, COM)
            OOO FIN algorithm added and it is compliance to LH sparta from
            initial testing. This feature is currently defaulted to off until
            more stress testing are done. 



Version 4.4.4 (Mar 4, 2008)
===========================

   Fixes:
   ------

   1. Problem: CQ#32753
         PCI-e slot power does not turn off after NDIS driver is stopped.

      Cause:
         The bus driver is reporting to the device manager that the child
         devices are Eject Supported and Removable in the device capabilities
         structure.

      Fix:
         The bus driver needs to report that the child device is not
         EjectSupported and Removable.


   2. Problem: CQ#33978
         Checked driver breaks when running sockdie on Xinan.

      Cause:
         There is an assertion in the driver that checks for valid
         lm_tcp_buffer_t flag on completion.  This assertion is not always
         valid.

      Fix:
         Removed the assertion.


   3. Problem: CQ33831
         Low Network Performance when Running Chariot HPT Test Script with 
         Socket I/O Size of 1MB and Greater.

      Cause:
         With Large I/O size, it takes up too many RX BDs in the RX BD chain 
         and causes very slow AppScan performance by RDBC which means very
         slow throughput during receive. 

      Fix:
         Restrict l4_rx_bd_page_cnt to 1 page( 255 BDs) for RX BD chain. In
         addition, l4_tx_bd_page_cnt is restricted to 1 as well to conserve 
         runtime memory.


   BCM5706/08 Firmware v4.4.5
   --------------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: CQ34032
           There is a racing condition where COM and TXP could update the 
           tcp_state in the context at the same time and cause VBD to assert
           due to inconsistent tcp state value during upload.
       Fix: (COM)
           Added context lock protection so both COM and TXP can access the 
           context atomically. 


   2. Problem: CQ34031
           A bug was introduced few versions ago when trying to optimize the 
           RV2P P1 code. In some occasions, the RV2PTQ is not popped properly.
       Fix: (RV2P)
           Undo that optimization change. 


   BCM5706/08 Firmware v4.4.4
   --------------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: 
           When remote acknowledged the FIN, TOE stack didn't complete the pending
           disconnect request with SC_SUCCESS status in a corner case where
           TOE stack is requesting upload at the same time and causing VBD to 
           assert.
      Fix: (COM)
           Complete the pending disconnect request with SC_SUCCESS in this
           corner case. 


   Enhancement:

   1. Request:
           Relax TCP nagle algorithm when a single BD with start and end bit 
           holds more than MSS bytes.
      Changes: (TXP)
           Added detection of BD size during BD scan. If a BD with start and
           end bit holds more than MSS bytes. TCP Nagle algorithm will get
           large BD indication so it can decide whether to apply Nagle 
           accordingly.

   2. Request:
           Support VBD tx partial buffer posting when a large socket I/O size 
           occupy more than the entire TX BD chain.
      Change: (TXP)
           Added support of tracking host tx buffer post based on 
           TX_BD_FLAGS_SW_END bit instead of TX_BD_FLAGS_END bit in BD flag.

   3. Request:
           Firmware must fail ipv6 offload attempt since 5706/8 doesn't
           support ipv6 offload.
      Change: (CP)
           Added ipv6 offload detection and firmware won't allow connection 
           to be offloaded if detected ipv6. 


   BCM5709 Firmware v4.4.5
   -----------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: CQ34032
           There is a racing condition where COM and TXP could update the 
           tcp_state in the context at the same time and cause VBD to break
           due to inconsistent tcp state during upload.
       Fix: (COM)
           Added context lock protection so both COM and TXP can access the 
           context atomically. 


   2. Problem: CQ34031
           A bug was introduced few versions ago when trying to optimize the 
           RV2P P1 code. In some occasions, the RV2PTQ is not popped properly.
       Fix: (RV2P)
           Undo that optimization change. 


   BCM5709 Firmware v4.4.4
   -----------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: 
           When remote acknowledged the FIN, TOE stack didn't complete the pending
           disconnect request with SC_SUCCESS status in a corner case where
           TOE stack is requesting upload at the same time and causing VBD to 
           assert.
      Fix: (COM)
           Complete the pending disconnect request with SC_SUCCESS in this
           corner case. 
   

   Enhancement:

   1. Request:
           Relax TCP nagle algorithm when a single BD with start and end bit 
           holds more than MSS bytes.
      Changes: (TXP)
           Added detection of BD size during BD scan. If a BD with start and
           end bit holds more than MSS bytes. TCP Nagle algorithm will get
           large BD indication so it can decide whether to apply Nagle 
           accordingly.
          
   2. Request:
           Support VBD tx partial buffer posting when a large socket I/O size 
           occupy more than the entire TX BD chain.
      Change: (TXP)
           Added support of tracking host tx buffer post based on 
           TX_BD_FLAGS_SW_END bit instead of TX_BD_FLAGS_END bit in BD flag.



Version 4.4.3 (Feb 18, 2008)
============================

   Fixes:
   ------

   1. Problem: CQ#33688, #33844
         Break in the driver verifier on the call to ObReferenceObjectByHandle.

      Cause:
         The break occurs because the thread handle passed to this call
         maybe invalid since the scope of the handle is only valid within
         the same process.  The thread that calls ObReferenceObjectByHandle
         belongs to a different process than the thread that created the
         handle.

      Fix:
         Once a thread handle is created, ObReferenceObjectByHandle is called
         immediately on the same thread to create the object handle.


   2. Problem: CQ#33086, #33676
         Intermittent and explained failures could occur during driver
         load/unload test.
      
      Cause:
         Indirect register access is not protected with a spinlock.  So reads
         and writes to the offset/data register pair are not atomic.  This
         could lead to explained behavior.


   3. Problem: CQ#33834
         Check driver asserts when receiving larger I/Os on an offloaded
         connection.

      Cause:
         The assertion in the driver is not valid when tcp buffers are
         aborted when we receive a TCP FIN or a RESET.



   BCM5706/08 Firmware v4.4.3
   --------------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem:
           During retx, TOE appears to retransmit un-necessary ACKed packets.
      Fix: (COM)
           TOE stack should always rewind to the latest snd_una if snd_una > 
           snd_nxt to avoid retx ACKed packets as the snd_una get updated from
           each new ACK arrives from the remote during retransmission.
            
   2. Problem:
           CQ33290: IPv6 offload: connection timed out when running bi-dir 
           offloadstress.
           Read data on one RBDC channel is passing read data on the other 
           channel, which causes the Valid flags in the RBDC cache to become 
           incorrect, and this leads to a stale BD being passed to RV2P.
      Fix: (RV2P)
           Firmware fix is put in RV2P P1 to avoid preempting P2 in reading BD 
           of the same CID. RV2P version updated to be 2.4.0
           
   3. Problem:
           TOE stack is not completing the pending disconnect request during 
           connection upload in some cases causing MSFT LH stack to assert. 
      Fix: (COM)
           Added disconnect request check prior to writing upload completion
           kcqes. TOE stack will complete any pending disconnect request
           with proper status code according to current TCP state. 

   4. Problem:
           When TOE stack updates the snd_una after remote ACKed the FIN,
           it didn't reset the DupAckCount if it is not 0. This causes 
           LH MSFT stack to assert since it expects the DupAckCount to 0.
       Fix: (COM)
           Reset DupAckCount when TOE stack updates the snd_una after remote
           ACKed the FIN. 



   BCM5709 Firmware v4.4.3
   -----------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem:
           During retx, TOE appears to retransmit un-necessary ACKed packets.
      Fix: (COM)
           TOE stack should always rewind to the latest snd_una if snd_una > 
           snd_nxt to avoid retx ACKed packets as the snd_una get updated from
           each new ACK arrives from the remote during retransmission.

   2. Problem:
           CQ33290: IPv6 offload: connection timed out when running bi-dir 
           offloadstress.
           Read data on one RBDC channel is passing read data on the other 
           channel, which causes the Valid flags in the RBDC cache to become 
           incorrect, and this leads to a stale BD being passed to RV2P.
      Fix: (RV2P)
           Firmware fix is put in RV2P P1 to avoid preempting P2 in reading BD 
           of the same CID. RV2P version updated to be 2.4.0

   3. Problem:
           TOE stack is not completing the pending disconnect request during 
           connection upload in some cases causing MSFT LH stack to assert. 
      Fix: (COM)
           Added disconnect request check prior to writing upload completion
           kcqes. TOE stack will complete any pending disconnect request
           with proper status code according to current TCP state.

   4. Problem:
           When TOE stack updates the snd_una after remote ACKed the FIN,
           it didn't reset the DupAckCount if it is not 0. This causes 
           LH MSFT stack to assert since it expects the DupAckCount to 0.
       Fix: (COM)
           Reset DupAckCount when TOE stack updates the snd_una after remote
           ACKed the FIN. 



Version 4.4.2 (Feb 8, 2008)
===========================

   Fixes:
   ------

   1.  Problem: CQ#33560
          Utilization bounces between <1% - 25%  resulting in poor 
          performance when running a single UDP stream. 
          
       Cause:
          tx_comp_trig is too high for one direction tx traffic.


   2.  Problem:
          TCP delegated state variable dup_ack_count was not passed to the
          firmware when a connection offloads and the firmware does not
          pass the value back to the driver when a connection uploads.


   3.  Problem:
          Extremely large receive request could cause the chip to stall.

       Cause:
          Rv2p requires an entire receive request to be in BD chain.  In other
          words the BD chain must have the END bit set otherwise it will stall.

       Fix:
          The driver will break the larger request install smaller requests.


   4.  Problem: CQ#33216
          iSCSI stack does not have mechanism for handling STOP request.

       Fix:
          The bus driver will fail STOP_QUERY on the iSCSI PDO.
   

   Enhancement:

   1.  Reduce per-connection memory footprint for BD chain by 20k.

   2.  Call ObReferenceObjectByHandle to create thread object immediately
       after creating the thread handle in the call to PsCreateSystemThread.
       Currently we are calling ObReferenceObjectByHandle when the driver
       unloads which could pose problems related to driver verifier.



   BCM5706/08 Firmware v4.4.2
   --------------------------

   ***** iSCSi Offload *****

   Fixes:
       Changed option2 RST flow in firmware to avoid a possible race and to 
       send the driver a completion only after all the connection resources 
       have been flushed from the chip. This change does not affect the HSI 
       and is internal to firmware.


   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: 
           RV2P could drop in-order L4 packets even generic buffer is not
           completely used up.
      Fix: (RV2P)
           Implemented correct logic to do generic buffer comparison in 
           RV2P.
         
   2. Problem:
           CQ33744 - When RSS is enable, duplicate broadcast/multi-cast 
           packets are seen when using software sniffer. 
       Fix: (RXP)
           During RX, route broadcast/multi-cast packets to RSS rings only 
           when RSS is enable and do not route packet to L2 ring.
          
   3. Problem:
           CQ33727- Formatting a iSCSI target at 512 partition size will hang
           if TOE is enabled on SUT. With 32 block of 512 bytes IO size, host 
           will post a buffer of 16384 bytes and this translated to 11 
           1460-byte packets and 1 324-bytes packet. Due to delay ack and tcp 
           nagle mechanism, TOE stack will coalesce the 324-bytes packet 
           until delay ack timeout. This greatly impacted the formatting 
           speed.
      Fix: (TXP)
           Only apply tcp nagle algorithm to small buffer that is less than
           MSS. This is consistent with MSFT host stack behavior. 

   4. Problem:
           MSFT Stack will assert if TOE stack completed a pending disconnect
           request with ABORT status without indicate tcp abort afterward.
      Fix: (COM)
           TOE stack will complete the pending disconnect request with SUCCESS
           status while the connection is being uploaded. 

   5. Problem: 
           RV2P hangs in Jumbo frame mode in BSD.
      Fix: (RV2P)
           Need to support BD page pointer at the end of BD page.


   Enhancement:

   1. Request:
           Support estimation of TCP round trip delay time using tcp time
           stamp values when tcp time stamp option is enabled. 
      Change: (RXP/COM)
           TOE receive path and tcp retransmission timeout.

   2. Request:
           Re-implement previous change(see CQ#33580)that place the OOO
           packet to the generic buffer until generic buffer is totally 
           used up. 
      Change: (RV2P)
           TOE receive mode when host doesn't post enough receive buffer.

   3. Request:
           Support different BD page size other than 4K only. 
      Change: (RV2P)
           Allow Host to modify BD page size by passing parameters in RV2P 
           code memory.

   4. Request:
           Support processing of tcp delegate variable DupAckCount.
      Change: (CP/COM)
           At offload, TOE stack now accepts DupAckCount value from host. At
           upload, TOE stack pass up its own DupAckCount value back to host. 


   BCM5709 Firmware v4.4.2
   -----------------------

   ***** iSCSi Offload *****

   Fixes:

   1. Fixed option 2 RST send: chip now doesn't write 3 redundant KCQEs 
      (upload completion)as a reply to option 2 RST send request.


   ***** TCP offload/L2 *****

   Bug fixes:

   1. Problem: 
           RV2P could drop in-order L4 packets even generic buffer is not
           completely used up.
      Fix: (RV2P)
           Implemented correct logic to do generic buffer comparison in 
           RV2P.

   2. Problem:
           CQ33744 - When RSS is enable, duplicate broadcast/multi-cast 
           packets are seen when using software sniffer. 
      Fix: (RXP)
           During RX, route broadcast/multi-cast packets to RSS rings only 
           when RSS is enable and do not route packet to L2 ring.

   3. Problem:
           CQ33727- Formatting a iSCSI target at 512 partition size will hang
           if TOE is enabled on SUT. With 32 block of 512 bytes IO size, host 
           will post a buffer of 16384 bytes and this translated to 11 
           1460-byte packets and 1 324-bytes packet. Due to delay ack and tcp 
           nagle mechanism, TOE stack will coalesce the 324-bytes packet 
           until delay ack timeout. This greatly impacted the formatting 
           speed.
      Fix: (TXP)
           Only apply tcp nagle algorithm to small buffer that is less than
           MSS. This is consistent with MSFT host stack behavior.

   4. Problem:
           MSFT Stack will assert if TOE stack completed a pending disconnect
           request with ABORT status without indicate tcp abort afterward.
      Fix: (COM)
           TOE stack will complete the pending disconnect request with SUCCESS
           status while the connection is being uploaded. 

   5. Problem: 
           RV2P hangs in Jumbo frame mode in BSD.
      Fix: (RV2P)
           Need to support BD page pointer at the end of BD page.
    

   Enhancement:

   1. Request:
           Support estimation of TCP round trip delay time using tcp time
           stamp values when tcp time stamp option is enabled.
      Change: (RXP/COM)
           TOE receive path and tcp retransmission timeout.

   2. Request:
           Re-implement previous change(see CQ#33580)that place the OOO
           packet to the generic buffer until generic buffer is totally 
           used up. 
      Change: (RV2P)
           TOE receive mode when host doesn't post enough receive buffer.

   3. Request:
           Support different BD page size other than 4K only. 
      Change: (RV2P)
           Allow Host to modify BD page size by passing parameters in RV2P 
           code memory.

   4. Request:
           Support processing of tcp delegate variable DupAckCount.
      Change: (CP/COM)
           At offload, TOE stack now accepts DupAckCount value from host. At
           upload, TOE stack pass up its own DupAckCount value back to host.



Version 4.4.1 (Jan 23, 2008)
============================

   Fixes:
   ------

   1.  Problem: CQ#33545
          Some OEM names are present in release.txt.

       Fix:
          Removed references to OEM names.


   2.  Problem: CQ#33570
          The assertion that valid the new receive index in the status
          block is not complete correct.

       Fix:
          The code was modified to break if the difference between the
          stale and the current receive index is greater than 0x8000.


   Enhancement:
    
   1. CQ#32971: Automate the F6 INF for VBD with each driver release.


   BCM5706/08 Firmware v4.4.1
   --------------------------

   ***** TCP offload/L2 *****

   1. Problem: CQ#33580 - While continuously toggling TOE, SUT encounters 
               BSOD (0xD1) for DRIVER_IRQL_NOT_LESS_OR_EQUAL, when running 
               bi-directional Chariot traffic to both ports simultaneously.

      Cause:   The RV2P changes related to generic buffer placement involving 
               OOO packet in previous release is not bullet proof. 

      Changes: undo this change and further investigate a proper fix.

      Impact:  RV2P/TOE receive path. LH sparta test tcp_windowscaling will
               be impacted as the result of undoing this change. 


   ***** iSCSi Offload *****

   Fixes:

   1. Problem: CQ#33548 - VBD became non-responsive when iSCSi OIS driver 
               is loaded. 
      
      Cause:   The iSCSi firmware in CP is still writing to the TPAT HSI
               area with hard code offset that didn't take account for the
               recent 1k code space move in TPAT.

      Changes: The offset value is now adjusted to take account for the 1k
               move.

      Impact:  CP processor and iSCSi firmware command path. 


   BCM5709 Firmware v4.4.1
   -----------------------

   ***** TCP offload/L2 *****

   1. Problem: CQ#33580 - While continuously toggling TOE, SUT encounters 
               BSOD (0xD1) for DRIVER_IRQL_NOT_LESS_OR_EQUAL, when running 
               bi-directional Chariot traffic to both ports simultaneously.

      Cause:   The RV2P changes related to generic buffer placement involving 
               OOO packet in previous release is not bullet proof. 

      Changes: undo this change and further investigate a proper fix.

      Impact:  RV2P/TOE receiv path. LH sparta test tcp_windowscaling will
               be impacted as the result of undoing this change.


   ***** iSCSi Offload *****

   Fixes:

   1. Problem: CQ#33548 - VBD became non-reponsive when iSCSi OIS driver 
               is loaded. 
      
      Cause:   The iSCSi firmware in CP is still writing to the TPAT HSI
               area with hard code offset that didn't take account for the
               recent 1k code space move in TPAT.

      Changes: The offset value is now adjusted to take account for the 1k
               move.

      Impact:  CP processor and iSCSi firmware command path.



Version 4.4.0 (Jan 20, 2008)
============================

   Fixes:
   ------

   1.  Problem: CQ#33101
          WUDFUpdate_01005.dll Accompanies Teton VBD Driver but is Not 
          Referenced in Driver INF

       Fix:
          Not copy WUDFUpdate_01005.dll


   2.  Problem: CQ#32944
          BCM5709B0: Traffic generation fails when resuming from S4 
          if UMP is enabled.

       Cause:
          The register indirect access was not enabled when the chip 
          comes back from S3/S4.

       Fix:
          Enable the register indirect access when going to D0 
          before submitting WAIT0 to boot code.


   3.  Problem: CQ#33470
          High CPU utilization when RSS is enabled.

       Cause:
          Interrupt moderation was not enabled for the 8 per-processor status
          blocks.  These status block updates are independent of the default
          status block and any one of them could generate an interrupt.

       Fix:
          Enable interrupt moderation on the 8 per-processor status blocks.


   BCM5706/08 Firmware v4.4.0
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Problem: The very first out of order packet could get dropped when
               the receive window is larger than 512k and host didn't 
               immediately post receive buffer during RX. 

      Cause:   Due to L4 context variable limitation, RV2P is only able
               to recognize generic buffer up to 512k. When it received an 
               OOO packet with sequence number that is on the right side of
               the receive window that is greater than 512k and host hasn't
               post any receive buffer, RV2P will drop the packet because it 
               thinks that there is no enough room in generic buffer even
               though no data is being to place in generic buffer yet. 

    Changes:   RV2P now continue to place the OOO packet to the generic buffer
               until the generic buffer is totally used up.

    Impact:    RV2P/TOE receive path.


    Enhancement:
    
    1. Request: need more code space in TPAT for on-going firmware development.
       
       Changes: Take back 1K of code space from iSCSi boot persist information 
                area in TPAT. TPAT datapath firmware will start at spad offset 
                at 0x400 instead of at 0x800. 

       Impact:  VBD need to change since starting address of HSI variables for 
                TPAT processor gets move up by 0x400. 


   BCM5709 Firmware v4.4.0
   -----------------------

   ***** TCP offload/L2 *****
   Bug Fixes:

   1. Problem: The very first out of order packet could get dropped when
               the receive window is larger than 512k and host didn't 
               immediately post receive buffer during RX. 

      Cause:   Due to L4 context variable limitation, RV2P is only able
               to recognize generic buffer up to 512k. When it received an 
               OOO packet with sequence number that is on the right side of
               the receive window that is greater than 512k and host hasn't
               post any receive buffer, RV2P will drop the packet because it 
               thinks that there is no enough room in generic buffer even
               though no data is being to place in generic buffer yet. 

      Changes: RV2P now continue to place the OOO packet to the generic buffer
               until the generic buffer is totally used up.

      Impact:  RV2P/TOE receive path.


    Enhancement:
    
    1. Request: need more code space in TPAT for on-going firmware development.
       
       Changes: Take back 1K of code space from iSCSi boot persist information 
                area in TPAT. TPAT datapath firmware will start at spad offset 
                at 0x400 instead of at 0x800. 

       Impact:  VBD need to change since starting address of HSI variables for 
                TPAT processor gets move up by 0x400.



Version 4.1.3 (Jan 10, 2008)
============================

   Enhancement:

   1.  Embed digital signature with the binary.


   BCM5706/08 Firmware v4.1.1
   --------------------------

   ***** iSCSI offload *****

   HSI change:
       iSCSI init offload now expects 5 KWQEs for IPv4 offload connection -
       same as TOE

   Enhancements:
       Changed timer4 resolution from 1 second to 100ms. Shortened Keepalive
       timeout to 15 mins.


   ***** TCP offload/L2 *****

   Bug fixes:

   1. Fixed up FIN_WAIT2 timer mechanism so tcp connection gets aborted after
      staying idle in FIN_WAIT2 state for 120 seconds (LH sparta requirement).

   2. During handling update tcp kwqe, firmware must detect whether
      tcp_timestamp flag is set for the first time. If it is, firmware must
      increase the tcp_hlen to accomodate the tcp time stamp option since there
      is no space in update tcp kwqe to pass down the updated tcp_hlen from
      host. 
    
   Enhancement (LH sparta requirement):

   1. Modified the TCP urgent flag handling so TOE stack will do some limited
      TCP urgent processing instead of blindly upload the connection to host
      stack.


   BCM5709 Firmware v4.1.1
   -----------------------

   ***** iSCSI offload ******

   HSI changes:
       1. iSCSI init offload now accepts 5 KWQEs for IPv4 and 6 KWQEs for IPv6 -
          same as TOE.

   Enhancement:
       1. Changed timer4 resolution from 1 second to 100ms
                

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Fixed up FIN_WAIT2 timer mechanism so tcp connection gets aborted after
      staying idle in FIN_WAIT2 state for 120 seconds.

   2. During handling update tcp kwqe, firmware must detect whether
      tcp_timestamp flag is set for the first time. If it is, firmware must
      increase the tcp_hlen to accomodate the tcp time stamp option since there
      is no space in update tcp kwqe to pass down the updated tcp_hlen from
      host.
    

   Enhancement:

   1. Modified the TCP urgent flag handling so TOE stack will do some limited
      TCP urgent processing instead of blindly upload the connection to host
      stack.



Version 4.1.2 (Jan 4, 2008)
===========================

   Fixes:
   ------

   1.  Problem: CQ#33219
          NDIS6 miniport checked driver could assert because the bus driver
          could indicate transmit completion with packet descriptors from
          different miniport transmit queues.

       Fix:
          In the call to l2_indicate_tx, the bus driver ensure all the 
          packets are coming from the same descriptor queue.


   2.  Fix: CQ#33241
          Changed "Windows Server 2003" to "Windows Server 2000, 2003 and 2008".



Version 4.1.1 (Jan 2, 2008)
===========================

   BCM5706/08 Firmware v4.1.0
   --------------------------

   ***** TCP offload/L2 *****

   Enhancement:

   1. Don't allow header split during Linux jumbo packet place when the packet
      header len is greater than skb_buf_size.
    

   ***** iSCSI offload *****

   Bug Fixes:

   1. CQ#32815: Ignore out-of-order OFFLOAD_CONN2
   2. CQ#32816,CQ#33191: fixed cam_inuse leak when an iSCSI connection is
      created and destroyed without tcp_upload


   BCM5709 Firmware v4.1.0
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. CQ#30942 - Fixed a problem where CAM entry is not getting invalidate in
      IPV6 mode. 
    
   Enhancement:
    
   1. Don't allow header split during Linux jumbo packet place when the packet
      header len is greater than skb_buf_size.
    

   ***** iSCSI offload ******

   Bug fixes 

   1. CQ#32815, CQ#32816: Replaced cam_inuse global variable with GRC field 
      free_count. Ignore out-of-order OFFLOAD_CONN2.



Version 4.1.0 (Dec 19, 2007)
============================

   1.  Problem: CQ#33049
          System will blue screen if an intermmediate driver submits an
          offload request even though the driver does not advertise 
          TOE capability.

       Cause:
          The driver does not expect an offload request if it does not
          advertise TOE capability.  In this case, certain device structure
          is not initialized which resulted in a NULL pointer reference.

       Fix:
          Modified the driver to gracefully fail the offload request.


   Enhancement:

   1.  Enable support of location string.



Version 4.0.7 (Dec 11, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#32871
          BSOD BAD_POOL_CALLER (C2) when loading VBD 4.0.6

       Fix:
          Not use a static buffer for the location string.


   Enhancement:

   1.  The support of location string is disable for this version.
   2.  cq#33007 - Enable flow control by default.



Version 4.0.6 (Dec 7, 2007)
===========================

   Fixes:
   ------

   1.  Problem:
          Workaround for CQ#28189 needs to take affect for BCM5709Bx.
          Currently it is only applied to Ax silicon.


   2.  Problem: CQ#30504
          BCM5706S may not get a link down event.

       Fix:
          Added a workaround to detect and force a link down event.



   Enhancement:

   1.  Include BCM5706/08 rv2p v1.8.0.
   2.  Include BCM5709Ax rv2p v1.10.0.
   3.  Include BCM5709Bx rv2p v1.3.0.
   4.  Support location string.


   BCM5706/08 Firmware v4.0.5
   --------------------------

   ***** iSCSI offload *****
    
   Enhancement:

   1. Added R2T queue fairness 
   2. Removed the FF_PHASE redundant init (rxp/cp race) 
   3. Removed old EVENT_COALESCING flag and added new ISCSI_EC_COLASECE_NOW
      compilation flag


   BCM5709 Firmware v4.0.5
   -----------------------

   ***** iSCSI offload ******

   Bug Fixes:
    
   1. Recalculate cache_key to be unique per connection per task.

   Enhancement:
    
   1. Added R2T queue fairness. 
   2. Removed the FF_PHASE redundant init (rxp/cp race) 
   3. Removed old EVENT_COALESCING flag and added new ISCSI_EC_COLASECE_NOW
      compilation flag.



Version 4.0.5 (Dec 4, 2007)
===========================

   Fixes:
   ------

   1.  Problem: CQ#32797
          A crash may occur on BCM5709 when resuming from S3/S4.

       Cause:
          The per-processor status block does not get cleared during 
          a driver reset.


   2.  Problem: CQ#32871
          A kernel event that is referenced by a thread is initialized after
          the thread is created.  This could cause the thread to reference
          an uninitialized event structure.

       Fix:
          Initialize the kernel event before creating a thread.


   Enhancement:

   1.  Include BCM5706/08 rv2p v1.6.0.


   BCM5706/08 Firmware v4.0.4
   --------------------------

   ***** iSCSI offload *****

   Bug fixes:

   1. Set task_cache_key to be unique per connection per task to solve data 
      corruption problem caused by same cache_key per connection.



   BCM5709 Firmware v4.0.4
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. cq#32833 - Fixed problem with RSS when the indirection table size
      is 0x80.  RSS is supposed to fail if indirection table is greater
      than 0x80 not equal to 0x80.

   2. cq#32812 - Fixed TPAT assertion due to lack of LSO context space to
      support all 8 tx rings when RSS is enabled.


   ***** iSCSI offload ******

   Enhancement:

   1. Added IPV6 support. 



Version 4.0.4 (Nov 28, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#32684
          Cannot re-establish iSCSI connection after coming out of S3/S4
          sleep state.

       Cause:
          Workitem thread does not get restarted after coming out S3/S4 state.

   2.  Problem: CQ#32676, #32559
          System hangs going into standby during 2m_wolmagicpacket test.

       Cause:
          A wrong parameter was passed to ObReferenceObjectByHandle in the
          kill_system_thread routine.


   Enhancement:

   1.  Add support for BCM5709 IPv6 RSS.


   BCM5706/08 Firmware v4.0.3
   --------------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Fixed the division function in com_tcp.c so it won't multiply the final 
      result by 2 and causes the cwin calculation during congestion
      avoidance(LH sparta test) to be incorrect.

   2. Fixed a bug where l4ctx_smss_mul is not being calculated properly in CP.
    

   ***** iSCSI offload *****

   Bug fixes:

   1. Changed status block updates to avoid spurious status block generations. 


   BCM5709 Firmware v4.0.3
   -----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Fixed the division function in com_tcp.c so it won't multiply the final
      result by 2 and causes the cwin calculation during congestion
      avoidance(LH sparta test) to be incorrect. 

    2. Added status block update in CP when processing KWQE to support MSI-X.

    Enhancement:

    1. Added hardware and IPV6 RSS support.



Version 4.0.3 (Nov 23, 2007)
=============================

   Enhancement:

   1.  Changed product version to 12.0.

   2.  Add support for BCM5709 IPv4 RSS.


   BCM5706/08 Firmware v4.0.2
   --------------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Subtract the extra 2 padding bytes inserted by the hardware when writing
      the data offset to RV2PQ during Linux jumbo place.

   Enhancement:

   1. Default RXP flood field in RXP HSI to only enable L2 normal receive ring.
      Host driver will enable iSCSi and RDMA L2 ring enable bits as needed.


   BCM5706/08 Firmware v4.0.1
   ---------------------

   ***** TCP offload/L2 *****

   Bug fixes:
    
   1. CQ32038 - Make sure to update the rcv_win_seq first before updating
      rcv_next to avoid RXP assertion where rcv_next seq could get ahead of
      rcv_win_seq. 
    
   Enhancement:
    
   1. Added handling of Hole_Filling/Hole_Filled bits support in COM with the
      new RV2P support. In addition, removed the hole filling detection
      mechanism from COM since the RV2P handles it now. 

   2. Removed the OOO push pkt drop workaround since RV2P handles it properly
      now.

   3. Officially added the Linux jumbo packet support in RXP and COM in
      conjunction with the new RV2P. 
   
   Enhancement:

   1. Added Linux Jumbo packet support. 


   ***** iSCSI offload *****

   Bug fixes:

   1. Update the SGL flush command by forwarding a shift value of the task
      cache key into the RV2P.


   BCM5709 Firmware v4.0.2
   ---------------------

   ***** TCP offload/L2 *****

   Bug Fixes:
    
   1. CQ32585 - Merged in RXP changes from v3.7.1 so IPMI can be properly 
      supported.  
    
   2. Subtract the extra 2 padding bytes inserted by the hardware when writing
      the data offset to RV2PQ during Linux jumbo place. 

   Enhancement:

   1. Added RSS support when handling l2_complete in COM. 



Version 4.0.2 (Nov 20, 2007)
=============================

   Fixes:
   ------

   1.  Problem: CQ#32629
          Driver asserts during the loading of the iSCSI offload driver.

       Cause:
          The context passed to l4sc_get_dma_adapter is fdo_extension_t instead
          pdo_extension_t.



Version 4.0.1 (Nov 20, 2007)
=============================

   Fixes:
   ------

   1.  Problem: CQ#32503
          The driver crashes on unload.

       Cause:
          A system thread is not properly terminated when the driver unloads.


   1.  Problem: CQ#32572
          Unable to pass traffic on BCM5709Ax.

       Cause:
          The RV2P microcode was not complete downloaded to the chip during
          initialization.


   Enhancement:

   1.  Include BCM5706/08 rv2p v1.5.0.  This version includes Linux Jumbo Packet
       support, Out-Of-Order Push packets, and the Hole_Filling/Hole_Filled
       bits.

   2.  Include BCM5709Ax rv2p v1.8.0.  This version includes Linux Jumbo Packet
       support, Out-Of-Order Push packets, and the Hole_Filling/Hole_Filled
       bits.

   3.  Include BCM5709Bx rv2p v1.1.0.  This version includes Linux Jumbo Packet
       support, Out-Of-Order Push packets, and the Hole_Filling/Hole_Filled
       bits.

   4.  Disable iSCSI PDO enumeration on BCM5709A0/A1.  Also disable WSD PDO
       enumeration on all the devices for now.

   5.  Reduce the default number of receive descriptors from 400 to 200 per
       receive queue.



   BCM5709 Firmware v4.0.1
   ---------------------

   ***** TCP offload/L2 *****

   Bug fixes:
    
   1. Make sure to initialize TOE ctx variable last_ack_sent in order for TOE
      tcp time stamp to work properly. 

   Enhancement:
    
   1. Added TSS CID support. 

   2. Added handling of Hole_Filling/Hole_Filled bits support in COM with the
      new RV2P support. In addition, removed the hole filling detection 
      mechanism from COM since the RV2P handles it now. 

   3. Removed the OOO push pkt drop workaround since RV2P handles it properly 
      now.

   4. Added Linux Jumbo Packet support. 


   ***** iSCSI offload ******

   Bug fixes:
    
   1. Update the SGL flush command by forwarding a shift value of the task cache 
      key into the RV2P.

   Enhancement:

   1. Added msi-x support(SB number).
   2. Initialize the RQ flush message handler to be "nop_complete".



Version 4.0.0 (Nov 12, 2007)
=============================

   Fixes:
   ------

   1.  Problem: CQ#32166
          5708 WOL: AUT will show link when in sleep state for first time 
          after reboot, when "Allow this device to wake comp" is unchecked.

       Cause:
          This happens on Vista and not on w2k3. In Vista, VBD's wol is set 
          by OID_PNP_ENABLE_WAKE_UP from NDIS even wol is disable.

       Fix: 
          Use another information to enable wol. 


   Enhancement:

   1.  Support two different version of BCM5709 Rv2p.  One version is for
       BCM5709Ax and other is BCM5709Bx.

   2.  Added support for context structure changes for BCM5709.
       

   BCM5706/08 Firmware v4.0.0
   ---------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Keep Alive Timer should only be started if the packet received is valid.

   2. During connection offload, make sure the cwin is at least one MSS.
      Otherwise, TOE small pkt coalescing algorithm will stall the tx since
      it expects the pkt to be at least 1 mss size if it is not end of
      application buffer.

    Enhancement:

    1. CQ30149 - Add Support for Routing Received Frames to Multiple RX Chains
       Based on the MAC Address.


   ***** iSCSI offload *****

   Bug fixes:

   1. Change the calculation of CQE_SEQ in CQE_VALIDTE function.
   2. Report an error in case sense data is longer than 256 bytes.
   3. TBDC deadlock.
   4. Identifying we are in the middle of receiving a PDU while cleanup
      request arrive.
   5. Handle the case where local completion CQE should be written as part of
      retransmission process. 
   6. Update the RQ consumer correctly when RQ placement is split over
      several TCP segments.

   Enhancement:

   1. Event coalescing - Determine if feature is enabled in RT and omit the
      use of aqm_cq.
   2. Change the retransmit timeout interval to 250 msec.
       

   BCM5706/08 Firmware v3.7.20
   ----------------------

   ***** TCP offload/L2 *****

   Bug fixes:
    
   1. During connection offload, make sure the offloaded cwin is at least one
      MSS.  Otherwise, TOE small pkt coalescing algorithm will stall the tx
      since it expects the pkt to be at least 1 mss size if it is not end of
      application buffer. 


   BCM5709 Firmware v4.0.0
   ---------------------

   ***** TCP offload/L2 *****
   
   Initial integration of the TOE with iSCSi firmware with all BCM5706/08 up to
   date changes.

   Enhancement:
   
   Add Support for Routing Received Frames to Multiple RX Chains Based on the 
   MAC Address (CQ30149).



Version 3.7.23 (Oct 17, 2007)
=============================

   Fixes:
   ------

   1.  Problem:
          F6 installation with Offload iSCSI hangs during system shutdown.

       Cause:
          Some code was paged out.

       Fix: 
          Changing all paged code to non-paged code in VBD.


Version 3.7.22 (Oct 16, 2007)
=============================

   Fixes:
   ------

   1.  Problem: CQ#31687
          Running BACS diagnostics on BCM5709 at 2.5 Gbps  results in link 
          to go down to 1.0 Gbps

       Fix:
          Enable autoneg_enable when setting up phy loopback.

   2.  Problem: CQ#31864
          5708s-B2, L4, Toggling TOE: Running Chariot FileSendShort test 
          script Results in TCP Socket Connection TimeOut on Tx Side.
       
       Cause:
          TCP offload variable snd_wl1 is mistakenly converted to OS tick.

       Fix: 
          Leave snd_wl1 value unchanged during connection upload. 


Version 3.7.21 (Oct 10, 2007)
=============================

   BCM5706/08 Firmware v3.7.19
   ----------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. Don't allow update of rcv_next from any L4 completion, L4 place or
      L4 generic buffer add operations in COM if the rcv_next in each of
      these records are less than the current rcv_next in TOE ctx. 


   ***** iSCSI offload *****

   Bug fixes:

   1. Added nop() to every DMA read stop to prevent iSCSi wqe corruption. 



Version 3.7.20 (Oct 8, 2007)
============================

   BCM5706/08 Firmware v3.7.18
   ----------------------

   ***** TCP offload/L2 *****

   Bug_fixes:

   1. Added a workaround to avoid out of order opaque record process that
      causes TOE stack intermittently not acking the FIN during connection
      tearing down. 
    

   ***** iSCSI offload *****

   Bug fixes:

   1. Updating ExpStatSn in the correct location when processing unsolicited
      PDUs.

   2. Handle the a case where CLEANUP request arrive in a middle of a Data-In
      PDU processing on the same task (due to target violation).



Version 3.7.19 (Oct 4, 2007)
============================

   BCM5706/08 Firmware v3.7.17
   ----------------------

   ***** TCP offload/L2 *****

   Bug fixes:

   1. TOE stack must drop out of order packet with lower timestamp value.
    
   2. Fixed a corner case such that TCP nagle algorithm should not prevent 
       a FIN packet with data size less than MSS to send out promptly.
    
   3. Added a workaround so RV2P won't drop out of order packet with PUSH
      flag set.  The real fix will need to come from RV2P firmware itself
      later on. 


   BCM5706/08 Firmware v3.7.16
   ----------------------

   ***** iSCSI offload *****

   Bug Fixes:

   1. Update the CQ wraparound according to both CQ size and number of CQEs
      per page.

   2. RST response is now passed to driver correctly.



Version 3.7.18 (Sept 28, 2007)
==============================

   BCM5706/08 Firmware v3.7.15
   ----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. Make com_no_buffer counter more robust so it won't miss count L2 packet
      drops.

   2. Make sure to subtract the gen buff space from gen_buff_accum for each gen
      add operation so the TOE stack won't think the window is open up and fire
      out a window update prematurely.


   ***** iSCSI offload *****

   Bug Fixes:

   1. Set the maximum iSCSI/TOE offloaded connections to zero if indicates
      license/BACS failure.

   Enhancement:

   1. Omit the INLINE_5708 from some iSCSI functions in order to fit code
      space in Windows_5708 compilation mode.


   BCM5709 Firmware v3.7.4
   ---------------------

   Bug Fixes:

   1. Fixed com_no_buffer counter so it counts L2 packets drops properly.



Version 3.7.17 (Sept 24, 2007)
==============================

   Fixes:
   ------

   1.  Problem: CQ#31289, #31257, #28882
          Blue screen when booting to iscsi boot w2k3 image with BCM5709 
          when using iscsi initiator v2.0.5

       Cause:
          The OS is scanning the PCI configure space which will cause
          an indirect MQ read when register 0x94 is read.  The MQ read
          is invalid and this will cause the chip to stall.

       Fix:
          Configure the chip to not stall on an invalid MQ read.


   2.  Problem: CQ#31501
          Blue screen could occur on shutdown when RSS is enabled.

       Cause:
          The driver is making calls to WdfInterruptSynchronize when
          the interrupt object is no longer valid during shutdown.

   3.  CQ#28610:
          Performance issue: Higher ints/sec contribute to lower PE 
          in some tests involving 4 5708s

       Fix:
          Adjust coalescent and driver setting to improve interrupt/sec 
          and performance. After adjustment, the ints/sec is less than 
          Intel's NIC and performance get significant improvements.


   Enhancements:
   -------------

   1.  Add workaround for BCM5709 A1 "Interrupt Lost" issue.


   BCM5706/08 Firmware v3.7.14
   ----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1. CQ31494 - Fixed low L4 teaming throughput problem by restricting the
      sending of immediate window update only when tx is idle.

   2. Fixed LH sparta regression problem where it expects TOE stack to send ack
      to remote if the sequence number is less than snd_una and packet len is
      not zero instead of silently dropping the packet. 

   Enhancement:
    
   1. As for each copy generic request, the TOE stack keeps track of the size
      of the generic buffer that gets free up and add it back to the
      rcv_win_seq so the rcv win size is being accurately accounted for in the
      timely manner. 


   ***** iSCSI offload *****

   Bug Fixes:

   1. Fix persist probes transmission mechanism.
   2. Send indication to COM on exit fast retransmition when receiving RETRANS
      indication from TSCH.
   3. Fix RQ flush structure.
   4. Fix the initialization of the iSCSI number of pending tasks for TXP and
      TPAT.



Version 3.7.16 (Sept 17, 2007)
==============================

   Fixes:
   ------

   1.  Problem: CQ#31129
          Running network stress on BCM5709 in a teaming environment may
          cause Longhorn to assert due to the DPC watchdog timer.

       Cause:
          The watchdog timer ensures the CPU does not stay at Dispatch
          IRQL for more than 30 seconds.  Under stress this could happen.

       Fix:
          Periodically prevent the driver's DPC from running for a short
          time if the CPU utilization is at 100%.  This fix does not completely
          address the problem.  It could still occur if there are multiple
          devices in the system under stress.


   2.  Problem: CQ#31362
          Windows iSCSI Offload bugchecked 0x7B when choose to remote boot
          with offload path.

       Cause:
          The start type was set to SERVICE_DEMAND_START.  Reverted back to
          SERVICE_BOOT_START.


   3.  Problem: CQ#31367
          Connections don't get offloaded on the second port on BCM5709.
       
       Cause:
          The driver was reporting the device as having 0 TOE connections.


   4.  Problem: CQ#31345
          System crash occurs when the system wakes up from S3.

       Cause:
          The driver calls WdfInterruptAcquireLock/WdfInterruptReleaseLock
          before the interrupt is enabled by the KMDF framework.


   BCM5706/08 Firmware v3.7.13
   ----------------------

   ***** TCP offload/L2 *****

   Bug Fixes:

   1.  CQ31208 - Make sure TOE stack to send window update immediately and
          ignore delay ack if the rcv window is opening up more than one MSS.

   Enhancement (LH sparta requirement):

   1. TOE stack now supports host window update properly (ie. TOE stack honors
      user's request to either increase or decrease socket receive buffer size).

   ***** iSCSI offload *****
   
   1. Added updated BACS/License enforcement.



Version 3.7.15 (Sept 7, 2007)
=============================

   Fixes:
   ------

   1.  Problem: CQ#30834
          IPv6 transmit traffic stutters periodically when RSS is enabled.

       Cause:
          The hash table for RSS does not work for ipv6.

       Fix:
          Adjust a parameter in VBD which was for lowering the CPU utilization
          when RSS was enable. And non-RSS rxqs only be served on the isr's 
          proc DPC to improve cpu parallelism.


   2.  Problem: CQ#31197
          Unable to create a crash dump with MPIO.

       Cause:
          The crash dump driver queries the VBD for the base register pointer.
          On x64, the VBD only returns the lower 32-bit value of the pointer.


   3.  Problem: CQ#31256
          Running network stress test could cause the system to freeze.

       Cause:
          In certain rare condition, the driver may not claim an interrupt.
          There is a race condition between the ISR masking an
          interrupt and the DPC unmasking it.

       Fix:
          Synchronize the DPC code for unmasking the interrupt with the ISR.



   Enhancements:
   -------------

   1.  CQ#30791 - Add a remote phy option for "1Gb Full Auto".

   2.  Include BCM5709 rv2p v1.6.0.


   BCM5706/08 Firmware v3.7.12
   ----------------------

   ***** TCP offload/L2 *****

    Bug Fixes:

    1. Fixed a bug where TOE stack could request a reload with a sequence
       number that has already been completed during closing state when fast
       recovery is still active. 

    2. CQ31211 - w2k3 SPARTA expects TOE stack to send ACK instead of RST-ACK
       when receive in-order SYN from remote. If host OS is LH, TOE stack will
       still do RST-ACK.

    3. CQ31210 - w2k3 SPARTA expects TOE stack to strict follow TCP Nagle per
       RFC 896. If host OS is LH, TOE stack will deviate from TCP Nagle if
       there is only one outstanding send request per LH sparta requirement.

    4. CQ31209 - w2k3 SPARTA expects TOE stack to send DupACK if receive packet
       on the right hand side of the window. If host OS is LH, TOE stack will
       silently drop the packet per LH sparta requirement. 

    5. CQ30559 - Fixed intermittent failures in bad header handling reported by
       w2k3 SPARTA.
    
    Enhancement:
    
    1. Make TOE stack ignore the delay ack mechanism as the hole in the receive
       buffer is being filled (ie. it must sends out the ack immediately upon
       each packet received while the hole is being filled).
       

   ***** iSCSI offload *****

    Bug Fixes:

    1. Fixed the silent drop processing in case of RQ full.
    2. Fixed the error processing after reveal a wrong opcode.
    3. Fixed a bug in message from TDMA to COM by reset the L5 bit in case of
       sending FORCE_RESET indication in option#2.
    4. Fixed a bug were RQ placement data was stored in RBDC and was not
       flushed even after the connection has been closed. Now it is flushed
       after each RQ placement completed.

    Enhancement:

    1. Change the behave of processing a bad ACK sequence in the 3-way
       handshake phase in option#2.  Instead of sending a reset after
       receiving a bad ACK sequence, FW will redirect the packet to L2.
    2. Add the licensing / resource allocation features.



Version 3.7.14 (Aug 27, 2007)
=============================

   Fixes:
   ------

   1.  Problem: CQ#30663
          Device manager shows a yellow bang on the wdf0100 driver.

       Cause:
          The following line in the INF file is incorrect.

             KmdfService = bxvbdx, bxvbdx_wdfsect

          The KmdfService name should be b06bdrv.


   2.  Problem: CQ#31029
          iSCSI does not work if the device does not have TOE license.

       Cause:
          The driver rejects all TOE requests if there is no TOE license.  The
          problem occurs if iSCSI is enabled on the device and TOE license is
          not present.

       Fix:
          The driver needs to allow processing of connection offload requests
          even when there is no TOE license.


   3.  Problem: CQ#31073
          System failure during connect and logoff stress.

       Cause:
          This is a side effect of fixing cq#31029.  Entries in the kernel
          queue could be skipped without processed by the bus driver or
          the iSCSI miniport.



Version 3.7.13 (Aug 15, 2007)
=============================

   Fixes:
   ------

   1.  Problem:
          TCP connection does not get offloaded if the license key is
          not present.  This problem is seen on FPGA setups and adapters 
          that do not use Broadcom licensing scheme.

       Cause:
          TOE capability is disabled when license key is not present.

       Fix:
          Always advertise TOE capability on FPGAs and adapters that don't
          use Broadcom licensing scheme.


   BCM5706/08 Firmware v3.7.12.a0
   -------------------------

    ***** TCP offload/L2 *****

    Bug Fixes:

    1. Fixed a bug where TOE stack could request a reload with a sequence
       number that has already been completed during closing state when fast
       recovery is still active. 



Version 3.7.12 (Aug 14, 2007)
=============================

   BCM5706/08 Firmware v3.7.11
   ----------------------

    ***** TCP offload/L2 *****

    Enhancemant(MSFT LongHorn server requirement)
    
    1. Added TCP NewReno per RFC 2582.


    ***** iSCSI offload *****

    1. Support ACK processing in OOO packets.



Version 3.7.11 (Aug 10, 2007)
=============================

   Fixes:
   ------

   1.  Problem: CQ#30889, #30920
          Adapter is grayed out in BACS after Microsoft Initiator is installed.

       Cause:
          The driver does not respond to BACS request when it is in
          STOP_PENDING or REMOVE_PENDING state.

       Fix:
          Allow the driver to process ioctls when it is in one of these
          states.


   2.  Problem: CQ#30954
          Network adapters grayed out in BACS after running driver verifier.

       Cause:
          During driver initialization, the call to WdfFdoQueryForInterface
          returns a status code of 4.  The driver did not use the NT_SUCCESS
          macro to check for the success of the call.  As a result it
          erroneously treated the return code as failure and failed driver
          initialization.

       Fix:
          use the NT_SUCCESS macro to check the return code.


   3.  Problem: CQ#30617
          The OS may reset a SMB connection when TOE is continuously
          enabled/disabled during a SMB data transfer. This problem would not
          be seen with all network applications, and was only seen with an 
          application that was transferring data using SMB.
 
       Cause:
          Disabling TOE while TCP connections are offloaded will result in the
          offloaded connections being "uploaded" back to the OS.  In some rare
          cases the OS may have only partially accepted a prior receive buffer
          indication before the disable TOE event occurs. This would only
          happen if the application was not pre-posting receive buffers.  In
          this rare scenario of a partially accepted receive indication, the
          driver needs to remain in the receive indication mode and complete
          the remainder of the receive indication data before proceeding with
          the connection upload event.  If the driver did not accurately
          complete the remaining portion of a previous partially accepted
          receive indication, then upper layer SW could reset the SMB
          connection after the upload event.


   Enhancements:
   -------------

   1.  Don't allow the pdo to be disabled if it is iSCSI boot device.


   BCM5706/08 Firmware v3.7.10
   ----------------------

    ***** TCP offload/L2 *****

    Bug Fixes(MSFT LongHorn Requirement):

    1. Fixed zero window probe detection so TOE stack can respond with zero
       window ACK properly.

    2. Make sure TOE stack set the FORCE_ACK bit in Protocol flags and
       activate the tx scheduler when it received a disconnect request and the
       snd wnd is zero. Otherwise, the tx scheduler won't schedule the
       connection and resulted in TOE stack unable to send out the FIN properly.

    3. Make sure TOE stack generates a dup ack when receives a packet that lies
       on right side of recv window. 

    4. Fixed a keeplive bug where TXP could disable the keepalive timer
       permanently and TOE failed to send out keepalive probes when the
       connection is idle. 
       
    Enhancement(MSFT LongHorn Requirement):
   
    1. TOE stack should ignore the delay ack timer and sends out a ack
       immediately when a hole is filled in the receive buffer. 
    
    2. The silly window rule is now based on minimum of mss and 1/2 of
       max_snd_win instead of just the mss. TOE stack can still send out a
       packet smaller than MSS if 1/2 of max_snd_win is less than mss. 
    
    3. Added more support for TCP timestamp feature.
       - TOE stack must accept valid timestamp for already acked data.
       - TOE stack must check for time stamp wrapping before accepting
         the timestamp.
       - TOE stack must reject in-order packet with a lower timestamp.
   
    4. Added RTT support per RFC2988.



Version 3.7.10 (July 31, 2007)
==============================

   Fixes:
   ------

   1.  Problem: CQ#30782
          5708B2 Fails WOL with WLK 1.0c

       Cause:
          This is only happened on LH/VISTA. And it is caused by
          IRP_MN_WAIT_WAKE is not used.

       Fix:
          Not rely on IRP_MN_WAIT_WAKE.


    BCM5706/08 Firmware v3.7.9
    ---------------------

    ***** TCP offload/L2 *****
        
        Bug Fixes(MSFT LongHorn Requirement):
        
        1. Make sure TOE stack in TXP reads the tcp_state directly from ctx
           memory instead of from burst buffer when handling disc request
           during pre-scan. This prevents improper decision from the TOE stack
           since value in burst buffer is not real time.  

        2. When upload a connection due to unexpected SYN received, update the
           upload reason to L4CTX_TCP_UPLOAD_REASON_SYN and don't set tx/rx
           completion bit to avoid VBD assert.

        3. TOE stack should filter out packets with the seq number + len < 
           rcv_next to avoid RV2P hang. 

        4. Added support to copy the ts.recent value to l4ctx from host during
           connection offload.  It prevents TOE stack to send out a bogus ts
           echo value. 

    ***** iSCSI offload *****

        1. Bug fix - on fw_doorbell, kcq_shadow_context will reset
           com_hc_prod_idx, so we won't get false kcq processing after l5_core
           reload.

        2. Bug fix:Per task iSCSI statistics fix - num of data_outs and r2ts
           reported correctly
        
        3. Licensing scheme support for Linux.



Version 3.7.9 (July 27, 2007)
============================

    Fixes:
    ------

    1.  Problem:
          The fix for CQ#30307 does not work. 

        Fix:
          Remove the workaround for CQ#29454.


    2.  Problem: CQ#29526
          CQ#29526 - Remove VLAN support in our driver for iSCSI boot.


    BCM5706/08 Firmware v3.7.8
    ---------------------

    ***** TCP offload/L2 *****

        Enhancement:

        Added support for black hole detection. TOE will upload the connection
        after a segment retx cnt reaches doubt reach-ability threshold so the
        host stack can activate the black hole detection per RFC 2923. 

    ***** iSCSI offload *****

        1. Changing the behavior of FIN reception in option#1: Remove the FIN
           delivering to FTSK. 
           Change the TCP state to CLOSE_WAIT.


    BCM5706/08 Firmware v3.7.7
    ---------------------

    ***** TCP offload/L2 *****
        
        Bug Fixes(MSFT LongHorn Requirement):
        
        1. Fix a bug where TOE stack doesn't generate the delayed ack properly
           when generic buffer is in use.
           
        2. Only allow TXP process the host disconnect request when TOE stack is
           in ESTB state to avoid generating un-necessary ACKs.

        3. Make sure TOE stack to send out a ACK before progress from fin_wait1
           state to closing state. 

        Enhancement(MSFT LongHorn Requirement):

        1. When received a SYN during ESTB/close_wait/fin_wait1/fin_wait/
           last_ack state, TOE stack should upload the connection and have
           MSFT host stack to send out RST. 
        
        2. Make rcv window update to be fully compliant to RFC 793 and
           RFC 1122.
        
    ***** iSCSI offload *****

        1. Separating FW for Windows and Linux (TOE and option 2 logic can be
           conditionally out).
        2. Fixing performance drawback from previous version
        3. Bug fix: RST ramrod completion on TX flushed.
        4. Readiness for resource reservation (implementing resource
           reservation algorithm + FCFS)
        5. HSI change (for Linux) – task_stats is now a union field defined
           for write task and for read task. 
        6. Bug fix for violation error/warning mechanism. Packets are processed
           ok on warning.
        7. Specific FW patches that were done to support warning feature are
           out now 
        8. Bug fix: CQ# 30694 – TXP will not pass last on force ack where
           payload is send.
        9. Bug fix: Redirect in 5706 - Handle correctly receiving piggybacked
           FIN on iSCSI packet.
        10. Added an iSCSI specific number of retransmission into the COM HSI
            structure.
        11. Insert some volatile keyword into the KCQ context pointer.


    BCM5709 Firmware v3.7.3
    ---------------------

    1.  Added a workaround for cp grc timeout.
    2.  Added a workaround for kcq corruption.



Version 3.7.8 (July 16, 2007)
============================

    Fixes:
    ------

    1.  Problem:
           BCM5706/08 firmware v3.7.6 was built with an incorrect file.

        Fix:
           Included the re-release of the v3.7.6 of the BCM5706/08 firmware.



Version 3.7.7 (July 16, 2007)
============================

    Fixes:
    ------

    1.  Problem: CQ#30307
          Bacs: Bogus counters on 5708 under statistics tab

        Cause:
          This is a side effect of the workaround(CQ#29454).

    2.  Problem: CQ#30558
          5709S: Fiber: OS does not detect link loss with latest 
          VBD/NDIS52 v3.7.6

        Cause:
          check the wrong bit in emac status reg for link down detection.

        Fix:
          Change from checking EMAC_STATUS_LINK_CHANGE to checking
          EMAC_STATUS_LINK in emac status reg for link down detection.

    Enhancements:
    -------------

    1.  Enable special files support.

    2.  Include BCM5706/08 rv2p v1.5.0_proc1 and v1.4.0_proc2.

    3.  Include BCM5709 rv2p v1.4.0_proc1 and v1.3.0_proc2.

    4.  CQ#29875 - Changed "Remote PHY..." to "Chassis PHY..." in the INF file.


    BCM5706/08 Firmware v3.7.6
    ---------------------

    ***** iSCSI offload *****
    
    Bug Fixes:

    1. Change the CQ sequence location in the CQE structure in order to fit
       BCM5709's DMA limitation.

    2. Command requests arrive from driver which are not identify as write,
       will be treated as read.

    Enhancement (Mostly BETA features):

    1. Added the error/warning bit map feature by producing additional iSCSI
       INIT KWQE.

    2. Added the delayed ACK /Keep alive configuration capability feature.

    3. Added TCP limitation of retransmissions.

    4. Halt the TX pipeline in case of upload command receiving from driver
       in option#1.

    5. Halt the TX pipeline after sending RST in option#2.

    6. Statistics support. TX and RX for iSCSI MAC in option#1 and per
       task statistics.


    BCM5709 Firmware v3.7.2
    ---------------------

    Bug Fixes:

    1. CQ#29744 - Added mechanism to support host max_adv_win update so we
       won't have window size discrepancy after connection upload. 
    
    2. Fixed delay ack and push timer programming error. 

    3. Fixed delay ack count tracking error. The delay ack count only gets
       incremented for each completed packet not each completed segment since
       each packet can be split into multiple segments as it get copied to
       the host.
    
    4. Allow update of remote adverstied window size during close_wait state.

    Enhancement:

    1. Added IPV6 TCP chimney support.

    2. Added MSFT chimney compatible TCP KeepAlive Support. 



Version 3.7.6 (July 3, 2007)
============================

    Fixes:
    ------

    1.  Problem:
          bus_mode was not set to BUS_MODE_PCIE for 5709.

        Cause:
          bus_mode was set by info from pcicfg misc_status which was not 
          correct for 5709.

        Fix:
          bus_mode always set to BUS_MODE_PCIE for 5709.


    Enhancements:
    -------------

    1.  Include BCM5709 rv2p v1.4.0.


    BCM5706/08 Firmware v3.7.5
    ---------------------

    ***** TCP offload/L2 *****
    
    Bug Fixes:

    The following are LongHorn sparta test related fixes: 
    
    1. Fixed a bug in duplicate ACKs detection in certain corner cases.

    2. TOE should reject incoming packet with ack sequence number equal
       to snd_max+1 when it is not in FIN_WAIT1, FIN_WAIT2 and LAST_ACK state.  

    3. Fixed a bug in TOE stack where it didn't allow window update in
       close_wait state.
    
    Enhancement(MSFT LongHorn in-box Requirements):

    1. Added TCP limited transmit per RFC 3042.

    2. Changed limit of increase in TCP ABC algorithm (L factor) to 4 from 2. 



Version 3.7.5 (June 25, 2007)
=============================

    Fixes:
    ------

    1.  Problem: CQ#29986
           BACS diagnostic reports failures on mac and phy loopback test on
           a system with remote phy enabled.

        Cause:
           When remote phy is enabled, the driver does not honor the request
           to put the device into mac or phy loopback mode.

        Fix:
           Disable remote phy when the diagnostic driver binds to the vbd.


   2.  Problem: CQ#29647
          Configured remotePHY speed and duplex settings not sticky 
          across reboots.

       Fix:
          Both boot code(ver 3.5.5) and VBD have some changes to fix
          it. On VBD, only gigabit speed is adv for serdes and should 
          inform boot code if the setting is for remote phy when 
          submitting the DRV_MSG_CODE_CMD_SET_LINK command.


   3.  Problem:
          bus_type reported by B06_IOC_GET_DEVICE_INFO is not correct
          if it is pcie.

       Fix:
          Add the code to report pcie bus_type.


   4.  Problem: CQ#30143
          The bus driver does not return a status code indicating a pattern
          is already present and the Miniport does not report back the
          correct status as expected by NDIS test v6.5.

       Fix:
          If the pattern is already present the bus driver will return
          LM_STATUS_EXISTING_OBJECT and NDIS miniport will return
          NDIS_STATUS_INVALID_DATA.


    Enhancements:
    -------------

    1.  Include rv2p v1.3.0.


    BCM5706/08 Firmware v3.7.4
    ---------------------

    ***** TCP offload/L2 *****
    
    Bug Fixes:

    The following are LongHorn sparta test related fixes: 
    
    1. Fixed the double RST problem where TOE and host stack send out RST
       during tcp connection timeout. Only host stack should send out the
       RST per MSFT chimney spec.

    2. Fixed the tcp RTO calculation bug where sm_rtt and rttvar didn't get 
       converted from ticks to ms and resulted in erroneous RTO value. The 
       erroneous RTO value causes TOE to retransmit prematurely and resulted
       in lower performance in certain conditions.  It also fixed CQ#28740
       where TOE retransmit prematurely and abort connections due to premature
       retransmissions.

    3. Fixed a bug where TOE didn't send out FIN during a graceful disconnect
       in certain corner cases.    
    
    Enhancement:
    
    1. Added basic timestamp support based on RFC 1323. 



Version 3.7.4 (June 13, 2007)
=============================

    Fixes:
    ------

    1.  Problem: CQ#29809
           BCM5709S could hit an assert below when forcing 1Gb speed.

        Cause:
           The link speed read from the MII register was not properly decoded.

    2.  Problem: CQ#29725
           Windows iSCSI Ofload: Network icon consistently does not link up 
           after restart

        Cause:
           If iSCSI client is loaded first and the link is stable, NDIS 
           miniport driver will not get link indication callback from VBD. 

    3.  Problem: CQ#29891, CQ#29801, CQ#29799
           Remote phy fails to negotiate link @ 10 and 100 full duplex forced.

           RemotePhy Ethernet@Wirespeed not functional via VBD/NDIS52 v3.5.2.

           RemotePhy Flow Control Feature not Functional.


        Cause:
           Some of the information passed to remote phy firmware is not correct.


    Enhancements:

    1.  Add support for Chimney TcpReceiveNoPush.


    BCM5706/08 Firmware v3.7.3
    ---------------------

    ***** TCP offload/L2 *****
    
    Bug Fixes:

    The following are LongHorn sparta test related fixes: 
    
    1. Fixed timer programming error of delay ack timer and push timer.
    
    2. Fixed delay ack count tracking error. The delay ack count only gets
       increment for each completed packet not each completed segment since
       each packet can be split into multiple segments as it get copied
       to the host.  
    
    3. Fixed a bug where connection didn't enter slow start after a retx
       timeout.

    4. Fixed a bug where TOE stack un-necessary send out a ACK when handling
       graceful disconnect from host. 

    5. Fixed a bug where TOE stack could un-necessary send out a ACK when even
       there are pending tx data upon detecting remote disconnect request. In
       this case, TOE stack should only send out ACK with data instead a ACK. 
       
    Enhancement:

    The following enhancements are added per MSFT LongHorn Sparta test
    criteria.
    
    1. Added ABC algorithm for TOE slow start per RFC3465.

    2. Changed ssthreshold calculation to be based on cwnd instead of
       in-flight data. This allows offloaded connection switch from slow
       start to congestion avoidance the same way as the MSFT TCP stack. 

    3. Changed cwnd calculation scheme to be based on cwnd += mss^2/cwnd.

    4. Added max_adv_win host update mechanism. 


    ***** iSCSi offload *****

    Bug fixes

    1. Using volatile variables when accessing all fio->rv2ppq related
       registers in RxP.  May solve CQ#29628 (should be verified)

    2. Fixed iSCSi option 1 offload problem (firmware now makes sure to commit
       the iSCSi option 1 offload after 5 kwqes and regardless whether there
       is a 6th kwqe or not since VBD will generate 6 kwqes for both iSCSi and
       TOE during offload).

    3. Removed check for TTT=0xFFFFFFFF on Data_In so we can interoperate
       with the Cisco target in the PQA lab.



Version 3.7.3 (May 31, 2007)
============================

    Enhancement:

    1.  Build a special version of the driver for Longhorn inbox driver
        submission which will temporarily disable Chimney support on BCM5709.



Version 3.7.2 (May 30, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#29545
          5708B2 fails to pass traffic after running Lan Device Traffic 
          in HCT12.1.01

       Cause:
          The driver is still in sleep state after the tests.

       Fix:
          wake up the driver in d0_entry function if disarm function 
          is not called.

   2.  Problem: CQ#29685
          WOL does not work after running ACPI Stress or LAN Device Wake test

       Fix:
          Set WakeDoNotAllowUserControl in wake_setting to prevent WOL
          function from being disable. 

   3.  Problem: CQ#29647
          Uncheck the Allow this device to bring the computer out of 
          standby check box, The system is still wake up

       Cause:
          Windows does not inform NDIS driver when the box is unchecked

       Fix:
          Workaround this problem by intercepting the WDM power irp which
          normally should not need to be handled by KMDF driver to get 
          the information.

   4.  Problem: CQ#29712
          5709S links at 2.5G when 2.5G support is disabled and/or no license 
          is installed in NVRAM.

       Fix:
          Disable PHY 2.5G adv if 2.5G support is disable in NVRAM.


    BCM5706/08 Firmware v3.7.2
    ---------------------

    ***** TCP offload/L2 *****
    
    Bug Fixes:

    Enhancement:

    1. Added MSFT TCP chimney compatible keep-alive Support in TOE stack. 


    ***** iSCSi offload *****
    
    Bug Fixes:

    1. Fixed bug with opt2 connection establishment where target sent SYN-ACK
       with PUSH flag.
    2. CQ#29415 - local completion flag is not exposed to the network anymore
    3. CQ#29571 - cam_index is updated correctly during connection offload
    4. CQ#29366 - wrong handling for EOP TCP option field. Now can connect to
       EMC target
    5. Bug fix with window scale handling for received out of order packets


   BCM5709 Firmware v3.7.1
   ---------------------

   Enhancement:

   1.  Pass the entire RXP status field to MCP as required by IPMI.



Version 3.7.1 (May 18, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#29545
          Plug and Play Driver Test Surprise Removal causes fatal system 
          exception

       Cause:
          pdev is used to check drv_state when doing final clean up after 
          it is free.


    BCM5706/08 Firmware v3.7.1
    ---------------------
    ***** TCP offload/L2 *****
    
    Bug Fixes:
    
    1. CQ#28522 - Fixed RSS table size problem.

    2. CQ#29331 - Slightly increase the min RTO to ~210ms to avoid unnecessary retx during SPARTA
                  nagle test due to late ack from remote MSFT stack.

    3. CQ#29356 - There is a race condition when host send us a graceful disconnect kcqe and an 
                  abort kcqe at the same time, and causes L4CTX_OUBITS_ACTIVATE get reset which 
                  prevents COM to send tx completion before sending disc completion with status 
                  SUCCESS. This situation will cause host to assert. The safest thing to do is 
                  for COM to send disc completion with status ABORT.

    4. CQ#29580 - In handling disconnect request in CP, make sure to update all kwqes info to L4
                  ctx first prior to setting the disc_bd flag. Without doing this, the txp could
                  make wrong decision on when doing disconnect because it is reading the 
                  l4ctx_tcp_padding from the ctx without locking it.

    4. Fixed generic buffer tracking mechanism in COM. 
    
    Enhancement:

    1. Added small packet coalesce mechanism. (ie. don't send out a packet that is less than MSS
       size if it is not at the end of application buffer)
    
    ***** iSCSi offload *****
    
    Bug Fixes:

    1. Multiconnection read mixed buffers bug fixed

    2. Write and low performance bug fixed

    3. Windows specific bug fixed

    4. Fixing error reporting mechanism. Now TCP errors have their own KCQE opcode. Same is for 
       iSCSI errors.

    Enhancement   

    1. TCP:
        a. Implementation of the handling of RST /SYN / FIN in option#1.
        b. Implementation of the Keep-Alive and Persist mechanisms.
        c. Fixed the implementation of the delayed acknowledge mechanism.
        d. Additional changes in order to comply to the TCP standard.

    2. Improvement of the RxP performance.

    3. Removing all the warnings related to the DBG_TRACE macro in release compilation mode.

    4. Support for specific KCQE for IP fragments.

    5. Support for Window scale option 

    6. Support for connection upload and termination in option 1


   BCM5709 Firmware v3.7.0
   ---------------------

   1.  CQ#29356 - There is a race condition when host send us a graceful
          disconnect kcqe and an abort kcqe at the same time, and causes
          L4CTX_OUBITS_ACTIVATE get reset which prevents COM to send tx
          completion before sending disc completion with status SUCCESS.
          This situation will cause host to assert. The safest thing to
          do is for COM to send disc completion with status ABORT.

    2. CQ#29580 - In handling disconnect request in CP, make sure to update
          all kwqes info to L4 ctx first prior to setting the disc_bd flag.
          Without doing this, the txp could make wrong decision on when doing
          disconnect because it is reading the l4ctx_tcp_padding from the ctx
          without locking it. 
    
    3. Fixed generic buffer tracking mechanism in COM.

    5. Enable TPBUFF workaround for A1 silicon for both L2 and L4 path.



Version 3.7.0 (Apr 27, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#28728
          5708S B2 fails to negotiate link and driver becomes disabled during 
          driver load/unload

       Cause:
          Pass u32_t type buf_len to WdfRequestRetrieveOutputBuffer()
          caused BSOD for IA64 system if the driver was free build.

       Fix:
          Change out_buf_len and in_buf_len type from u32_t to size_t for 
          WdfRequestRetrieveOutputBuffer() and WdfRequestRetrieveInputBuffer(). 

   2.  Problem: CQ#29159
          WOL enabled in NVRAM causes BACS to report iSCSI boot "On" after
          running BACS diagnostics.

       Cause:
          The diag firmware cputest can mess up the iscsi boot signature 
          area.

       Fix:
          Restore the signature after the diag tests to work around 
          this problem.


   BCM5706/08 Firmware v3.7.0
   ---------------------

   Enhancement:

       1. Initial integration of iSCSI firmware with TOE produciton firmware.

       2. Update Makefiles/linker script so gcc3.4.6 is used for official build.

       3. Conditional out RDMA related code to save space. 
     

    iSCSI offload supported features:
    
        - All iSCSI (fast path) command support (Read and Write) with/without
          immediate data, unsolicited data, header and data digest. 
        - All iSCSI middle path support (Login, Logout, TMF, Text, Nop-In,
          Nop-Out of all types).
        - Support for cleanup WQE (used after TMF). 
        - Support for all types of unsolicited PDUs (Reject, Async event). 
        - Support for non-aligned traffic. 
        - Support for option 1 connection offload. 
        - Support for option 1 connection termination (upload) both graceful
          and abortive(partially tested). 
        - Support for option 2 connection termination (both graceful and
          abortive). 
        - Support for slow start and fast retransmit. 
        - Correct TCP window management. 
        - Support for delayed ACK. 
        - Support for keep-alive and persist (implemented, not fully tested
          yet). 
    
    Current FW performance (approximate): 
    512 byte Read stress - ~84k IOPS 
    512 byte Write stress - ~80k IOPS 
    Support for multiple driver load/unload. 
    Support for error reporting 
     
    Known feature: currently incoming unsolicited Nop-Ins without payload
    and request to send a Nop-Out do not generate CQE.

    Unsupported / untested features:

    - Option 1 connection upload and connection termination not fully tested. 
    - Event coalescing support (implemented and partially tested with xDiag.
      Not released though). 
    - Correct context management (TOE / iSCSI context partitioning). 
    - License enforcement and BACS integration.
    - iSCSI statistics support for Windows and Linux. 
    - iSCSI L2 ring management (not checked with xDiag, but should be ok
      with Win/Linux). 
          
    Known bugs (very rare to happen and should not affect PQA at this stage):

    - Sometimes data digest is reported by RV2P and forwarded to host. 
    - Sometimes DMA got stuck (probably due to invalid host memory access). 



Version 3.4.3 (Apr 10, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#28974
          Yellow bang on vbd driver in W2K

       Cause:
          RtlGetVersion is not available on W2K
        
       Fix:
          Check and don't call it if it is W2K.


   2.  Problem: CQ#29042
          Check driver asserts during mac loop back test.

       Cause:
          The driver tries to process RSS update kcqe as a TCP kcqe which
          is invalid.

       Fix:
          Ignore the RSS update kcqe.

   3.  Problem: CQ#29017
          Changing  Setting on iSCSI Boot device causes BSOD.
       
       Cause:
          Not return failed status for pdo remove query if boot option is on.

       Fix:
          Return failed status for pdo remove query if boot option is on.


   BCM5706/08 Firmware v3.4.5
   ---------------------

   1.  CQ#29038 - Fixed a problem in broadcast/multicast L2 path where we
          queue duplicated packets to MCP resulted in MCP to double free the
          packet from the RX mbuff, and caused the RX mbuf link list to be
          corrupted. This causes traffic to both host and MCP to cease. 

   2.  Fixed a false assertion in TXP reported by Microsoft during Longhorn
       testing where we didn't take account for the extra byte during TCP
       connection tear down. 


   BCM5709 Firmware v3.4.7
   ---------------------

   1.  CQ#29047 - Fixed a problem where TOE connections will not tear down
          properly when socket application is terminated. TXP may not process
          the tear down request when protocol flag has both
          L4CTX_TCP_TX_PROTOCOL_FLAGS_TIMER_DELAY_ACK and
          L4CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK flag set since the prior
          condition can causes TXP break out of its processing loop. The fix
          is to make TXP to process force ack request before doing the timer
          delay ack processing. 

   2.  Fixed a false assertion in TXP reported by Microsoft during Longhorn
       testing where we didn't take account for the extra byte during TCP
       connection tear down.
    
    Enhancement:

   1.  Merged in the promiscuous mode fix when management firmware is active
       from BCM5706/08 production firmware to rxp.c.



Version 3.4.1 (Mar 30, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#28943
          pinging will timeout on Vista x32/64.

       Cause:
          The driver will disable support for TCP offload if it is running
          on Vista x32/64.  When TCP offload is disabled, transmit chain #1
          is configured for catchup frames.  Normal traffic cannot be sent
          on this chain, but the driver is using chain to passing normal
          traffic.

       Fix:
          Configure transmit chain #4 or cid 30/31 for catchup frames
          regardless of TCP offload support.


   2.  Problem: CQ#28971
          LH: system break when trying to do a system restart with 
          two 5708 adapters.

       Cause:
          The status block is not allocated if no client is enable.
          Clean up it will cause system break. 

       Fix:
          Don't need to clean up it if no client is enable.


   BCM5709 Firmware v3.4.6
   ---------------------

   1. CQ#28467 - Added TPBUFF workaround to L4 tx data path to prevent tx
         buffer wraps around overwriting un-transmitted data. This fixes
         the chariot data corruption issue on tx side.

   2. Update rxp_tcp.c to be the same as BCM5706/08 production firmware. 



Version 3.4.0 (Mar 27, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#28564
          Updating the driver from v3.0.x to v3.1.x results in two instances
          of "Speed & Duplex" in the NDIS miniport's device property page.

       Cause:
          The link speed configuration was changed recently from "req_medium"
          to "*SpeedDuplex".  On a driver update, the old registry key
          was not deleted.

       Fix:
          The INF was modified to delete the old registry key.


   2.  Problem:
          ia64 system crash when shutting down.

       Cause:
          The driver doesn't release the hardware when the system doesn't 
          support Sx wakeup.
           
       Fix:
          Use EvtDeviceD0Exit() to release the hardware when the system
          doesn't support Sx wakeup.


   3.  Problem:
          The driver needs shutdown type and Sx state to handle some cases
          when going to D3 but kmdf interface doesn't provide them. 

        Fix:
          get the shutdown type and Sx state by using 
          WdfDeviceInitAssignWdmIrpPreprocessCallback() to get power 
          management irp which has these information.


   4.  Problem: CQ#28759
          BCM5709S cannot link to 2.5Gb with a BCM5708S link partner.

       Cause:
          BCM5706/082 auto negotiation mode was not enabled.


   5.  Problem: CQ#28887
          Continuous ACPI S4 test will cause the check driver to break
          into the debugger.

       Cause:
          The break occurs in the start_device routine, because the generic
          buffer list is inconsistent.  The inconsistency occurs because the
          driver state is set to RUNNING too early.  This is done while the
          generic buffers are being queued to the generic chain.  Since the
          interrupt is shared, setting the driver state to RUNNING means the
          DPC will also run if other device sharing the interrupt line
          generates an interrupt.  The DPC could also queue the generic buffers
          which will cause the inconsistency in the list since it is also being
          modified in the start_device.

       Fix:
          The driver state is set to RUNNING at the end of the start_device
          routine.


   BCM5709 Firmware v3.4.5
   ---------------------

   1. CQ#28669 - Added cs16 workaround in CP during dma operation to void kwqe
         corruption.
    
   2. CQ#28532 - Restrict number of TCP offload connection to 32 due to limited
         CAM memory on FPGA. 

   3. Merged in the CLEAR_HQ_CACHE workaround code from BCM5706/08 to make sure we
         run into cache problem in TPAT.

   4. Update COM_TCP.c code to be the same as BCM5706/08 production firmware. 


   Enhancements:
   -------------

   1.  Request:
          Add support for remote phy.

   2.  Request: CQ#28488
          Change product version to 10.4.

   3.  Request: CQ#26642
          VLAN support with iSCSI boot.



Version 3.1.6 (Mar 9, 2007)
===========================

   Fixes:
   ------

   1.  Problem: CQ#28699
          F6-install causes system to crash after the final reboot of Windows
          installation.

       Cause:
          During F6-isntall, the VBD is supposed to modify the create_pdo_flag
          in the registry so the iSCSI pdo is always enumerated.  The recent
          change for CQ#27436 has a side effect which will prevent the VBD
          from correctly modifying the create_pdo_flag.


   2.  Problem: CQ#28286
          Chariot times out when running the FileSendShort script with
          chimney enable/disable toggling.

       Cause:
          Before a connection upload completes, the chip may receive a TCP
          FIN segment which will cause the driver to indicate a disconnect
          event immediately to the host.  If there are buffered data (indicated
          to the stack as part of upload completion request), the stack will
          get the disconnect event before the data which is a problem.

       Fix:
          Upon completing an upload request, the disconnect event will not
          be indicated to the stack if there is buffered data.  Instead the
          disconnect event is reflected in the TCP connection state.


   3.  Problem: CQ#26082
          The device does not link with a 100 hub when the system goes to
          lower power state.

       Cause:
          10mb and 100mb half duplex speeds were not advertised.


   BCM5706/08 Firmware v3.4.4
   ---------------------
   1.  Enlarge the maximum hdr size to 64 words to avoid overflow during lso
       capture which resulted in TPAT assertion.

   2.  CQ#28734 - Make sure the firmware to honor the RSS disable request in CP.  


   BCM5709 Firmware v3.4.4
   ---------------------

   1.  CQ#28734 - Make sure the firmware to honor host request to disable RSS
       in CP. 



   Enhancements:
   -------------

   1.  Update BCM5709 rv2p_p2.h which has the recent changes made to the
       BCM5706/08 version.



Version 3.1.5 (Mar 2, 2007)
===========================

   Fixes:
   ------

   1.  Problem: CQ#28490
          VBD: Cannot login to iSCSI target using MS iSCSI over TOE in 
          x64 environment

       Cause:
          The cpu number from KeGetCurrentProcessorNumber() in isr is not
          correct because the high 8-bit value of the 16-bit data is not zero.

       Fix:
          Only use low 8-bit value for cpu number. 


   2.  Problem: CQ#28563
          WSD driver breaks with KMDF vbd because PDO name is invalid

       Cause:
          The driver doesn't provide pdo name.

       Fix:
          Provide a name for pdo. 


   3.  Problem: CQ#28489
          The power management tab allows for WOL configuration on a 5708S
          adapter even when the nvram configuration is set to disable WOL.

       Cause:
          The wol_cap parameter was read from the nvram during initialization
          but it was overwritten by the value in the registry.

       Fix:
          Overwrite the value in the registry with the setting in the nvram.


   Enhancements:
   -------------

   1.  Add support for BCM5709 IPv6 TCP/UDP checksum offload.
   2.  Add support for BCM5709 IPv6 LSO.
   3.  Provide iSCSI boot signature info to B06_IOC_GET_DRIVER_INFO ioctl.
   4.  Fail any stop or remove actions if the device has iSCSI boot signature.


   BCM5706/08 Firmware v3.4.3
   ---------------------

   1. Fixed the com_no_buffer counter so it also tracks multi-cast and
      broadcast packet loss properly.  Before the fix, it only tracks
      the uni-cast packet loss. 

   2. CQ#28520 - Fixed a problem where broadcast and multi-cast traffic didn't
      get route to L2/RDMA/ISCSI path when RSS is enable. 


   BCM5709 Firmware v3.4.3
   ---------------------

   1. Added IPV6 LSO support.
   2. Fixed a code merging bug in rxp.c where l2_interface_update_statistics
      wasn't getting call anywhere.
   3. Changed the behavior of the com_no_buffer counters so it also tracks the
      broadcast and multi-cast L2 packets loss. In addition, restrict this
      counter to only track packet loss for both L2 and RSS path. 


   BCM5709 Firmware v3.4.2
   ---------------------

   1. Remove reset cs16_vld bit workaround when cid indicates catchup packets.
      RV2P microcode will include this workaroud.

   2. When checking for broadcast packets during statistic update, it should
      be enough for the firmware to check first dword of the MAC DA.



Version 3.1.4 (Feb 14, 2007)
============================

   Enhancements:
   -------------

   1.  Request: CQ#27806
          Add support for the following counters: unicast_bytes_rcvd,
          multicast_bytes_rcvd, broadcast_bytes_rcvd, unicast_bytes_xmit,
          multicast_bytes_xmit, broadcast_bytes_xmit.


   BCM5706/08 Firmware v3.4.2
   ---------------------

   1. CQ#28454 - Fixed LH NDIS6 checksum offload failure by passing the RXP
                 bit status field to host so host driver can make the correct
                 decision. 
    
   2. CQ#28482 - Fixed Offloadstress +TOE  toggling on 5708B2 causing break in
                 dbg. The host is looking for ms retx time stamp and an
                 assertion to check the maximum retx time out. However,
                 firmware is using 100us base time for retx timeout and passing
                 up a large value without converting to ms base to host and
                 cause the assertion. Now the firmware is changed to use ms
                 timer base so this problem won't happen.

   3. Implemented extra statistics counters so BCM5706/08 can pass LH NDIS6
      certification.  


   BCM5709 Firmware v3.4.1
   ---------------------

   1. Added zero packet workaround in TPAT so TDMA won't generate bad checksum
      when it encounters a series of zero dma length in ftqs back to back. This
      workaround is only active for a0 silicon. 
    
   2. Added workaround to reset cs16_vld bit when cid indicates catchup packets
      in ftq entry from RXP to RV2P so it prevents the RDMA block to lockup.
    
   3. Added TPBUFF workaround in TXP for A0 silicon. 
    
   4. CQ#28482 - Fixed LH NDIS6 checksum offload failure.    

   5. Implemented extra statistics counters so BCM5706/08 can pass LH NDIS6
      certification.  



Version 3.1.3 (Feb 8, 2007)
===========================

   Fixes:
   ------

   1.  Problem: CQ#28437
          Enabling the driver verifier on the VBD causes NDIS device node
          to disappear.

       Cause:
          The call to WdfFdoQueryForInterface may return a success status
          code that is different than STATUS_SUCCESS.

       Fix:
          Need to use the NT_SUCCESS macro to determine if the call is
          successful.



   Firmware v3.4.1
   ---------------

   1. Change minimum RTO from 1 second to 200ms so it is consistent with
      Linux and MSFT TCP stack.
    
   2. Make sure TOE stack to do force ack so it sends out window update when
      received TCP zero window probe request from remote (ie. remote sends 
      ack minus one).

   3. Take out the 100us delay before flushing the rx/tx pipline (see CQ#25939
      below) during TCP connection upload, instead RXP will drop the packet if
      the l4 context associated with the packet has been freed. The avoid us
      to slow down the CP and improve the sockdie performance. 



Version 3.1.2 (Feb 5, 2007)
===========================

   Fixes:
   ------

   1.  Problem: CQ#28337
          system break when running driver unload/load on two adapters 
          continuously.

       Cause:
          using the interrupt handle in pdev after pdev was freed.

       Fix:
          using the interrupt handle in pdev before pdev was freed.

    2. Problem: CQ#28382
          BCM5709 - NDIS x64 driver is banged out with VBD v3.1.1 

       Cause:
          VBD did not provide BUS_INTERFACE_STANDARD interface to 
          NDIS miniport driver.

       Fix:
          Add BUS_INTERFACE_STANDARD interface in VBD.


Version 3.1.1 (Jan 30, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#28189
          Unable to pass traffic at 10mb.

       Cause:
          The Early DAC Wakeup Enable bit allows the transmitter to be shutdown
          in 10BT mode except for sending out link pulses.  This allows for a
          low power operation in 10BT mode which is useful in WOL application. 
          The default value of this register bit gets loaded from a strap value
          on the GPHY provided by the chip that instantiates the PHY.  In BCM5709
          this strap value is 1, meaning that the early DAC Wakeup Enable bit
          is set by default

       Fix:
          As a workaround for A0, the driver needs to clear this bit when
          bringing the PHY out of reset.


   2.  Problem: CQ#28246
          BCM5709: system breaks in to debugger on Shutdown.

       Cause:
          The WdfInterruptSynchronize call in timer callback routines sometimes
          caused BSOD because the interrupt handler was invalid.

       Fix:
          Hookup to the interrupt enable/disable callback routines and use 
          the system interrupt status to determine if the interrupt handle 
          is valid. Also there are some other fixes for MSFT PNP tests. 


   3.  Problem: CQ#28293
          BCM5709 - Break exception when loading latest VBD on 5709C

       Cause:
          Failed the loading if WdfDeviceAssignSxWakeSettings() is failed.

       Fix:
          Change the assumption which assume the wake up setup have to 
          success because in some systems it is not true.


   4.  Problem: CQ#28250
          BCM5709 - BSOD when loading NDIS device on second BCM5709 AUT.

       Cause:
          When irq was shared, the interrupt was coming before setup completed.

       Fix:
          Don't serve the interrupt if the setup is not completed.



Version 3.1.0 (Jan 23, 2007)
============================

   Fixes:
   ------

   1.  Problem: CQ#27436
          F6-install does not work on systems with multiple devices.

       Cause:
          The current implementation of F6-install will load multiple
          instances of the bus driver on systems with multiple devices.
          During F6-install, the remove PnP irps are sent to the bus
          driver directly by passing ftsk on the second instance.  This
          will cause the driver to crash since ftsk is still bound to it.

       Fix:
          Only allow one instance of the bus driver running during
          text mode setup.


   Enhancements:
   -------------

   1.  Request:
          Add support for BCM5709.

   2.  Request: CQ#27230
          Convert to a KMDF driver.


   Firmware v3.4.0
   ---------------

   1. CQ#27911 - Added RSS support for Multicast MAC DA.

   2. CQ#28095 - Set DF bit in every TOE packets to avoid fragmentation in
         VPN tunnels.



Version 3.0.7 (Jan 2, 2007)
===========================

   Firmware v3.0.2
   ---------------

   1. CQ#28005 - Fixed L4 performance problem with chariot high performance
                 script by fine tuning the txp_tdbcThrhld to 29. It prevents
                 some tcp connections that are transmitting with less than mss
                 size to exhaust the TDBC when accumulate BDs and slow down the
                 tx pipeline by capping the accumulation to up 3 cache lines
                 such that other connections that transmitting at mss size
                 have more caches to work with.



Version 3.0.6 (Dec 29, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#27970
          System looks up while running Windows diag.

       Cause:
          The bus driver calls KeSynchronizeExecution on an interrupt
          object that does not exist.



Version 3.0.5 (Dec 22, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#27889, #27903
          System is not able to ping a remote system after installing
          Microsoft iSCSI boot initiator and rebooting the system.

       Cause:
          The driver state was not restored when processing CANCEL_STOP
          PNP IRP.  The routine um_bdrv_abort_stop_device is called to
          restore the driver state based on the current PNP state.  However
          driver state was used to make this decision which is not correct.

       Fix:
          In um_bdrv_abort_stop_device, change GET_DRV_STATE to GET_PNP_STATE.


   2.  Problem: CQ#27557
          System could crash when resuming from S4.

       Cause:
          This problem occurs on system with the device sharing interrupt
          with another device.  During initialization a device could be
          interrupted (by an active device).  The ISR then falsely schedule
          a DPC because the status block has not been reinitialized, resulting
          in the use of a stale status to determine packet completions.

       Fix:
          Reset the status block when the device is being reset.


   Enhancements:
   -------------

   1.  Request: CQ#27950
          Modify the INF file to create a "product_version" key.

   2.  Request: CQ#27902
          Make iSCSI fast response registry configurable.


   Firmware v3.0.1
   ---------------

   1. CQ#25939 - When initiating tcp upload, we should invalidate the cam
                 first, then delay 100us before we flush the rx/tx pipeline.
                 This allows the remaining data of this connection in the rx
                 pipeline get processed properly by RXP. Otherwise, there
                 could be situation that context memory of the connection is
                 freed but there is still some data in RXP ftq waiting to be
                 processed as l4 data with reference to the freed context.
                 This will cause RXP to assert.
                 
   2. CQ#27886 - Fixed context memory allocation boundary wrapping. The
                 incorrect wrapping could cause firmware to allocate the same
                 physical page to 2 different vcids.



Version 3.0.4 (Dec 14, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#27834
          BACS could not determine the medium type if there were no client
          device bound to the VBD.

       Cause:
          The medium type of the device is not returned in the
          b06_driver_info_t structure if nothing is bound to the VBD.


   2.  Problem: CQ#27863
          Checked version of Windows asserts in MmFreeContiguousMemory when
          running WSF on the client system.

       Cause:
          The call to MmFreeContiguousMemory is at an IRQL dispatch which
          is illegal.

       Fix:
          Changed the default parameter for "use_mblk_pool" to FALSE.  This
          will prevent the driver from dynamically allocating shared memory.


   Firmware v3.0.0
   ---------------

   1. CQ#27401 - Added mechanism to toggle between "strict" and "relax" nagle.
          This prevented a performance hit when using MSFT initiator to 
          format a drive. The root cause is that sometime our TOE stack 
		  will generate a odd number of packets for each iSCSI write 
		  with last packet size less than mss. With Nagle enable, TOE 
		  stack won't send out the last packet since it is trying to 
		  coalsce the bytes util it reaches mss or until target acked all 
		  the bytes it has received. Target delayed the last ack because 
	 	  it is enforcing the delay ack mechanism (ie. ack every two 
		  segments received). Therefore the last ack won't get send out 
		  until target delay ack timeout (~200ms). This drastically reduce 
		  the performance when formatting a drive. 
                  
    2. CQ#27725 - Avoid COM assertion by making sure the tcp receive window
          calculation won't exceed l4ctx_tcp_max_adv_win. 

 

Version 3.0.3 (Dec 11, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#27760
          Failures when running the Test Rebalance test of the PnPDTest suite.

       Cause:
          There were ref_cnt and logic bugs when handling IRP_MN_START_DEVICE, 
          IRP_MN_SURPRISE_REMOVAL, and IRP_MN_STOP_DEVICE which caused more
          than one pnp tests failed.


   2.  Problem: CQ#27775
          Driver may crash while running BACS diagnostic.

       Cause:
          The txq->hw_con_idx_ptr for the catchup is not initialized because
          this transmit queue is not needed for diagnostic.  But the interrupt
          service routine requires this pointer to be valid for determine
          transmit completion.

       Fix:
          Initialize txq->hw_con_idx_ptr to a valid pointer even when the
          diagnostic driver is bound to the VBD.



Version 3.0.2 (Dec 6, 2006)
===========================

   Fixes:
   ------

   1.  Problem: CQ#25647
          BACS cable diagnostic does not work.

       Cause:
          Cable diag fails because the phy is in power down mode.  The
          boot code puts the PHY in power down mode when all the client
          devices are unbound from the vbd.  The PHY remains in power mode
          when the diag client device binds to the vbd.

       Fix:
          Take the PHY out of power down mode when the diag driver binds
          to the VBD.


   2.  Problem: CQ#27493
          The host stack could tear down a SMB connection after it is uploaded
          from the chip.

       Cause:
          The TCP delegated value for MaxSndWin is invalid which causes the
          host stack to drop incoming packets.  Eventually, after 10 seconds,
          the stack will tear down the connection.


   Firmware v2.8.26
   ----------------

   1.  CQ#27682 - fixed L5 to work with new CAM (workaround) logic in CP.



Version 3.0.1 (Nov 28, 2006)
============================

   Firmware v2.8.25
   ----------------

   1.  CQ#27512 - removed checking of RLUP_STATUS_SUCCESS bit during CAM
                  lookup because the bit is shared with lookup/add/invalidate
                  operations. Removing it prevented a problem where we could
                  end up with two cam entries with the same tuples when RDMA
                  connections are offloaded. 



Version 3.0.0 (Nov 15, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#27260
          Chariot could fail data validation when running the hi-perf
          script while TOE enable/disable is being toggled continuously.

       Cause:
          When generic buffers span two application buffers with an island
          to the left, Rv2p could may instruct the driver to copy data
          from generic buffers to the wrong location in the posted buffer.

       Fix:
          Include a new Rv2p microcode.  The new microcode will only issue
          a copy operation up to the left edge of an island.


   2.  Problem: CQ#26743
          BACS Allows Adding iSCSI Boot Device to Team

       Cause:
          BACS has No information from drivers for it.

       Fix:
          Add L2_IOC_GET_ISCSIBOOT_PAGING_INFO to l2_query_information() which
          provide iSCSI boot signature and paging path counter information.
          Also paging path counter is separated from other counters and fixed
          the PDO paging path counter by saving the InPath flag before 
          sync_send_irp() which will change the Inpath flag.


   3.  Problem: CQ#27326
          IPMI enabled on BCM5706/08 adapter stops traffic on Host OS when Guest OS
          launched in MS Virtual Server.
       
       Cause:
          When IPMI is enabled, the firmware does not forward traffic to the
          host even when the receive mask is set to promiscuous mode.

       Fix:
          Firmware v2.8.23 fixes this problem.  The host driver also needs
          to set RPM_SORT_USER0_PROM_VLAN in the sort mode register.


   Firmware v2.8.24
   ----------------

   1.  CQ#26326, #24334 - Increase interrupt generation on an iSCSI
          connection.
   2.  CQ#27370 - fixed TPAT assertion when receiving a packet less than
          the mss during LSO capture state. 
   3.  CQ#27463 - fixed missing BD problem when TCP nagle is enable. 
   4.  CQ#25618 - fixed tcp invalid ack checking. The ack number must fall
          between snd_max+1 and snd_una in order to be valid.
   5.  CQ#25916 - Make sure to forward all traffics to host when host is 
          programmed for promiscuous mode and PM 0 didn't have a 
          match while other PMs have match.



Version 2.9.6 (Oct 18, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#27024
          Not able to offload all 1024 connections on x64.

       Cause:
          The call to MmAllocateContiguousMemory at IRQL Dispatch is more
          likely to fail which will lead to the driver failing the connection
          offload request.

       Fix:
          Change the driver to call MmAllocateContiguousMemory at IRQL passive.


   2.  Problem:
          Data corruption could occur when a connection is uploaded and the
          stack continues passing traffic in L2 mode.
      
       Cause:
          When a connection is uploaded a transmit buffer could be partially
          completed.  The stack will then continue transmitting the buffer
          in L2 mode starting at the location where the offload target had
          left off.  This location is specified by the offload target by
          advancing the buffer pointer to point to the unsent data.  When
          the buffer is partially completed, the buffer pointer is advanced
          incorrectly causing the stack to send data in L2 mode from the wrong
          location.

       Fix:
          Fixed the logic for computing the size of the buffer that were
          sent successfully.


   Firmware v2.8.22
   ----------------

   1.  CQ#22527 - Added TCP nagle support with TBD cache FREE_CNT check.



Version 2.9.5 (Oct 5, 2006)
===========================

   Firmware v2.8.21
   ----------------

   1.  Back out the changes in v2.8.20.
   2.  CQ#26907 - Added cam workaround.
   3.  CQ#23436 - l4ctx_gen_bd_max is set to 0xff if TCP receive window
       is too big.
   4.  CQ#23467 - TCP receive window may close if the maximum receive
       window size is smaller than application buffer size.



Version 2.9.4 (Sept 18, 2006)
=============================

   Fixes:
   ------

   1.  Problem: CQ#26659
          Slow backup when running EMC networker backup with TOE disabled on
          the client.

       Cause:
          The client could take a long time (up to 500ms) to send TCP ACK
          back to the server.  The long delay is a side effect of the fix
          for CQ#23327 in VBD v2.8.7 which reduces locking overhead 
          associated with de-queuing receive packets.

       Fix:
          When receive packets are not de-queued but the status block is
          acknowledged, the driver will cause the chip to generate a timer
          interrupt within 100us.  This timer interrupt triggers the driver
          to process the packets in a timely manner.


   Enhancements:
   -------------

   1.  Request: CQ#26208
          Add a new registry configuration "keep_vlan_tag" for controlling
          VLAN tag stripping.

   2.  Request: CQ#26673
          Disable the enumeration of the WSD PDO on Windows 2000.


   Firmware v2.8.19
   ----------------

   1.  Fixed TPAT to invalidate header queue pre-fetch after processing
       each FTQ entry.



Version 2.9.3 (Aug 15, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#23060
          Web-bench shows lower performance when TCP offload is enabled.

       Cause:
          During this particular Web-bench test, connections are offloaded
          for only a brief period of time.  As a result, overhead associated
          with connection offload is more apparent.

       Change:
          1) Wherever possible, look-aside list is used for memory allocation.
          2) Wherever possible, memory allocations are combined.  Instead
             of allocating multiple small blocks, one big block is allocated.
          3) Offload connections at IRQL DISPATCH.



Version 2.9.2 (Aug 9, 2006)
===========================

   Fixes:
   ------

   1.  Problem: CQ#26256
          A break occurs with the message below when running sockdie maxtput.

          PANIC!!! if(((gen_buf->buf_virt - (u8_t *) 0) & LM_PAGE_MASK) !=
             (gen_buf->buf_phy.as_u32.low & LM_PAGE_MASK))

       Cause:
          The break occurs because of a change in generic buffer alignment
          causing an inconsistent virtual and physical address.



Version 2.9.1 (Aug 8, 2006)
===========================

   Fixes:
   ------

   1.  Problem: CQ#26235
          A crash will occur after installing the driver on Windows 2000.

       Cause:
          The driver imports InterlockedPopEntrySList which is not available
          in Windows 2000.  This routine is called from
          ExAllocateFromNPagedLookasideList.

       Change:
          The sources file needs to have the _WIN2K_COMPAT_SLIST_USAGE define
          which will force the driver to use W2K compatible version of
          ExAllocateFromNPagedLookasideList.


   2.  Problem: CQ#26244
          A crash will occur after installing the driver on Windows 2003 x64.

       Cause:
          The crash occurs because the NPAGED_LOOKASIDE_LIST structure isn't
          16-byte aligned on x64/ia64 system.

       Change:
          Ensure the start of the main device structure is 16-byte aligned.


   Firmware v2.8.18
   ----------------

   1.  Fixed the TCP statistics double counting issue.
          


Version 2.9.0 (Aug 7, 2006)
===========================

   Fixes:
   ------

   1.  Problem: CQ#22702
          There is no power management tab in the Miniport's device
          property page.

       Cause:
          The S part does not advertise WOL capabilities.

       Change:
          Enable WOL capabilities for the S part only if the NVRAM is
          configured for a LOM device and it is also configured to 
          allow the device to have Gigabit link on vaux.


   2.  Problem: CQ#25985
          System could crash when driver verifier low resource simulation
          is enabled.

       Cause:
          During connection offload, the driver may not be able to allocate
          memory.  The call to allocate memory returns a NULL pointer which
          the driver references, causing a crash.


   3.  Problem: CQ#25998
          BCM5706S may not be able to pass traffic when the device is
          configured to do "autoneg with 1Gb fallback" and the switch
          setting is changed for forced to auto negotiation.

       Cause:
          The driver read the wrong phy register to determine if the link
          partner is sending config words.  When the driver detects that
          the link partner is sending configs, it will restart autonegotation.


   4.  Problem: CQ#26068
          Hit an assert in a checked OS during shutdown.

       Cause:
          Timer objects are not initialized if there is no child device
          bound to the bus driver.  During shutdown, the driver tries to
          cancel the timer objects causing an assert in the OS because
          these objects are not initialized.

       Change:
          Cancel the timer objects only if the current or the previous
          driver state is RUNNING.


   5.  Problem: CQ#26127
          System intermittently crashes when un-installing the NDIS
          miniport while BACS is running.

       Cause:
          When NDIS miniport is un-bound, the bus driver goes to the
          SETUP state which will free the statistics block.  The crash
          occurs when BACS queries the bus driver for statistics causing
          a reference to a memory block that has been freed.

       Change:
          The driver is modified to return statistics of zero's when
          it is in the SETUP state.



   Enhancements:
   -------------

   1.  Request: CQ#24744
          Modify the description of jumbo frame setting to "Jumbo Mtu".

   2.  Request: CQ#24746
          Make WOL capabilities configurable through BACS but don't
          show this parameter in the Miniport's property page.



Version 2.8.15 (July 12, 2006)
==============================

   Firmware v2.8.17
   ----------------

   1.  Fixed bug in L5 Tx pipeline code that was preventing retransmission 
       flush from propagating through to COM.



Version 2.8.14 (July 8, 2006)
=============================

   Fixes:
   ------

   1.  Problem: CQ#22974
          WSD PDO is not enumerated after using a configuration utility
          to change the enumeration flag in the registry to enumerate
          the WSD device.

       Cause:
          The driver keeps an internal flag to enumerate the WSD PDO
          when the NDIS miniport device has successfully started.  This
          flag is never set if the L2ND device has successfully started
          without WSD PDO enumerated.  As a result, a subsequent change
          to the create_pdo_flag to enumerate the WSD PDO will not cause
          the driver to enumerate the WSD device.

       Fix:
          Remove the use of the internal flag.  Instead, use the
          create_pdo_flag to determine whether or not to create the WSD PDO.



Version 2.8.13 (June 30, 2006)
==============================

   Fixes:
   ------

   1.  Problem: CQ#25526
          The driver may hit a driver verifier bugcheck when disabling the
          NDIS miniport which the WSD device stack active.

       Cause:
          The driver calls IoDeleteDevice to remove the WSD PDO in the
          context of the L2ND IRP_MN_REMOVE_DEVICE irp.  This call causes
          a bugcheck in the driver verifier if the WSD device is active since
          the device object is still be referenced.

       Fix:
          The WSD PDO is deleted in the context of IRP_MN_REMOVE_DEVICE irp
          if the L2ND PDO has already been deleted.


   2.  Problem: CQ#22974
          WSD PDO is enumerated after using a configuration utility to
          change the enumeration flag in the registry to not enumerate
          the WSD device.

       Cause:
          The driver keeps an internal flag to enumerate the WSD PDO
          when the NDIS miniport device has successfully started.  This
          flag does not reset.  As a result whenever the NDIS miniport
          loads successfully, the WSD PDO will always be enumerated.

       Fix:
          Qualify the internal flag for enumerating the WSD PDO with
          the enumeration flag from the registry.


   Firmware v2.8.16
   ----------------

   1.  Fixed problems in upload path in L5 TxP.



Version 2.8.12 (June 23, 2006)
==============================

   Fixes:
   ------

   1.  Problem: CQ#25505
          Link remains active when the device is disabled.

       Cause:
          Boot code does not power down the PHY/SERDES when the driver
          is disabled.

       Change:
          Boot code v1.9.2 defines a new message, DRV_MSG_CODE_UNLOAD_LNK_DN,
          which allows the driver the option of bringing the link down
          whenever it unloads.


   Firmware v2.8.15
   ----------------

   1.  Fixed race condition in L5 TCP state upload path.



Version 2.8.11 (June 15, 2006)
==============================

   Firmware v2.8.14
   ----------------

   1.  Added workaround to compiler out of order instruction generations.



Version 2.8.9 (June 15, 2006)
=============================

   Fixes:
   ------

   1.  Problem: CQ#25200
          Unable to load the driver in W2K.

       Cause:
          The call to KeFlushQueuedDpcs is not available on W2K.

       Fix:
          The driver will get the entry point to this routine during
          initialization.  This call will not made when the driver is
          running on W2K.


   2.  Problem: CQ#25280
          Event viewer does not show events generated by the driver.

       Cause:
          The insertion string is too long causing the call to
          IoAllocateErrorLogEntry to fail.

       Change:
          Use the PDO device name as the insertion string.


   Enhancements:
   -------------

   1.  Request: CQ#24764
          Include additional devices in the INF file.

   2.  Request: CQ#24643
          Honor the new NVRAM speed settings.  The new setting allows
          a user to configure the device to do auto negotiation and if
          auto negotiation fails, the device falls back to 1Gb forced.


   Firmware v2.8.13
   ----------------

   1. Fixed another L4 upload causing assert in VBD.

   2. Fixed L5 race condition that could lead to connection hung.



Version 2.8.8 (June 5, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#25000
          Disabling the driver causes an assert with the following message:
          (  um_clnt.c,  494): PANIC!!! if(CLIENT_REFCNT(pdev, do_type)).
       
       Cause:
          Reference count was not decremented when completing forwarding
          packets.  This bug was introduced in v2.8.7 when the fix for
          CQ#23327 was added.


   2.  Problem: CQ#25013
          Assert in the driver verifier with the following message:
              WDM DRIVER ERROR: [bxvbdx.sys @ 0xF7A0EB57] A driver has
              passed an invalid device object to a function that requires
              a PDO (DevObj = 8C2FE250).

       Cause:
          The driver passes the next device object in the call to
          IoGetDeviceProperty.  The driver verifier is expecting the
          physical device object of the bus driver's FDO.


   3.  Problem: CQ#25021
          BACS interrupt test fails.

       Cause:
          The interrupt test monitors for changes in the variable isr_cnt
          which gets incremented when an interrupt is recognized and the
          driver schedules a DPC.  Due to the fix for CQ#23327, this
          variable may not be incremented even when an interrupt is
          recognized by the driver.

       Change:          
          The fix is to add a new variable intr_recognized_cnt that gets
          incremented whenever an interrupt is recognized by the driver.
          The interrupt test will monitor for changes in variable.


   4.  Problem: CQ#24594
          BACS MAC loopback test fails intermittently.

       Cause:
          MAC loopback may not work if the EMAC_MODE_HALF_DUPLEX bit is set
          in the EMAC mode register.  This bit is set if the current link
          is configured for half duplex.
       
       Change:
          The fix is to ensure EMAC_MODE_HALF_DUPLEX bit is not set when
          the driver is configured for MAC loopback.


   Firmware v2.8.12
   ----------------

   1.  Fixed L5 upload causing assert in VBD.

   2.  Redo the clearing the L4 upload state after upload -- using different
       scheme to handle L5 upload.

   3.  Fixed L4 upload causing assert in VBD.



Version 2.8.7 (May 17, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#23327
          High CPU utilization when running Web-bench with RSS enabled.

       Cause:
          When RSS is enabled, the number of packets received per DPC is
          much lower than when RSS is disabled.  The overhead in entering
          and exiting the DPC is spread over a smaller number of packets.

       Change:
          Batch receive processing so that when RSS is enabled, the number
          of packets processed during a DPC is higher.


   2.  Problem: CQ#24647
          Network settings in an answer file do not take effect during
          unattended installation.

       Cause:
          Microsoft installer only expects PCI network device when applying
          network configurations specified in the answer file.  Currently
          the bus driver reports the bus type of all the client devices as
          Internal when the installer expects PCIbus.

       Change:
          In response to IRP_MN_QUERY_BUS_INFORMATION query, the bus driver
          returns PCI bus type for all the client devices.


   Firmware v2.8.11
   ----------------

   1.  Undo the clearing of L4 upload state after upload -- this was causing
       failures in destroy QP.

   2.  Fixed L5 retransmit, which was broken in integrated firmware.



Version 2.8.6 (May 4, 2006)
===========================

   Firmware v2.8.9
   ---------------

   1.  Cleared the L4 upload state after upload which is asserted when the
       same CID is offloaded again in the case of L5.

   2.  Fixed 2K IO receive issue.



Version 2.8.5 (May 3, 2006)
===========================

   Enhancements:
   -------------

   1.  CQ#22904 - Add support for external loopback at 10Mb and 1Gb.
       Currently only 100Mb external loopback is supported.


   Firmware v2.8.8
   ---------------

   1.  Fixed bug in L5 TxP firmware - segd.push_flags was not being
       initialized in L5 post_scan callout(s), causing FIN from previously
       closed L4 connections to be set in new L5 segments and causing
       erroneous behavior in mixed mode (TOE/RDMA) traffic environment.



Version 2.8.4 (Apr 27, 2006)
============================

   Firmware v2.8.7 with new rxpfw.h
   --------------------------------

   1.  Fixed use of GRC access macros in rxp.



Version 2.8.3 (Apr 26, 2006)
============================

   Enhancements:
   -------------

   1.  Include a new enhancement to work around the CQ#23945, #23864, and
       #23123 issues.  The new enhancement will handle S1, S2, and driver
       unload cases.


   Firmware v2.8.7 changes:
   ------------------------

   1.  L4 context variable rearrangement (tcp_pad<-->l4ctx_timer) to
       eliminate L5 context corruption at offload (probably a benign bug).

   2.  Fixed bug in L4 offload portion that was freezing on QP
       Migration/sockdie.

   3.  Added use of GRC access macros (PUT_GRC/GET_GRC) in RxP to try
       to fix lockups seen in PQA with WSD on IVBD/5706.



Version 2.8.2 (Apr 19, 2006)
============================

   Enhancements:
   -------------

   1. Request:
         Include firmware v2.8.5.

   2. Request:
         Update the TCP offload firmware to T2.6b release.



Version 2.8.1 (Apr 14, 2006)
============================

   Enhancements:
   -------------

   1. Request:
         Include firmware v2.8.4.

   2. Request:
         Compress code to fit 5706 SPAD memory footprint.  Integrated
         firmware now supports both 5708 and 5706 targets.



Version 2.8.0 (Apr 11, 2006)
============================

   New Features:
   -------------

   1.  Full C-NIC feature set (TOE, iSCSI(HBA), RDMA) support integrated in
       one firmware image.


   Notes:
   ------

   1.  This version of firmware only supports 5708.

   2.  This version of firmware is tested / validated for stability with
       WSD kernel wrapper (bxkw...) version 2.5.60406.

    
   Fixes:
   ------

   1.  Problem: CQ#23742
          BCM5708S may miss link change event when used with IXIA.

       Cause:
          Not reading the correct value from the MII_Status register
          during servicing of a link-up event.

       Change:
          Added code to re-read the MII-Status register.


   2.  Problem: CQ#24281
          On a non-ACPI system, magic packet is able to wake up the system
          from hibernation even when the NVRAM WOL setting is disabled.

       Cause:
          The driver enables magic packet wake-up regardless of the
          NVRAM setting.

       Change:
          Only enable magic packet wake-up if the NVRAM WOL setting is enabled.


   3. Problem:
        CQ: Cont00024204: Memory Deregister Assertion inside SANP when running
        sockdie test script

      Cause:
        Bug in CP firmware for creating QP context was causing corruption of
        unrelated physical context memory.  This was causing random region
        table entries to be zeroed in context memory, which would manifest as
        a region already appearing to be deregistered when the memory region
        deregister command was issued.

      Fix:
        Remove extraneous / errant context memory write during QP context
        initialization on CreateQP in CP firmware.


   4.  Overall stability of WSD/RDMA data and control paths is greatly
       improved.  All outstanding CQ entries logged against WSD/RDMA should
       be re-evaluated with a VBD incorporating this firmware version or later.



Version 2.6.17 (Apr 21, 2006)
=============================
    
   Fixes:
   ------

   1.  Problem: CQ#24445
          Continuous loading/unloading of the VBD running on BCM5706 may
          cause the system to lockup.

       Cause:
          Instrumentation added to resolve CQ#24059 revealed a known issue
          in GRC access. This known issue is fixed in the 5708-B1.

       Fix:
          Include firmware v2.6.8 which has the instrumentation removed.



Version 2.6.16 (Apr 13, 2006)
=============================
    
   Fixes:
   ------

   1.  Problem: CQ#23742
          BCM5708S may miss link change event when used with IXIA.

       Cause:
          Not reading the correct value from the MII_Status register
          during servicing of a link-up event.

       Change:
          Added code to re-read the MII-Status register.


   2.  Problem: CQ#24281
          On a non-ACPI system, magic packet is able to wake up the system
          from hibernation even when the NVRAM WOL setting is disabled.

       Cause:
          The driver enables magic packet wake-up regardless of the
          NVRAM setting.

       Change:
          Only enable magic packet wake-up if the NVRAM WOL setting is
          enabled.



Version 2.6.15 (Apr 8, 2006)
============================
    
   Fixes:
   ------

   1.  Problem: CQ#24181
          A non-ACPI system may crash during hibernation.

       Cause:
          In certain scenario, the workaround for CQ#23945, #23864, and
          #23123 may cause to the chip to DMA a status block to a
          memory location that has already been freed.

       Change:
          Make sure the memory block needed for the workaround is not freed.


   1.  Problem: CQ#24059
          LOM2 hangs during chariot TOE tests.

       Cause:
          Receive pipeline stall due to context corruption.
          The context corruption is caused by a race condition
          where the write operation to the context page table
          can be performed out-of-order w.r.t. a context read
          operation. This race condition is only exposed 
          during stress context access.

       Change:
          Include firmware v2.6.7.



Version 2.6.14 (Apr 3, 2006)
============================
    
   Fixes:
   ------

   1.  Problem: CQ#23737
          BCM5708S cannot wake up from hibernation with a magic packet.

       Cause:
          The driver initializes the Serdes for 10/100 Mb which are not
          valid speeds.

       Change:
          Only initialize the PHY for 10/100 Mb if the device is not the
          S part.


   2.  Problem: CQ#24062
          Failing 2c_OffloadLargeSend NDIS test v4.03.91 running on a
          system with SNP.

       Cause:
          Failure occurs when RSS is enabled on the support card.

          One of the processors could loop through the status block for
          too long in servicing a receive queue.  The second processor
          may already have finished servicing the other receive queue.
          Then new packets arriving in this queue was not being processed
          and eventually filled up the queue.

       Change:
          Changed the default dpc_loop_cnt to 1 when RSS is enabled.


   3.  Problem: CQ#23417
          Send window may unexpectedly close causing all file transfers
          to stall.

       Cause:
          Algorithm for opening the send window was originally implemented
          according to RFC-793.  However there is a deficiency in this
          algorithm that could cause the send window to unexpected close.

       Change:
          Included the new firmware which has a more robust algorithm for
          updating the send window.



Version 2.6.13 (Mar 23, 2006)
=============================
    
   Fixes:
   ------

   1.  Problem:
          L4 connections do not get offloaded due to invalid license key.
          This problem occurs when running with the latest boot code.

       Cause:
          The latest boot code moves the shared memory to a different
          location but the latest firmware references a fixed location
          for the shared memory.

       Change:
          Include a new firmware that dynamically determine the shared
          memory location from the shmem header information.


   2.  Problem: CQ#23945, #23864, #23123
          System may lock up or generate IERR when the PCI-E interface
          of the 5708 attempts to transition into L1 state.

       Cause:
          The EPB (PCI-E bridge on the 5708) may miscalculate the number
          of available flow control credits after a wrap around condition,
          and this miscalculation can lead to a case where PCI-E protocol
          is violated and the L1 state is not entered correctly.  This in
          turn could lead to a system hang or IERR.  

       Change:
          Add a workaround to force flow control credit rollover condition
          when the system is entering S3, S4, or S5.  This condition will
          prevent us from transitioning to L1.


   3.  Problem: CQ#23799
          Running Chariot 1-byte send script causes the device from passing
          traffic.

       Cause:
          The Nagle fix (CQ#22527) could cause TBDR block to lock up.

       Change:
          Include the new firmware which as the Nagle fix removed.


   4.  Problem: CQ#24000
          Chariot times out with an error message "Data received does not
          validate correctly".

       Cause:
          The Nagle fix (CQ#22527) could cause chariot to times out.
          Incomplete data transfer could occur resulting in data mis-compare.

       Change:
          Include the new firmware which as the Nagle fix removed.


   5.  Problem: CQ#23838
          Child device's property page does not show PCI slot number on IA64.

       Cause:
          PCI slot number is the UINumber from the DEVICE_CAPABILITIES
          structure.  Currently the UINumber is obtained from the PCI bus
          driver but on some system this number is obtained from the
          next lower device which could be a filter driver.

       Change:
          The driver is changed to submit the IRP_MN_QUERY_CAPABILITIES to
          the attached device object.



Version 2.6.12 (Mar 9, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#23378
          Traffic stops when passing Chariot, iSCSI, and RSS traffic at the
          same time.

       Cause:
          There is a piece of code that initializes RSS key by writing the
          value to rlup registers.  Because of a BCM5706 bug, accessing
          rlup when RSS is enabled could cause a GRC lockup.

       Change:
          Since firmware is computing the RSS hash value, loading the RSS
          secret key is not necessary.  The piece of code in question is
          commented out.


   2.  Problem:
          Traffic stops after running tests for several days on the DC
          deployment systems.

       Cause:
          COM hits a spurious assertion.

       Change:
          Removed the assertion.


   Enhancements:
   -------------

   1.  Request: CQ#22527
          Add support for TCP Nagle algorithm.



Version 2.6.11 (Feb 22, 2006)
=============================

   Fixes:
   ------

   1.  Problem: CQ#23310
          Running sockdie -maxconns causes an assert in the driver.

       Cause:
          The assert occurs because the driver is not able to allocate
          memory for a connection offload.

       Change:
          Added code to fail the offload gracefully when resource is
          not available.


   2.  Problem: CQ#23304
          A stall occurs during MSIT DC deployment.

       Cause:
          There were a lot of L2 transmit requests pending in the driver
          because the firmware asserted.  The assertion occurs if UDP
          checksum isn't 0 or 0xffff.  Since UDP checksum is filled by
          the OS, it will never be 0 and mostly won't be 0xffff, thus
          the assertion is not valid.

       Change:
          Modified the firmware to quality the assert with UDP checksum
          offload.
          

   3.  Problem: CQ#23305
          Running sockdie -maxconns causes an assert in the driver.

       Cause:
          The assert checks to make sure the path state pointer is valid
          when offload tcp state.  The path pointer will not be valid
          if it had been previously uploaded.

       Change:
          Modified the driver to not reference an invalid path state during
          tcp offload.  The firmware will eventual fail the tcp offload.


   4.  Problem: CQ#23134
          Symantec backup software does not work when the connection
          is offloaded.

       Cause:
          When a connection is disconnected, pending buffer posts are
          completed to the stack with the status ABORTED.  This status
          does not convey enough information to the stack with regard
          to the type of disconnect.

       Change:
          The stack and the driver needs to used the new status code
          REQUEST_RESET when completing requests due to a connection
          being abortive closed.


   5.  Problem: CQ#23395
          Running ntttcp continuously and while enabling/disabling the
          VBD may cause a bugcheck.

       Cause:
          The checked driver gets a pointer to a client context and
          then asserts if the do_type is invalid.  This pointer could
          be NULL if the client is being unbound from the bus driver.

       Change:
          Qualify the assertion with a non-NULL client context pointer.



Version 2.6.3 (Feb 11, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#23017
          Unable to receive packets on any of the alternate MAC addresses.

       Cause:
          The driver fails the request to set alternate MAC addresses if
          the input buffer is too big.

       Change:
          Accept the first four valid MAC addresses disregarding the size
          of the input buffer.


   2.  Problem: CQ#23052
          Driver may crash when running IIS Stress test.

       Cause:
          A previously offload request for a path state had failed and
          during the offload of a dependent TCP state, the driver
          references the path state which does not exist.

       Change:
          The driver will not reference the path state if it had failed
          the offload request.


   3.  Problem: CQ#23075
          Ping to one of the MMA's does not work after coming out of
          standby.

       Cause:
          Perfect match filter was not enabled after a chip reset.

       Change:
          Enable the appropriate perfect match filters.


   4.  Problem: CQ#23223
          Offloaded connections may get stuck in the LAST_ACK state.

       Cause:
          If an application post a buffer that is not entirely filled
          into the transmit chain, the firmware will not complete the
          request.  The firmware notifies the driver of completions
          when it sees the descriptor marked by the END bit.

       Change:
          Changed the driver to mark a descriptor with the END bit
          with the descriptor crosses page boundary.


   5.  Problem: CQ#22998, CQ#23129
          Driver crashes during PnPDtest double start test.

       Cause:
          The bus driver is not failing the second start IRP.

       Change:
          The second start IRP will fail if the first one had process
          successfully.



Version 2.6.2 (Jan 30, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#22504
          Driver may crash going into hibernation.

       Cause:
          Driver processes generic buffer list that is invalid.

       Change:
          Make sure generic buffer list does not have any entry
          when TCP offload is not enabled.


   2.  Problem:
          Low throughput with ntttcpr.

       Cause:
          TCP receive window may not open when data are placed into a
          pre-posted buffer.

       Change:
          Included a new firmware.

   3.  Problem:
          Getting spurious interrupts when passing traffic.

       Cause:
          The write to mask off the chip's interrupt in the ISR is posted,
          so the ISR could be called again before the interrupt line
          de-asserts.

       Change:
          The driver will save the status block index when the ISR is
          called.  The second time it is called, if the index is the same
          the driver will issue a register read to flush the posted write.



   Enhancements:
   -------------

   1.  Request:
          Include additional devices in the INF file.

   2.  Request:
          Change the maximum iSCSI connections to twelve.



Version 2.6.1 (Jan 13, 2006)
============================

   Fixes:
   ------

   1.  Problem: CQ#22560
          Unable to start Windows diagnostic when iSCSI PDO is enumerated.

       Cause:
          The bus driver prevents the diag PDO from being enumerated when
          the iSCSI PDO is present.

       Change:
          This restriction is removed.


   2.  Problem:
          Driver may crash if an application post a very large transmit
          buffer.

       Cause:
          The driver submits a disconnect request to the firmware when
          not all the buffers are posted to the chip.  As a result
          the disconnect TCP sequence number was incorrect.

       Change:
          Pend the graceful disconnect request until all the transmit
          buffers are posted.


   3.  Problem:
          Offload stress with many connections offloaded may cause the
          driver to crash.

       Cause:
          When a path offload fails and a TCP offload is in progress, the
          path reference in the TCP data structure is set to NULL.  Then
          we the TCP state is being offloaded, the driver references the
          path pointer which is NULL, resulting in a crash.
      
       Change:
          Before reference the path state, check to see if it is NULL and
          fail the request accordingly.



Version 2.6.0 (Dec 21, 2005)
============================

   Fixes:
   ------

   1.  Problem: CQ#22447
          BACS cannot create a handle to the bus driver if there was PDO
          enumerated.

       Cause:
          VBD device interface was not created when there is no PDO enumerated.

       Change:
          The VBD will always create a device interface when it is loaded.


   2.  Problem: CQ#22126
          During driver reset, the driver may think the firmware is not
          present because it takes too long to respond to a driver command.

       Cause:
          Driver thinks the firmware times out on the Wait2 synchronization.
          This state is obsolete.

       Change:
          Removed the Wait2 synchronization.


   Enhancements:
   -------------

   1.  Request:
          Clean the VBD interface.

   2.  Request:
          CQ#21843 - Add support for dynamic WSD mailbox queue mapping.

   3.  Request.
          CQ#22328 - Set PME_Enable bit on hibernation.



Version 2.5.21 (Dec 9, 2005)
============================

   Fixes:
   ------

   1.  Problem: CQ#22203
          Running ntttcp with receive window larger than 64k causes an
          assertion in the driver.

       Cause:
          The driver has a fixed size buffers for storing pointers to
          buffered data.  Currently, this buffer can hold 40 pointers
          which is not large enough to handle large window size.

       Change:
          The size of the buffer used for storing pointers to buffered
          data is calculated from the initial TCP windows size.


   2.  Problem: CQ#22281
          Hitting an assert in the bus driver when the path and TCP
          states are offloaded at the same time and the path state
          fails the offload.

       Cause:
          The assert is invalid.

       Change:
          The assert is removed.
          

   3.  Problem: CQ#22286
          Running http stress causes an assert in the driver.  The assert
          ensures the MiniportOffloadContext is properly initialized when
          a connection is uploaded.

       Cause:
          A TCP upload request may be submitted to the hardware out of
          order if the connection is in the middle of indicating receive
          data.

       Change:
          Added a TCP upload request queue.  An upload request will go
          into this queue if the connection is in the middle of indicating
          buffered data.  All subsequent upload requests will be installed
          by placing them into this queue.



Version 2.5.19 (Nov 22, 2005)
=============================

   Fixes:
   ------

   1.  Problem: CQ#2081
          Running BACS when there is no client device bound to the bus
          driver causes an assert.

       Cause:
          The NVRAM interface is not initialized when the bus driver is
          in the SETUP state.  BACS is accessing NVRAM in this state.

       Change:
          Modify the driver to initialize the NVRAM interface during the
          SETUP state.

   2.  Problem: CQ#2081
          Driver did not program the SERDES pre-emphasis.

       Cause:
          The pre-emphasis was not initialized when link is active.  This
          value should be initialized prior to getting link.

       Change:
          Driver was changed to setup the pre-emphasis during initialization.


   Enhancements:
   -------------

   1.  Request:
          Add support for licensing.



Version 2.5.18 (Nov 7, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          WOL test on W2K causes an assert in the driver.  The assert
          checks to make sure a power IRP is completed before processing
          the next one.

       Cause:
          The reference counter that tracks the number of pending power
          IRPs is decremented after completing a power IRP.  This counter
          is supposed to be decremented before the completion call as
          the system could submit a new power IRP in the context of
          the completion.

       Change:
          Decrement the reference counter before completing a power IRP.


   2.  Problem:
          Low throughput on multi-processor systems with interrupt
          spreading enabled in the BIOS.

       Cause:
          The bus driver enables RSS support by default.  So each receive
          queue is associated to a particular processor at initialization
          time.  Whenever a receive event comes in, a DPC is always
          scheduled to run on that processor even though an interrupt
          was generated on a different processor.  Normally a DPC is
          scheduled on the same processor that is running the ISR.  Under
          this situation, the ISR to DPC latency is much short than the
          case where the DPC is run on a different processor.

          With this issue, RSS is not supported by the NDIS5.1 driver
          yet the DPC only ran one processor because the RSS code
          path is being executed.

       Change:
          The driver is modified to take the RSS code path only when
          RSS is enabled by the NDIS driver.



Version 2.5.17 (Oct 24, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Driver hitting an assert on statistics query.

       Cause:
          The NDIS driver could issue an unknown statistics type
          which causes an assert in the bus driver.

       Change:
          The assert is removed.


   2.  Problem:
          Unable to ping after when runn HTTP stress.  The adapter
          appears to stop receiving packets.

       Cause:
          One of the internal processor is stuck in a debug logging
          code.

       Change:
          Included a new firmware.



Version 2.5.16 (Oct 22, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Running HTTP stress causes an assert in the driver.  The
          assert checks to make sure all the transmit buffers are
          completed upon getting a disconnect notification.

       Cause:
          Firmware is not completing all the transmit buffers before
          indicating a disconnect completion.

       Change:
          Included a new firmware which works around the problem.



Version 2.5.15 (Oct 20, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Chariot times out running filercvs script when RSS and
          TCP offload are enabled.  The problem does not occur when
          only RSS or TCP offload is enabled.

       Cause:
          The stack was resetting connections because packets were
          indicated with an incorrect RSS hash value.

       Change:
          Included a new firmware which works around the problem.


          
Version 2.5.14 (Oct 17, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          May hit an assert in the stack when running sockdie.  The
          assert checks for a valid re-transmit count when a connection
          is uploaded in a closed state with no disconnect indication.

       Cause:
          The stack expects a valid re-transmit count even when there
          is a TimeoutExpiration indication.

       Change:
          Included a new firmware.



Version 2.5.13 (Oct 16, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          May hit an assert in the stack when running sockdie.  The
          assert checks for a valid re-transmit timeout delta.

       Cause:
          The retransmit timeout delta was negative.  The stack expected
          a positive value.

       Change:
          Included a new firmware.



Version 2.5.12 (Oct 15, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          iSCSI initiator hangs when connecting to the certain target.

       Cause:
          An incorrect MSS value was given to the firmware when
          time stamp option is enabled.


   2.  Problem:
          Running sockdie may cause an assert in the stack which checks
          to make sure the retransmit timer is running when a connection
          is uploaded in the closing state.

       Cause:
          Retransmit timer was not enabled.

       Change:
          Included a new firmware.



Version 2.5.11 (Oct 14, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Running Sparta causes in assert in the driver which checks
          for a valid checksum value when the status bit indicates
          the checksum is bad.

       Cause:
          The check is invalid because the IP header is invalid and the
          checksum value happens to be valid.

       Change:
          Remove the assert.


   2.  Problem:
          Running sockdie causes an assert in the assert which checks
          for a valid TCP send sequence numbers on a connection being
          uploaded.

       Cause:
          Firmware not providing the driver with the correct sequence
          number.
       
       Change:
          Included a new firmware.



Version 2.5.10 (Oct 12, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          The driver completes transmit requests with status aborted
          after the peer has issued an graceful disconnect.

       Cause:
          There was an unintended semicolon at the end of an if statement.
          Because of the semicolon, the code inside the if statement gets
          executed unconditionally.  As a result, the connection state was
          set as if the peer had issued a reset.

       Change:
          Remove the semicolon.



Version 2.5.9 (Oct 11, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          Running sockdie may cause an assert in the driver during
          connection offload.  The assert is to ensure the buffered
          data length is correct.

       Cause:
          In incorrect start sequence number was passed to get_buffered_data.

       Change:
          Pass the last completed sequence number to get_buffered_data
          when building a list of buffered data during connection upload.



Version 2.5.8 (Oct 10, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          Cannot connect to iSCSI target after coming out of hibernation
          or standby mode.

       Cause:
          The driver did not repost generic buffers when coming out of
          hibernation or standby mode.

       Change:
          Post generic buffers when coming out of low power mode.


   Enhancements:
   -------------

   1.  Request:
          Include a new firmware which addresses the following Sparta
          issues:  CQ#1916, CQ#1855, CQ#1854, CQ#1853, CQ#1851, CQ#1848,
          CQ#1845, CQ#1847.



Version 2.5.7 (Oct 9, 2005)
===========================

   Fixes:
   ------

   1.  Problem:
          Hit the assert below while running sockdie.

          *** Assertion failed: (CheckTCB->tcb_sendmax - CheckTCB->tcb_senduna)
              <= (int)Unacked
       
       Cause:
          When a connection is uploaded, partially completed send request
          are not completed back to the stack.  The size of data transferred
          was set to zero.

       Change:
          Initialized the size of the partially completed send request
          during upload.


   Enhancements:
   -------------

   1.  Request:
          Include the latest firmware which has fixes for Sparta issues.



Version 2.5.6 (Oct 6, 2005)
===========================

   Fixes:
   ------

   1.  Problem: CQ#1933
          Hit a driver verifier assertion while running an
          "iSCSI Device Path Exerciser Test".

       Cause:
          drv_close routine returns an initialized status code.

       Change:
          Return a valid status code.


   2.  Problem:
          Hit an assert in the stack complaining send_next != send_una
          in a TimeWait state.

       Cause:
          When the connection was uploaded, the TCP state was CLOSING.
          As part of the upload process, the driver complete the pending
          graceful disconnect request with the status success.  This
          causes the stack to transition to TimeWait state when the
          state should be CLOSING.

       Change:
          The pending graceful disconnect request needs to be completed
          with status UPLOAD_IN_PROGRESS.



Version 2.5.5 (Oct 5, 2005)
===========================

   Fixes:
   ------

   1.  Problem: CQ#1894
          10mb wake-up does not work.

       Cause:
          The driver only advertises 100mb like speed when going
          into lower power mode.

       Change:
          Modify the driver to advertise 10mb and 100b before going
          into lower power mode.


   Enhancements:
   -------------

   1.  Request:
          Build IA64 drivers as part of the release.



Version 2.5.4 (Sept 21, 2005)
=============================

   Fixes:
   ------

   1.  Problem: CQ#1787
          System locks up when ping the iSCSI HBA from the NDIS
          device stack.
       
       Cause:
          This is a side effect of the fix for CQ#1751.  In this fix,
          the L2 NDIS driver holds a transmit lock while submitting
          a send request to the bus driver.  As a result, the bus driver
          cannot complete the transmit request in the same context.  Do
          so will result in a spinlock issue.

          In this case, the bus driver is completing the transmit
          request in the send context because the packet does not
          need to be put on the wire.  Another potential problem
          relating the this completion is that some transmit
          requests could be completing out of order.

       Change:
          Unicast frames directed toward a device stack on the same
          system will also be put on the wire.  This will ensure
          in-order completion of all transmit request.


   2.  Problem:
          Break in ftsk when the cable is disconnected after opening
          a portal.

       Cause:
          Ftsk expects all the transmit buffers completed before
          a TCP disconnect completion, even when the TCP disconnect
          is completing with an error code.

       Change:
          Abort all the pending transmit buffers before indicating
          a TCP disconnect completion.


   3.  Problem: CQ#1820
          xdiag reported crc error on the upgrade license key in
          the NVRAM.

       Cause:
          When the upgrade license key is written to the NVRAM,
          the CRC value was written to the wrong location.

       Change:
          The bus driver was modified to write the CRC value to
          the right location in the NVRAM.


   4.  Problem: CQ#1758
          Loopback test fails when LAA is configured.

       Cause:
          The chip's MAC address was initialized with LAA instead
          of the permanent MAC address.

       Change:
          When the diag driver binds to the bus driver, initialize
          the chip with the permanent MAC address.


   5.  Problem: CQ#1802
          System crash during boot up when BCM5706S is forced to 1Gb.

       Cause:
          The boot code and the driver are accessing the serdes chip at
          the same time causing the serdes chip to lock up.  The
          collision occur because the driver is initializing the serdes
          chip before a core reset when the boot code is running in
          driver absent mode.

       Change:
          Initialize the serdes chip after a core reset.


   Enhancements:
   -------------

   1.  Request:
          Include additional devices in the INF file.

   2.  Problem: CQ#1710
          Program the Serdes pre-emphasis with the value in the NVRAM.



Version 2.5.3 (Sept 6, 2005)
============================

   Fixes:
   ------

   1.  Problem: CQ#1715
          Running Windows diag causes a bugcheck.

       Cause:
          The driver submitted a l4_kwqe_enable_alt_catchup_t even
          when L4 offload is enabled.  This kwqe is only valid
          when for L4 offload.

       Change:
          Only submit this kwqe when L4 offload is enabled.



Version 2.5.2 (Aug 26, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          Running sockdie maxtput causes an assert in an internal CPU.

       Cause:
          In the case of a local graceful disconnect, the driver needs
          to fill the transmit pipe-line by posting a bogus 1 byte buffer.

       Change:
          Included a new firmware and made the necessary changes in
          the driver.



Version 2.5.1 (Aug 22, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          Running OffloadStress causes an assert in the driver indicating
          a hole in the generic buffer list.

       Cause:
          When a generic buffer is added to a connection's generic buffer
          list, the newly added generic buffer becomes the current
          generic buffer which cannot be removed from the list even if
          it is contained within another generic buffer.  The was not
          the case and the current generic buffer was removed from the list.

       Change:
          Prevent the removal of the newly added generic buffer in
          the remove_overlapping_gen_bufs routine.



Version 2.5.0 (Aug 17, 2005)
============================

   Fixes:
   ------

   1.  Problem: CQ#1564
          DeviceManager stops responding after disabling the VBD while
          ping is running in the background.

       Cause:
          When the VBD is being disabled, the PnP manager sends a
          QUERY_REMOVE IRP to the VBD.  In response to this IRP, the
          VBD changes the driver state to PAUSED which causes a pending
          transmit from being serviced.  Since there is a pending
          request, the DeviceManager will not issue the REMOVE IRP until
          all the pending transmits complete.

       Change:
          Allow processing of the pending transmit queue in PAUSED stated.


   2.  Problem:
          Running Windows diag causes the driver to crash.

       Cause:
          When the diag driver unbinds, the VBD reclaims all the receive
          buffers and aborting all the pending transmits by walking the
          perspective list.  These operations are not protected by a
          spinlock which resulted in list corruption.

       Change:
          In um_dgif.c, protect the calls to lm_abort with a lock.


   3.  Problem: CQ#1566
          Occasional blue screen when running Windows diag with TOE enabled.

       Cause:
          The call to lm_free_gen_buf was not protected by a lock
          resulting in a corrupt generic buffer list.

       Change:
          Before calling lm_free_gen_buf, the driver needs to acquire
          the OFLD_LOCK.


   4.  Problem: CQ#1326
          System may crash due to divide by zero error.

       Cause:
          The new interrupt moderation scheme may result in a divide
          by zero when computing CPU utilization.  The call to
          ExGetCurrentProcessorCounts returns usage and idle counts
          which are used to compute CPU utilization.  The formula
          for calculating CPU utilization needs the previous value
          for usage and idle counts for the current processor.  The
          problem arise because the previous usage and idle counts are
          global when they should be saved as a per-processor value.

          Original assumption is that the CPU running the ISR is
          fixed, and since the call to the routine to re-adjust interrupt
          moderation parameters is made from the DPC on the same
          processor as the one running the ISR, there is no need to
          keep a per-processor usage and idle counts.  This assumption
          is not true on some systems.

       Change:
          Add an array of usage and idle counts for keeping track of
          the values on a per-processor basis.


   5.  Problem: CQ#1141
          Chariot reports client closed TCP connection unexpectedly when
          running the filesnds and filercvs scripts.

       Cause:
          The driver is posting generic_return kwqe to the chip after
          submitting an upload request causing context corruption.

       Change:
          Modify the driver so that it does not post any kwqe after
          an upload request has already been submitted to the chip.


   6.  Problem: CQ#1658
          Running diagnostic causes the system to bugcheck.

       Cause:
          lm_post_gen_bufs is being called when the generic buffer
          chain was not set up yet.  This code path should not be
          executed in diagnostic mode.

       Change:
          Call the above routine only when TOE is enabled.  In diagnostic
          mode, TOE is disabled.



   Enhancements:
   -------------

   1.  Request:
          Add support for TCP/IP statistics on offloaded connections.

   2.  Request:
          Include additional devices in the INF file.



Version 2.1.7 (Aug 2, 2005)
===========================

   Fixes:
   ------

   1.  Problem:
          When there are connections offloaded, disabling the bus driver
          causes an assert indicating there are still connections offloaded.

       Cause:
          The assert occurs in the context of IRP_MN_QUERY_STOP_DEVICE
          processing which causes the driver to abort all pending
          requests.  The driver expects all connections to be upload
          by the stack at this point.

       Change:
          Aborting all pending requests should be done later in the
          context of IRP_MN_STOP_DEVICE.  By this time, the stack should
          have uploaded all the connections and unload the NDIS device
          stack.



   Enhancements:
   -------------

   1.  Request:
          Extend the b06_device_info_t to include PCI-E information for
          BCM5708 device.  This change will break the compatibility with
          older BMAPI and will required BMAPI v7.3.5 or newer.

   2.  Request:
          Fail driver initialization if shared memory signature is not
          present.

   3.  Request:
          Retrieve create_pdo_flag from shared memory.  If the value is
          valid, read it from the registry.

   4.  Request:
          Add a new selection under "req_medium" for "hardware default".
          This new selection is only applicable for Serdes device.  This
          selection causes the driver to retrieve link configuration
          from the devices NVRAM.  This selection is set as the default
          in the INF file for all Serdes device.



Version 2.1.6 (July 12, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Running Chariot filesnds script may cause the device to
          stop sending packets.

       Cause:
          The chip is locked up due to tpat crash.

       Change:
          Incorporated a new tpat firmware.


   2.  Problem: CQ#1486
          High bit error rate on BCM5708A0.

       Cause:
          Tx peak-to-peak amplitude was measured as low as 765mV whereas
          800mV is considered passing.

       Change:
          Added a workaround as described in Errata 1.75.



Version 2.1.5 (July 6, 2005)
============================

   Fixes:
   ------

   1.  Problem: CQ#1246
          System is not able to wake up with magic packet on shutdown after
          waking up from hibernation.

       Cause:
          After coming out of hibernation, the PME_Enable bit is cleared
          (by the operating system).  On shutdown, this bit remains cleared.

       Change:
          On shutdown, PME_Enable is enabled if the port has WOL enabled
          in the NVM configuration.


   2.  Problem: CQ#1363
          Running sockdie/nettack may cause the driver to assert or crash.

       Cause:
          While processing a neighbor update request, a dependent path
          may still be in the processing of being offloaded or uploaded.
          A path-neighbor update cannot occur until all the dependent
          path states are offloaded.

          A similar problem could also occur in processing an invalidate
          request.

       Change:
          Only process an update/invalidate request if all the dependent
          states have been offloaded.  The upper layer driver will ensure
          this is the case before submitting the request to the driver.

          While processing an update/invalidate request, if a dependent
          state is being uploaded, the request is ignored.


   3.  Problem: CQ#1476
          System crash when coming out of low power mode when all the
          VBD's child devices are disabled.

       Cause:
          The bus driver was referencing a NULL status block pointer.
          The status block is NULL when there is no child device bound.

       Change:
          Only reference the status when the VBD state before entering
          low power mode is RUNNING.


   4.  Problem:
          Running Chariot filesnds script may cause the device to
          stop sending packets.

       Cause:
          The chip is locked up due to tpat crash.

       Change:
          Incorporated a new tpat firmware.
          


Version 2.1.4 (June 20, 2005)
=============================

   Fixes:
   ------

   1.  Problem: CQ#1432
          There is no link (as indicated by the link LED) when coming
          out of standby.

       Cause:
          When coming out low power mode, the driver sets the device to D0,
          initializes the PHY, and then issues a core reset.  A core reset
          occurs on the transition from D3 to D0 which causes the boot code
          to reset and initialize the PHY while the driver is also doing
          the same thing.

       Change:
          Driver will now initialize the PHY after issuing a core reset.


   2.  Problem: CQ#1449
          Continuously enabling and disabling the NDIS driver could case
          the bus driver to crash or assert.

       Cause:
          When the NDIS driver binds to the VBD, a work item is scheduled
          to allocate generic buffers.  If the disable driver is quickly
          disabled, the work item is not cancelled and could execute
          after the NDIS driver has unbound from the bus driver.  Sometimes,
          this could crash the system since the bus driver is in the
          wrong state.

       Change:
          The change is to only process the work item task when the bus
          driver is in the running state.  Also on the unbind process,
          wait for all the work items to finish before returning.


   3.  Problem:
          Running sockdie causes an assert in the TCP offload code path.
          The assert is for offloading a TCP state that has a NULL path
          state.

       Cause:
          The path offload failed and was removed from the list.  When
          the TCP state is being offloaded, the search to locate the
          path state returns a NULL pointer.

       Change:
          When the path state cannot be located, the driver will fail
          the TCP offload request.


   Enhancements:
   -------------

   1.  Request:
          Add support for multiple transmit chain.



Version 2.1.3 (June 6, 2005)
============================

   Fixes:
   ------

   1.  Problem: CQ#1326
          System bugchecks after installing the driver using HotPlug.

       Cause:
          The driver is referencing a device structure that is NULL when
          the system is being restarted.  Normally the device structure is
          never NULL, but in this case, it is NULL because no child device
          had been created.

       Change:
          On processing system shutdown IRP, the driver will not reference
          the device structure if it is NULL.


   2.  Problem: CQ#1394
          Running sockdie with the maxtput option causes an assert in
          the driver.  The assert is for indicating buffered data but
          there isn't enough buffered data in the generic buffer list.

       Cause:
          In the remove_overlapping_gen_bufs, the current generic buffer
          could be removed.

       Change:
          Before removing a generic buffer from the list, check to see
          if it is the current generic buffer.


   Enhancements:
   -------------

   1.  Request:
          Enable the new interrupt moderation algorithm by default.

   2.  Request:
          Use the PCI memory base that is passed to the driver in
          IRP_MN_START_DEVICE for mapping the device registers to
          system address space.

   3.  Request:
          Use the checksum status flag in the L2 frame header to
          if the checksum is good or bad instead of looking at
          the checksum value.



Version 2.1.2 (May 5, 2005)
===========================

   Enhancements:
   -------------

   1.  Request:
          Sync up with the latest firmware.



Version 2.1.1 (May 3, 2005)
===========================

   Fixes:
   ------

   1.  Problem:
          When connecting two BCM5708S devices back to back with the local
          side sets to auto and the remote side sets to 1Gb, the local side
          will link up to 2.5Gb.

       Cause:
          When forcing link speed, the driver still enables 2.5Gb capability.

       Change:
          Disable 2.5Gb capability when speed is being forced.


   Enhancements:
   -------------

   1.  Request:
          Include the BCM5708 device IDs in the INF files.



Version 2.1.0 (Apr 8, 2005)
===========================

   Fixes:
   ------

   1.  Problem:
          NDIS5.2 driver could crash when the stack is initiating bulk
          offloads or uploads.

       Cause:
          The firmware may complete TCP offload or upload requests out
          of order.

       Change:
          Ensure the requests are completed in the order they were submitted.


   2.  Problem:
          Low L2 performance on Chariot.

       Cause:
          The interrupt moderation settings were not optimal.
       
       Change:
          Made changes to the dynamic interrupt moderation algorithm.


   3.  Problem:
          Encountering intermittent failures running sockdie.

       Cause:
          Path offload with a error completion status was not handled
          properly.  The driver treated this case as being offloaded
          successfully.
       
       Change:
          Made the change to indicate an offload failure to the stack.


   4.  Problem:
          Failing NDIS test 2c_rsssenrecv test script.

       Cause:
          The firmware is placing packets into the wrong receive queue.
          This is a side effect of a workaround for A0 silicon.

       Change:
          Included the new firmware.



   Enhancements:
   -------------

   1.  Request:
          Add support for BCM5708S backplane application.



Version 2.0.7 (Mar 25, 2005)
============================

   Note:  This version is a branch off v2.0.4 tree with the following
          changes.


   Fixes:
   ------

   1.  Problem:
          The checked driver breaks into a debugger when running WOL test.
          The test continues without any problem after hitting a 'g' in
          the debugger.
       
       Cause:
          The drv_power could be called at IRQL DISPATCH.  There is an
          assert in this routine that checks to make sure the IRQL is
          PASSIVE.  This assert is no longer true.

       Change:
          The assert is removed.
 

   2.  Problem:
          With jumbo frame enabled on the NDIS device stack and the iSCSI
          device is running, sending a ping with large buffer will cause
          the system to crash.

       Cause:
          The bus driver indicates a unicast frame to the iSCSI device
          stack even when the destination MAC address does match the
          iSCSI device.  Currently the iSCSI driver does not have jumbo
          frame support.
       
       Change:
          Only forward unicast frames from the NDIS device stack to the
          iSCSI device when the destination MAC address matches the
          iSCSI device.


   3.  Problem:
          Data corruption could occur when multiple offloaded connections
          are transferring data.
       
       Cause:
          During a reload, generic buffer processing is deferred.  However
          generic buffer is not pulled from the head of the global list.
          As a result, a subsequent generic buffer processing for a different
          connection may pull the wrong generic buffers from the head of
          the list.

       Change:
          During generic buffer processing, the driver will de-queue the
          buffer from the global list and save it in its local list.



Version 2.0.4 (Feb 28, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          W2K system crashes when entering low power mode.

       Cause:
          The driver power management routine is called at IRQL DISPATCH
          but the routine is declared as page-able.

       Change:
          Changed the routine declaration so it is not page-able.
 

   2.  Problem:
          Some of the statistics entries returned by the driver are
          incorrect.

       Cause:
          The b06_chip_statistics_t and the hardware statistics block are
          out of sync.

       Change:
          Refine the b06_chip_statistics_t to match the hardware statistics
          block.



Version 2.0.3 (Feb 23, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          System will blue screen when logging off from an iSCSI target.

       Cause:
          Connection can be pre-maturely terminated without properly
          cleanup. 
       
       Change:
          Included the new comfw.h firmware.



Version 2.0.2 (Feb 18, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          Chariot times out when UDP mode is enabled.

       Cause:
          The INF file was changed recently to create the "mtu" entry
          in the registry with a default value of "1500".  When the
          driver reads this value, it needs to add the size of the
          MAC header before programming the chip with the value.  In
          this case, the driver did not add the size of the MAC header
          to the value read from the registry.


   Enhancements:
   -------------

   1.  Request:
          Add support for BCM5708S.



Version 2.0.1 (Feb 14, 2005)
============================

   Fixes:
   ------

   1.  Problem:
          System crashes when coming out of D3 state.

       Cause:
          The crash occurs when the VBD does not have any active child
          device and the system is exiting D3 state.  When there is no
          active child device, the VBD is in SETUP state which means
          VBD resources (such as status block memory) are not allocated
          yet.  When the system exits D3 state, the VBD attempts to service
          PHY interrupt.  The crash occurs when referencing the status
          block which is currently NULL.

       Change:
          Skip PHY initialization and servicing interrupts when the
          VBD is in SETUP state.



Version 2.0.0 (Feb 6, 2005)
===========================

   Fixes:
   ------

   1.  Problem:
          MMA does not work.

       Cause:
          The appropriate PM_EN bits for SORT_USER0 were not enabled.



Version 1.14.7 (Jan 27, 2005)
=============================

   Fixes:
   ------
   
   1.  Problem:
          Hit several false assertions when running the checked build.

       Cause:
          The false assertions occur when the invalidate code path
          is executed.  The assertions check for valid tcp, path, and
          neighbor states on update.  The checks did not take into
          account the validate state which is valid.

       Change:
          The assertions are moved.



Version 1.14.6 (Jan 25, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Incorrect bus width reported back to user mode application.

       Cause:
          Incorrect register was read for determine the bus width.


   2.  Problem:
          Running the interrupt test causes a system crash when the
          iSCSI driver is installed.

       Cause:
          The iSCSI receive chain is not complete re-initialized when
          the diag driver binds to the bus driver.

       Change:
          During a driver init, the prod_idx, con_idx, and prod_bseq of
          all the receive chains are set to 0.



Version 1.14.5 (Jan 19, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Incorrect PCI-X speed reported to user mode application.

       Cause:
          The PCI-X speed in the pcicfg.misc_status register is incorrect
          when we are running at PCI-X 133Mhz.

       Change:
          Driver was modified to get the speed from the
          pcicfg.pci_clock_control_bits register.


   2.  Problem:
          Unable to associate a catch frame to a TCP state handle.

       Cause:
          The driver parses the catch frame for the 4-tuple, which
          is used to locate the TCP state.  The parsing is incorrect.
       

   3.  Problem:
          Sending a catch frame cause a system lockup.

       Cause:
          When completing a catch frame, a lock was not released.



Version 1.14.4 (Jan 12, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          Not able to connect to an iSCSI target when RSS is enabled.
       
       Cause:
          The firmware is not directing iSCSI traffic to the correct
          receive chain.
       
       Change:
          Incorporated the new firmware with the fix.


   2.  Problem:
          The iSCSI device cannot connect to the target when coming
          out of hibernation or low power mode.
       
       Cause:
          The iSCSI MAC address was not initialized.

       Change:
          When coming out of low power mode, the driver will set
          up all the MAC address slots.



Version 1.14.3 (Jan 10, 2005)
=============================

   Fixes:
   ------

   1.  Problem:
          The statistics counter for unicast and multicast frames
          received are incorrect.

       Cause:
          The value for unicast and multicast frames received erroneously
          included the broadcast frames.

       Change:
          The driver was modified to not include the broadcast frames.


   Enhancements:
   -------------

   1.  Request:
          Add dynamic interrupt moderation.



Version 1.14.2 (Dec 16, 2004)
=============================

   Enhancements:
   -------------

   1.  Request:
          Remove the functions that are not being called for better
          code coverage result.

       Change:
          Commented out several functions that are not being called.



Version 1.14.1 (Dec 15, 2004)
=============================

   Fixes:
   ------

   1.  Problem:
          Unable/Disable the driver may cause a lockup.

       Cause:
          When aborting pending transmits, the driver releases a spinlock
          that was never acquired.

       Change:
          When calling mm_indicate_tx to indicate transmit completion,
          the caller must first acquire the transmit lock.


   Enhancements:
   -------------

   1.  Request:
          Incorporate the new NDIS API changes.

       Change:
          Included the new ndis.h and made the necessary changes to
          the code to use the new NDIS APIs.


   2.  Request:
           Add support for multiple MAC addresses.  Make the advertisement
           of LSO option capabilities configurable.
        
        Change:
           Made changes to the driver to use MAC address indices 4-7 for
           perfect match filtering.  Added a registry parameter "task_cfg"
           for configuring the LSO option capabilities.


   3.  Request:
          Add support for handling Chimney invalidate requests.
       
       Change:
          Added new code for handling invalidate requests.  Incorporated
          the latest firmware.



Version 1.14.0 (Dec 2, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          Chariot could stop passing traffic when RSS is enabled.
       
       Cause:
          The driver maintains a variable called in_dpc_cnt for
          keeping track of the number of DPCs running.  This variable
          is incremented when a DPC is scheduled.  A race condition
          could occur when this variable is decremented and the
          driver erroneously thinking the last DPC is finished running.
       
       Change:
          The in_dpc_cnt variable should be incremented first for all
          the DPCs that are about to be scheduled.



Version 1.13.1 (Nov 23, 2004)
=============================

   Fixes:
   ------

   1.  Problem:
          System locks when pinging the iSCSI stack on the same machine.

       Cause:
          The driver is releasing a spinlock that was never held when
          indicating transmit completion.

       Change:
          In some cases, the transmit lock must be held when calling
          mm_indicate_tx.


   2.  Problem:
          AMD64 system looks up when packets are being sent.

       Cause:
          The driver is casting the SGL pointer to lm_frag_t pointer.
          For the 64-bit build, these two structures are different.

       Change:
          The lm_frag_t structure was modified to match the definition of
          SCATTER_GATHER_LIST.



Version 1.13.0 (Nov 5, 2004)
============================

   Enhancements:
   -------------
   
   1.  Request:
          Change the driver to bxvbdx.sys for x86, and bxvbda.sys for Amd64.

       Change:
          Sources and INF files were modified.



Version 1.12.4 (Oct 28, 2004)
=============================
 
   Fixes:
   ------

   1.  Problem:
          System may crash when a connection is being uploaded.

       Cause:
          The driver is freeing physical memory at IRQL_DISPATCH level
          when a connection is being uploaded.  The call to free
          physical memory can only be called from IRQL_PASSIVE level.

       Change:
          When a connection is being uploaded, the driver will schedule
          a worker thread that runs at IRQL_PASSIVE level.  This thread
          will free all the resources associated to the uploaded connection.


   2.  Problem:
          Chariot reports data corruption.

       Cause:
          When a connection is offloaded with buffered data, the chip
          could place incoming data into the wrong application buffer.
          Several state variables needed by RV2P were not initialized.

       Change:
          The driver was modified to include the new firmware.


   Enhancements:
   -------------

   1.  Request:
          Improve netperf performance.
       
       Change:
          The default coalescing parameters were modified.


   2.  Request:
          Improve performance when RSS is disabled.

       Change:
          Driver was modified to ensure the DPC is scheduled on the
          processor that is running the ISR.  This improves the ISR
          to DPC latency.



Version 1.12.3 (Oct 7, 2004)
============================

   Enhancements:
   -------------

   1.  Request:
          Add support for licensing.

       Change:
          Added several IOCTLs for getting and updating licensing keys.



Version 1.12.2 (Sept 21, 2004)
==============================
 
   Fixes:
   ------

   1.  Problem:
          In PCI-X mode, some DMA operations may finish out of order.

       Cause:
          The chip enables PCI-X relax ordering by default.  The BCM5706
          family does not support this feature.

       Change:
          The driver was modified to disable PCI-X relax ordering
          after a chip reset.



Version 1.12.1 (Sept 16, 2004)
==============================
 
   Fixes:
   ------

   1.  Problem:
          The L2ND driver fails to load.

       Cause:
          During initialization L2ND51 driver makes a call to
          NdisMInitializeScatterGatherDma.  This call will submit an
          interface query IRP for the GUID_BUS_INTERFACE_STANDARD
          interface.  The bus driver fails this request.

       Change:
          The driver was changed to forward the request for
          GUID_BUS_INTERFACE_STANDARD interface to the PCI bus driver.



Version 1.12.0 (Sept 13, 2004)
==============================

   Enhancements:
   -------------

   1.  Request:
          Add support for Receive Side Scaling.

       Change:
          Numerous changes in several files.



Version 1.11.0 (Aug 30, 2004)
=============================

   Fixes:
   ------

   1.  Problem:
          System locks up when sharing interrupts.

       Cause:
          The driver may erroneously claim an interrupt even when the
          device's interrupt line is not active.

       Change:
          Only claim interrupts when the device's interrupt line is active.



Version 1.10.1 (Aug 25, 2004)
=============================

   Fixes:
   ------

   1.  Problem:
          System locks up when running NTTTCP on a multiprocessor system.

       Cause:
          Two different spinlocks were not released in the reverse order.
          The inner spinlock should be released first.

       Change:
          The code was modified to release the inner spinlock first and
          then the outer one.



Version 1.10.0 (Aug 18, 2004)
=============================

   Enhancements:
   -------------

   1.  Request:
          Add support for BCM5708 device.

       Change:
          target.gawk file was modified for generating the INF file
          with BCM5708 device IDs.

   2.  Request:
          Add TCP offload support.  Test the TCP offload interface
          against the l2nd52.sys driver which is an NDIS 5.2 driver
          with TCP offload capability.

       Change:
          Several files were added/changed.



Version 1.9.3 (Aug 11, 2004)
============================

   Enhancements:
   -------------

   1.  Request:
          Modify the sources file for building a special checked driver
          for WHQL certification under the code coverage program.

       Change:
          target.gawk file was modified for generating the sources
          file with the necessary compiler and linker switches.



Version 1.9.2 (Aug 2, 2004)
===========================

   Fixes:
   ------

   1.  Problem:
          Forwarding packets from the iSCSI device stack to the NDIS
          device stack was not working.

       Cause:
          The rx_buf_mdl field in the l2packet_t structure was not
          initialized to NULL.

       Change:
          When constructing a l2packet_t for forwarding, the
          rx_buf_mdl field is set to NULL.



Version 1.9.1 (Aug 2, 2004)
===========================

   Fixes:
   ------

   1.  Problem:
          After a reboot, the L5WSD PDO may not appear in the DeviceManager.

       Cause:
          The L5WSD PDO was created but not reported to the IO Manager.
       
       Change:
          Modified the driver to call IoInvalidateDeviceRelations after
          creating the L5WSD PDO.



Version 1.9.0 (Jul 30, 2004)
============================

   Enhancements:
   -------------

   1.  Request:
          Change the service description so it is different than
          the display name.  This is done to prevent an installation
          error caused by having two services with the same description.

       Change:
          The INF file was modified to include the new service description.



Version 1.8.0 (Jun 30, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          Ethernet@Wirespeed is not working.

       Cause:
          The driver does not disable Ethernet@Wirespeed once it is enabled.
       
       Change:
          Modified the driver to clear the setting if Ethernet@Wirespeed
          is not enabled.



Version 1.7.0 (Jun 14, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          When the system is in WOL mode, a Magic Packet with the wake-up
          address of all 0's will wake up the system.

       Cause:
          The chip uses the first four perfect match addresses for Magic
          Packet detection.  Only the first address slot was initialized.
          The other three addresses slots have the default address of
          all 0's.

       Change:
          The driver was modified to initialize the other three address
          slots with the current MAC address whenever the system goes
          into the WOL state.



Version 1.6.0 (May 24, 2004)
============================

   Enhancements:
   -------------

   1.  Request:
          Change the device description to NetXtreme II.

       Change:
          The INF file was modified to include the new device description.

          The driver was modified to long events into the Event Viewer using
          the new device description.


   Fixes:
   ------

   1.  Problem:
          A slight increase in CRC errors on the switch.
       
       Cause:
          There is a PHY errata for this problem.
       
       Change:
          The driver was modified to apply a PHY workaround whenever there is
          a PHY reset.



Version 1.5.0 (Apr 15, 2004)
============================

   Enhancements:
   -------------

   1.  Request:
          Add support for SERDES version of the chip.

       Change:
          The INF file was modified to include a new device entry.


   Fixes:
   ------

   1.  Problem:
          The bus driver may crash when the L2ND client unloads.
       
       Cause:
          When the L2ND client driver unloads, the bus driver traverses
          a list of unused resource descriptors.  The memory for these
          descriptors may have already been freed.
       
       Change:
          The driver is modified to not traverse the unused resource
          descriptors list.  The list is re-initialized to contain
          not entry.



Version 1.4.0 (Apr 8, 2004)
===========================

   Fixes:
   ------

   1.  Problem:
          Layer 2 flow control not working.

       Cause:
          The driver did not set up flow control advertisement registers.
       
       Change:
          The driver was modified to enable flow control advertisement
          based on the driver property page.


   Enhancements:
   -------------

   1.  Request:
          Change the UI number of the child PDOs to that of the parent's
          UI number.

       Change:
          The driver was modified to retrieve the parent's UI number.  The
          same number will be filled in the child's device capabilities
          structure.


   2.  Request:
          Ignore the LAA in the registry if it is invalid.  In this case
          the hardware will use the MAC address in the NVRAM.

       Change:
          The driver was modified to check for a valid LAA.



Version 1.3.1 (Mar 31, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          When BMAPI issue a command to the VBD to enumerate a PDO, the 
          request will fail if the PDO is already present.

       Cause:
          The VBD completed the IRP with a random status code.

       Change:
          The completion is initialized to STATUS_SUCCESS.



Version 1.3.0 (Mar 24, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          WOL may not work on some systems.

       Cause:
          The Wait/Wake IRP submitted to the PCI bus driver had a system
          power state of "PowerSystemShutdown" instead of
          "PowerSystemSleeping3".  As a result, the PCI bus driver failed
          the IRP and did not arm the system for wake up.

       Change:
          The driver was modified to submit a Wait/Wake IRP for
          "PowerSystemSleeping3" to the PCI bus driver.


   2.  Problem:
          When multiple adapters are enabled, disabling one of them causes
          the system to crash.

       Cause:
          The bus driver maintains a list of per-device data structure.  This
          list is initialized in the AddDevice routine.  On the second call
          to AddDevice, the list is re-initialized thus corrupting it.

       Change:
          The device list initialization was moved to the DriverEntry routine.



Version 1.2.0 (Mar 16, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          Unable to pass traffic after running Chariot for approximately
          two minutes.

          Unable to pass traffic after running Nslicer for awhile.

       Cause:
          Under a certain condition, the firmware may fetch a stale
          data from the THBUF queue.

       Change:
          The driver is updated with the latest firmware.


   2.  Problem:
          Getting a "DRIVER_VERIFIER_DETECTED_VIOLATION (c4)" bugcheck
          when unloading the driver.

       Cause:
          The client block (block memory allocated to hold a client's
          states) was not de-allocated when a client unbinds from the
          bus driver.

       Change:
          Modified the driver to de-allocate the client block when it
          a client gets unloaded.



Version 1.1.1 (Mar 12, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          Unable to pass traffic in PCI-X 100MHZ mode.

       Cause:
          The DMA configuration register was configured to delay DMA
          completion by two clocks.  This should only be done at low
          PCI speed such as 33 MHZ.

       Change:
          Modified the bus driver to set the DMA configuration register
          differently.



Version 1.1.0 (Mar 10, 2004)
============================

   Fixes:
   ------

   1.  Problem:
          L2nd statistics counters for packets sent/received are alwasy zero.

       Cause:
          The bus driver does not return statistics counter to its clients.

       Change:
          Modified the bus driver to process statistics queries by its clients.



   Enhancements:
   -------------

   1.  Request:
          Allow the user to configure the number of read and write DMA
          channels via the registry.

       Change:
          Modified the driver to read "num_rchans" and "num_wchans" from
          the registry.



Version 1.0.0 (Mar 3, 2004)
===========================

   Initial release.

Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web5, load: 0.88