release.txt Driver File Contents (R282234.exe)

                          ===========================

                          R E L E A S E    N O T E S
                          ===========================
                Broadcom Advanced Server Program (BASP) Driver
                                     for
                            Windows Vista/Longhorn 
                              X86, AMD-64, IA-64

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

Version 1.3.23 May 21, 2010
---------------------------

1. CQ47870: BSOD 0x50 during committing modified team configuration while
            running iperf stress 

   Problem: Basp caused a page fault bsod when processing the oid
            OID_GEN_NETWORK_LAYER_ADDRESS.

   Cause:   The bsod was because ndis pass mal formed data in the oid. This
            is a bug in the microsoft software.

   Change:  The data in the oid is mal formed only when the address count
            in the oid data is greater than one. Basp was changed to ignore
            this oid when more than one address is passed in the oid.

   Impact:  This problem would happen on all team types when configuring the 
            team for multiple ipv4 address. 

Version 1.3.22 May 10, 2010
---------------------------

1. CQ47618: break at bxnd60a!new_tcp_state+0x269 after disabling all the
            primary adapters in AFD team

   Problem: A divided-by-zero fault occurs in the miniport drivers when failing
            over to a toe capable standby nic from a toe capable primary nic.
            The failover must be due to a link-loss event on the primary nic.
            The problem does not happen when the failover is due to the primary
            nic being disabled.

   Cause:   The toe offload parameters were not being forwarded to the standby
            nic because it was not active. The miniport driver then used zero as
            the values for the offload parameters, which caused the
            divide-by-zero fault.

   Change:  Basp was changed to forward the toe offload parameters to both
            active and inactive toe capable nics in the team.

   Impact:  This problem happens on link-loss failover of slb teams with toe
            capable primary and standby nics.

Version 1.3.21 May 5, 2010
--------------------------

1. CQ47339: BSOD occurred after teaming SLB/livelink enabled on Win7x64
            and Vistax64. 

   Problem: A bsod will happen with livelink is enabled and a ipv6 probe
            target is selected.

   Cause:   This problem was introduced by change 1. in v1.3.20. The packet
            buffer allocated for the probe packet is to small and a memory
            access fault hapens when basp attempts to create a ipv6 probe
            packet. 

   Change:  The size of the packet buffer allocated was increased for ipv6
            probe packets.

   Impact:  This problem only happens on slb teams with ipv6 probe targets.

2. CQ47349: Hyper-V BASP: X64_0xD1_basp!MiniportInitiateOffload+112 break in
            BASP driver when unloading ndis driver.

   Problem: Same problem as documented in basp6-1.3.14 #1 below.

   Cause:   Ndis was offloading a connection when no nics are ready.

   Change:  Basp was changed to not resume L4 offoading when no nics are ready.

   Impact:  This change only applies to slb teams with L4 offloading enabled.

3. CQ47517: BASP BSOD (Customer Reported issue (Case#312821)

   Problem: Basp has bugchecked while processing a set
            OID_GEN_NETWORK_LAYER_ADDRESSES oid.

   Cause:   The network address count or network address length fields in the
            oid are zero. When these fields are zero, the network address
            field is invalid and should not be dereferenced. Basp was 
            dereferencing this field due to a bug in the msft 'c' compiler.

   Change:  Additional checks were added to basp to check if these fields are
            zero.

   Impact:  This is a bug in the msft compiler that will cause a bsod when
            the length of a IP, IPX or NetBios address is zero, or the length
            of the address list is zero. This bug can happen with all team
            types.

4. CQ47119: MS Driver Verifier Bugchecks on BASP Driver 

   Problem: Basp will bugcheck when running driver verifier on a team with 
            multiple vnics and one of the vnics in the team is disabled and then
            reenabled.
   
   Cause:   Basp acquired a spinlock rasing the irql to dispatch. Basp then
            called NdisEqualString. NdisEqualString should only be called when
            the irql is passive. The driver verifier detected this and generated
            a bugcheck.

   Change:  Basp was changed to not call NdisEqualString and instead perform
            its own comparison of the the stings.

   Impact:  Impacts all team types running with multiple vnics in the team.

5. There is a 30 to 60 second delay when deleting a team.

   Problem: Basp delays 30-60 seconds when a team is deleted. Note that a team
            is deleted when all nics in the team are disabled, or all vncis in
            a team are disabled, or when the team is actually deleted in bacs.
   
   Cause:   Multiple threads basp created are terminated after the team has
            been removed from the team list. Because the team is not in the
            list, the thread notifier is not be able to detect when a thread
            has been terminated and signal the termination routine. The thread
            termination routine never receives the thread termination signal
            and consequently timesout after waiting 30s.

   Change:  Basp was changed to terminate all thread before the team is removed
            from the team list.

   Impact:  This change may impact the timing of scripts that delete teams.


Version 1.3.20 April 21, 2010
-----------------------------

1. CQ46921: Broadcom LACP teamed to Cisco Nexus

   Problem: Lacp teams will not connect to a Cisco Nexus switch.

   Cause:   Basp was sending lacp control packets with padding.

   Change:  Basp was changed to not pad lacp control packets. Also, this same
            packet padding issue was found to exist on probe packets and so
            this change was also applied slb teams using probe packets.

   Impact:  This change impacts lacp teams and slb teams using live link. The
            lacp problem was only seen Cisco Nexus switches. There was no 
            reported problem with slb live link teams, but the change was
            applied anyway to preempt possible problems where a Cisco Nexus
            switch is used as a probe target and it could reject a probe
            packet due to excess frame padding.

2. CQ45881: Loss of connectivity between VMs after reboot and live migration
   CQ46703: W2K8 R2 with Hypervisor and Teaming losses network connectivity
            under teaming 

   Problem: Change 1. in 1.3.19 did not verify. 

   Cause:   Change 1. in 1.3.19 was not detecting when an ip address had moved
            in all cases.

   Change:  The ip address move detection algorithm was modified to detect
            additional use cases.

   Impact:  This change applies to all slb team types.

Version 1.3.19 April 1, 2010
----------------------------

1. CQ45881: Loss of connectivity between VMs after reboot and live migration
   CQ46703: W2K8 R2 with Hypervisor and Teaming losses network connectivity
            under teaming 

   Problem: Live migrating a vm from one node to another in a Hyper-V cluster
            resulted in the vm losing connectivity.

   Cause:   The os does not notifiy basp that the ip/mac address pair has moved
            to a different node in the cluster. When running basp on both nodes,
            this resulted in both nodes thinking they owned the ip,mac address
            pair. Both nodes would then send out redirection arps which resulted
            in traffic targeted to ip address being sent to the wrong node in
            the cluster.

   Change:  Basp was changed to detect when an ip address had moved from one
            system to another.

   Impact:  This change applies to all types of slb teams, and both ipv4 and
            ipv6 protocols. This change also applies to not only hyper-v
            migration, but whenever a ip address is moved from one system on
            the network to another.

2. Dynamically changing the mac address of a Hyper-V vm would result in loss of
   connectivity.

   Problem: Dynamically changing the mac address of a Hyper-V vm would result in
            loss of connectivity.

   Cause:   Basp was not updating one of its internal tables with the new mac
            address of the vm. 

   Change:  Basp was change dto detect when the mac addres of a vm had changed.

   Impact:  This change applies to all types of slb teams, and both ipv4 and
            ipv6 protocols.

Version 1.3.18 March 23, 2010
-----------------------------

1. CQ46155: W2k8 disable & then enable of a virtual adapter takes over 90
            secs to occur (but not in W2k3)

   Problem: There is a 90 second delay to a nic becomming active when a 
            disabled nic in the team is reenabled.

   Cause:   The basp dll will bind the NDIS Lightweight Filter driver,
            ndiscap.sys, to the underlying miniport driver when a nic in the
            team is disabled. When the nic is later enabled, the LWF driver will
            wait 90s for an application to bind to its upper edge. This delay
            also delays binding the miniport driver to team, which is why the
            nic does not become active for 90s. 

   Change:  The basp dll was changed to not modify the binding for the
            NDIS Lightweight Filter driver when a nic is added or deleted
            from a team.

            This fix will only prevent the problem from happening if it has not
            yet happened. If the problem still occurs after basp has been
            upgraded, it may still be required to run bindview (available for
            free in the msft wdk) and manually unbind the LFW from all miniport
            drivers.
            
            This problem can also be fixed by setting the value in the
            following registry entry to 1.

            \HKLM\System\CCS\Services\ndiscap\Start

   Impact:  This change impacts all team types on system that have the 
            Microsoft NDIS Lightweight Filter driver installed.

Version 1.3.17 March 09, 2010
-----------------------------

1. CQ46288: basp!miniport_offload_process+0x4e BSOD

   Problem: A bsod could occur when running the driver load/unload test.

   Cause:   There was a race condition in the driver that would cause basp to
            not wait for all L4 offloads to be uploaded when the link was lost
            for all nics in the team while the team was being deleted. A bsod
            could later occur when the offloaded connections were uploaded
            after the team had been deleted.

   Change:  Basp was changed to wait for all connections to be uploaded when
            the team when there is no link.

   Impact:  This change only impacts TOE capable teams.


2. CQ44794: W2K8 does not have same VLAN Statistics in Task Manager as W2K3 

   Problem: The statistics presented in Task Manager are different from W2K3
            vs W2K8. In W2K3 each VLAN is identiefed with their own statistics
            but in W2K8, each VLAN shows the aggregate of all the VLANs 

   Cause:   Basp calculated the statistics for each vlan in the team by 
            querying each underlying miniport driver in the team and summing
            the results.
   
   Change:  Basp was changed to maintain it own set of packet counters for
            each vnic in the team and use these values when queried for the
            statistics.
   
            For customers desiring use the legacy method to show the vlan
            statistics, the following registry key has been created.
       
            [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Blfp\
            Parameters] "LegacyVlanStats"=dword:00000001

            Adding this key and setting it to 1 will configure basp to report
            vlan stats using the legacy method.  Deleting the key or setting it
            to 0 will enable the new statistic reporting method.

   Impact:  This registry key is global and its setting applies to all teams. The
            registry key is deleted when any team is deleted. After adding the
            registry key, the system must be rebooted for the change to take
            effect.

Version 1.3.16 February 10, 2010
--------------------------------

1. CQ45637: Bug check 0xD1 - basp!alloc_block_context 

   Problem: A bsod occured when the system performed a chimney offload to basp.

   Cause:   The offload request from the stack was incomplete and did not
            contain all the information required to setup the offload. The
            driver assumed incorrectly that this was an illegal request and
            could not happen and consequently casued an illegal memory 
            reference when attempting to defrerence data that was not present.
 
   Change:  Basp was modified to detect this situation and obtain the info
            needed to complete the chimney offload from other sources within
            the driver.

   Impact:  This bug has been in the driver since version 1.0. Since this is
            the first detection of this bug, it happens very rarely. This bug
            only happens on slb team that are capabable of performing L4 
            offload. This bug can be worked around on older drivers that do
            not have this fix by disabling chimney offloading in the system.

2. Multiple zombie baspin.exe process exist

   Problem: Multiple zombie baspin.exe process exist in systems where teams 
            have existed.

   Cause:   The basp notifier (basp.dll) was not closing some handles after
            creating the baspin.exe process. This prevented the baspin.exe
            from terminateing and created zombie processes.

   Change:  The process and thread handles are closed immediately after the
            baspin.exe process is created.

   Impact:  This problem happens on all team types whenever a team is created.
            Rebooting the system will kill the zombies, but they will quickly
            be recreated.

Version 1.3.15 December 21, 2009
--------------------------------

1. CQ44921: In a SLB-AFD team, traffic is observed on both the primary and
             stand-by adapter simultaneously

   Problem: In a SLB-AFD team, traffic is observed on both the primary and
            stand-by adapter simultaneously, while bacs indicates only the
            primary is active.

   Cause:   Nics were being incorrectly added to the ready map when enabled.
 
   Change:  Nics are not added to the ready map when the standby is active
            and afd is enabled.

   Impact:  While this change only applies to afd teams, the code is executed
            on all failover/failback events.

2. A primary nic is disabled when a afd team with live link is created.

   Problem:  When an afd team with live link is created, one of the primary
             nics in the team could come up disabled even though the nic
             had a link and path to the target.

   Cause:   The pnp restart and probe threads were not sychronized.
            Occasionally, the probe thread would execute in the middle of the a
            pnp restart. The pnp restart thread was trying to enable the nic,
            but the probe thread would disable the nic because it could not
            resolve the target address. This resulted in the nic comming up
            disabled and remaining disable untilthe nic was disabled/enabled in
            the Network Connection Manager.
 
   Change:  A new state was added to the probe finite state machine to pause
            the state machine when the underlying nic is not in the running
            state. This effectively sychronizes the pnp and probe threads.
            
   Impact:  Only happens on on afd live link team types and usually only when
            the number of retries is low, eg. 1.

3. CQ45018: Indicate BASP Team Link Speed as the Sum of the Team Members

   Problem: Basp would by default indicate the team's link speed as the 
            highest link speed of a single nic in the team. Basp could be
            reconfiged by the user to indicate the aggregate link speed of
            all the active load balaning nics in the team using a regsitry
            key defined below in this document.

   Cause:   Displaying the hightest link speed of a sing nic in the team
            instead of the aggregate link speed was a marketing requirement.

   Change:  The default configuration of basp was changed to display the
            aggregate link speed of the team. The user can now override
            this behaviour to display the highest link speed of a single nic
            in the team using the same registry key and values as before.

   Impact:  This change applies to all team types.

Version 1.3.14 December 11, 2009
--------------------------------

1. CQ44796: BSOD occurred while pasisng sockdie L4 traffic to SLB-AFD team and
            disabling Ndis driver to cause failover 

   Problem: Basp performed a L4 offload operation using a null handle. 

   Cause:   The L4 operation was performed using a null handle because the nic
            had been disabled while there still outstanding L4 offload
            connections. There were still L4 offload connections because the
            underlying miniport driver did not complete uploading all the
            offloaded connections within 1 minute. This caused basp to timeout
            while waiting for the upload to complete and close the nic while
            there were still connections offloaded. The connections were
            later uploaded by the miniport driver which then caused a bsod
            because the handle was no longer valid.
 
   Change:  Basp's internal upload timeout timer was changed from 1 minute.
            to 5 minutes.

   Impact:  This change only applies to slb teams with L4 offloading enabled.

2. CQ44593: Virtual adapters disabled after SUT resumes from sleep states.

   Problem: The fix for cq44203 broke this functionality (v1.3.13, #1). 

   Cause:   Oids required to enable the vnic when transitioning from the sleep
            state were blocked and not being processed.

   Change:  Do not block oids when a vnic is disabled and do not turn 
            offload encapsulation off when a vnic is disabled if offload
            encapsulation is enabled on any vnic that is enabled.

   Impact:  Requires regression testing of cq44203.

Version 1.3.13 October 22, 2009
-------------------------------

1. CQ44203: In a team with multiple vlans, when 1 of the vlans is disabled,
            unable to ping the teams ip address 

   Problem: Teams with multiple vnics would lose connectivity when one of the
            vnics in the team was disabled.

   Cause:   Ndis sends an oid to basp to disabled checksum offloading on the
            vnic that is being disabled. Basp would forward this this oid to
            the underlying minport drivers who would then disable checksum
            offloading. This would disable checksum offloading on all vnics in
            the team. The problem was that ndis expected checksum offloading to
            still be enabled on the remaining vncis and so ndis would send
            packets with a zero checksum expecting the miniport driver to
            calculate the correct checksum. However, since checksum offloading
            had been disabled, the miniport would not calculate the checksum
            and depending on the driver, would either fail the send (NxI) or
            send the packet with a zero checksum (NxII). This caused the packet
            to be rejected by the receiver and resulted in a loss of
            conectivity.

   Change:  When disabling a vnic, ndis first pauses the vnic and then disables
            offloading. Basp was changed to not forward oids received for a 
            vnic that is in the paused state while there are other active
            vnics.

   Impact:  This change impacts any team type that has more than one vnic and
            is offload capable. 

Version 1.3.12 October 15, 2009
-------------------------------

1. CQ44118: When a team gets deleted, "Client for MS Networks" and "File and
            Printer Sharing for MS Networks" remain unbound to the adapter 

   Problem: Shared printer and files cannot be accessed when a nic is removed
            from the team unless the user manually checks the "Client for MS
            Networks" and "File and Printer Sharing for MS Networks" boxes in
            the properties page for the nic.

   Cause:   The basp installer was disabling these services when the team was
            deleted.

   Change:  The basp installer no longer disables these services when the team
            is disabled.

   Impact:  This problem is localized to the basp installer which only
            executes when a team is created or deleted. No other basp
            components have changed from the previous version.

Version 1.3.11 October 2, 2009
------------------------------

1. Memory leaks when all nics in a team are disabled.

   Problem: There is a small memory leak that rarely happens when all nics in
            a team are disabled at the same time.

   Cause:   When all nics in a team are disabled while basp is attempting to
            send a list of locally generated nbls, the nbl are discarded and
            returned to ndis. The problem is that nbls are discarded as one
            list, but the ndis call can only handle a single nbl per call. This
            causes nbls in the list to leak.

   Change:  Basp was changed to loop and call ndis with a single nbl when
            discarding locally generated nbls.

   Impact:  This problem is rarely reproduced, but could happen on slb and lacp
            team types. It will not happen in GEC teams.

Version 1.3.10 October 1, 2009
------------------------------

1. CQ43889: X64_0x7E_basp!set_mif_oid_sync+d7 running Chariot Stress w/Failover
            & Failback Helper DLL 

   Problem: Basp bug checked when using windiag to perform a failover test.
            
   Cause:   The call to NdisOpenAdapterEx failed when reenabling a nic. On the
            failure code path, basp would attempt to forward an oid to the nic
            that failed to open. Since the open had failed, the handle to the
            nic was null which caused a bugcheck when ndis dereferenced it
            during the OidRequest.
            
   Change:  Basp was changed to not forward the oid when the handle was null.
   
   Impact:  This change applies to all team types.

2. CQ43827: System unresponsive after WEB and File stress 
   CQ43868: Lost IP-configuration after LAN-stress on BX620S4 with W2K8 R2
            installed 
   CQ43930: X64_0x0_bxnd60a+549e assertion hit running Chariot Stress w/failover 

   Problem: The system would become unresponse and various system operations
            would not complete successfully after running long term stress tests
            with basp.
            
   Cause:   There was a memory leak in basp when local nbls were returned to
            ndis.
            
   Change:  The memory leak was fixed.
   
   Impact:  This problem was first introduced in the basp6-1.3.x branch. It is
            not present in the basp6-1.2.x branch.

Version 1.3.9 June 30, 2009
---------------------------

1. CQ42257: Add Support for McAfee Host Intrusion Protection Server to BASP
            Helper DLL 

   Problem: Customer's using McAfee's Host Intrusion Protection Server (HIPS)
            report that their SLB team does not work correctly after reboot when
            the HIPS software is installed. If the user manually disables the
            HIPS intermediate driver from the NIC hardware and only allows it to
            bind to the BASP Virtual NIC then the system works as expected.
            This request is to modify the BASP helper DLL to automatically
            unbind the HIPS driver from the BASP controlled NICs. 
            
   Cause:   The Basp Notifier Object (basp.dll) did not unbind HIP from the
            underlying miniport driver when a nic is added to the team. 
            
   Change:  Supported was added to the Notifier Object to remove the binding
            to the HIP driver when a nic is added to the team.
   
   Impact:  Effects all team types when a team is created or a nic is added to
            the team and HIP has already been installed. Support also needed to
            be added to bmapi, and so the correct version of bmapi is required
            to full support this feature.

2. CQ38832: NWLink Netbios protocol still bound to adapter when team is created

   Problem: NWLink Netbios protocol does not get unbound from an adapter when a
            team is created with that adapter. All protocols and services,
            except Broadcom Advanced Server Program Driver, should be unbound
            from the adapter when said adapter is part of a team. In the failing
            scenario, ipx/spx, ipv4, and ipv6 protocols get unbound, it's only
            the NWLink protocol that reamins bound along with client for MS
            network, File and printer sharing for MS networks.  Issue is not
            seen when ipx/spx is not installed in system. 
            
   Cause:   The Basp Notifier Object (basp.dll) did not unbind NWLink Netbios
            from the underlying miniport driver when a nic is added to the team. 
            
   Change:  Supported was added to the Notifier Object to remove the binding
            to the NWLink Netbios driver when a nic is added to the team.
   
   Impact:  Effects all team types when a team is created or a nic is added to
            the team and NWLink Netbios has already been installed. Support
            also needed to be added to bmapi, and so the correct version of
            bmapi is required to full support this feature.

Version 1.3.8 June 18, 2009
---------------------------

1. CQ36892: Tx Packet counter does not increment for the TOE Team. 

   Problem: Basp returns the internal L2 Basp counters to BACS. These counters
            do not included the L4 counters. 
            
   Cause:   This was working as designed.
            
   Change:  Basp was changed to query the underlying miniport drivers in the
            team for both the L2 and L4 counters and return the sum of these
            counters for the team's counters for BACS requests.
   
   Impact:  Impacts all team types.

Version 1.3.7 June 15, 2009
---------------------------

This version was recalled.

Version 1.3.6 June 8, 2009
--------------------------

1. CQ40679: Chariot error CHR0245/200 are observed running IPv6 Hi-Perf traffic
            to GOS 

   Problem: IPv6 connections could not be established or were being dropped in
            a Hyper-V Guest OS.
            
   Cause:   Basp was not indicating IPv6 packets using the source mac address
            of the Guest OS.
            
   Change:  Basp was changed to properly mux IPv6 packets.
   
   Impact:  Changes applies only to IPv6 L2 and L4 traffic when Basp is bound
            to Hyper-V. 

2. Unable to connect to a remote station from a Hyper-V GOS after a period of
   inactivity in the team.

   Problem: The GOS establishes a connection to a remote station, but after a
            period of inactivity in the GOS, connections can no longer be made
            to any remote station that is not a vm.
            
   Cause:   Basp retires the source mac address of the GOS after a period of 
            inactivity. When the smac was reactivated due to new activity, its
            smac was updated to an incorrect value.
            
   Change:  Basp was changed to reactivate the smac using the correct address.
   
   Impact:  Impacts L2 and L4 slb teams running Hyper-V. 

3. A bsod can happen on failover or when a nic is deleted from the team.

   Problem: There is a race condition in basp that could cause it to return
            offload blocks that have been initiated and completed after a
            nic has been removed from the team in a failover.
   
   Cause:   Basp waits for any offloads that have been initiated to complete
            before failing over. However, basp was not waiting for the
            completed offloads to be indicated (returned to ndis) before
            continuing with the failover. This can cause a bsod if the offloads
            are indicated after the failover has complted and the nic removed
            from the team.

   Change:  Basp now waits for offloads initiated that have completed to be 
            indicated before continueing with the failover.

    Impact: Applies to slb teams that support L4 failover.

Version 1.3.5 May 8, 2009
--------------------------

1. CQ38160: Need Event log notice when LiveLink detects loss of connection

   Problem: No message is logged by LiveLink the connection to the target
            system changes.
            
   Cause:   Messages were only logged when the physical link status changed.
            
   Change:  LiveLink now logs a message to the event log whenever the 
            connection to the target system changes.
   
   Impact: This change only applies to LiveLink teams.

Version 1.3.4 May 1, 2009
--------------------------

1. Added L4 Offloading support for Hyper-V in W2k8 R2 / Win7 

   Problem: W2k8 R2 / Win7 added L4 offloading support to Hyper-V 

   Cause:   This was a new feature added to the os.

   Change:  L4 offloading is now supported in any Hyper-V environment.

   Impact:  This change effects SLB teams running on an os that supports L4
            offloading in Hyper-V.

Version 1.3.3 April 9, 2009
---------------------------

1. CQ40268: Basp6: Team mode does not change when the stand-by adapter is active
            in AFD team type

   Problem: The team mode displayed in bacs remains set to "primary" after a
            failover on a SLB-AFD team type with LiveLink enabled.

   Cause:   A standby flag was not being set in the SLB-AFD LiveLink FSM. BACS
            uses this flag to display the team mode and since basp never changed
            the flag for this team type, BACS never changed the displayed team
            mode.

   Change:  The SLB-AFD LiveLink FSM was modified to set this flag correctly.

   Impact:  This change only effects SLB-AFD LiveLink teams.

2. Hyper-V allows VLAN tags when vlan tagging is disabled on a nic in the team.

   Problem: Hyper-v would allow a vlan id to be assigned to the untagged vnic
            when one or more of the nics in the team had vlan tagging disabled.

   Cause:   Basp always allowed vlan pass-through tagging on the untagged vnic.

   Change:  Basp now disables vlan pass-through tagging on the untagged vnic
            when tagging is disabled on any of the nics in the team.

   Impact:  This change only applies to Hyper-V teaming.

3. The team mtu size will not increase when changing the nics mtu size in BACS
   or using the advanced properties page.

   Problem: The system would have to be rebooted or the team deleted and
            recreated to increase the mtu size after a team with multiple nics
            had been create.

   Cause:   Basp only allowed the mtu size to decrease dyanmically.

   Change:  Basp now restarts the team when it detects that the mtu size of the
            team has changed.

   Impact:  This change applies to teams where all the nics in the team support
            jumbo frames.

4. Basp did not support the maximum number of multicast addresses supported by 
   BRCM 5771x 10 GbE nics.

   Problem: Basp supported a maximum of 32 multicast addresses, while 5771x nics 
            support a maximum of 64 multicast addresses.

   Cause:   Basp's internal multicast array only supported 32 multicast
            addresses.

   Change:  Basp's internal array size was increased to support 64 multicast
            addresses.

   Impact:  This change applies to all team types where more than 32 multicast
            addresses are required.

5. A BSOD could happen on a failover.

   Problem:  Basp would BSOD when dereferecing a null handle representing the
             underlying miniport when failing over.
   
   Cause:    There was a logic bug in the code where an AND operation was used
             instead of an OR operation. This could cause basp to exit the pause
             routine before the worker thread had completed one full execution
             cycle. When this happened, it was possible for basp to close the
             underlying nic before all the resources had been returned from the
             nic. When the resources were later returned, basp would bugcheck
             when dereferecing the handle for the underlying miniport which was
             now null because the nic had been closed.

   Change:   The AND operator was changed to an OR in the pause routine. This
             change forces basp to wait for one complete cycle of the worker
             thread to execute and return all the resouces for the underlying
             nic before closing the nic.

   Impact:   The pause funcion is executed on failover for all team types.

Version 1.3.2 March 18, 2009
----------------------------

1. CQ39951, CQ34900: Add VLAN pass-through capabilities to BASP 

   Problem: External applications such as Hyper-V were not allowed to manage
            vlan ids in basp. Only BACS was allowed to configure the vlan ids
            used by basp.
           
   Cause:   Basp managed all vlan id's internally and would overide any vlan
            ids configured by external applications.

   Change:  A vlan id pass-through mode was implemented in basp for the
            untagged vnic. This allows external applications to manage vlan ids
            on the untagged vnic if desired. Tagged vnics are still managed
            internally by basp and so external applications are still not
            allowed to manage the vlan ids on tagged vnics.

   Impact:  Impacts tagged and untagged vlans for all team types, both with and
            without Hyper-V.

2. CQ39174: Opening a TCP connection with chimney enabled causes page fault in
            basamd64.sys

   Problem: The minport driver will bsod when requested to configure L4
            offloading while it is being disabled.
           
   Cause:   This problem was logged against basp5, but an analysis of basp6
            showed that there was a very small window where basp could forward
            an oid to an underlying miniport driver that had just been closed
            by basp. 

   Change:  Basp now prevents oids from being forwarded to an underlying
            miniport driver when it is being unbound from the team.

   Impact:  This change applies when teams are created or deleted or a nic is 
            hot-added or deleted from the team.

Version 1.3.1 February 18, 2009
-------------------------------

1. CQ39535: Causes NLB cluster to ARP flood network if a remote host pings
            cluster 
 
   Problem: When a basp team in an nbl cluster was arp'ed by another basp team,
            the basp arp/ndp state machine became unstable and oscillated
            sending arps on the network until the machine was reset or the team
            deleted.
             
   Cause:   Basp would receive arp replies to fixup arp that had a different
            source mac address in the ethernet header than the original arp.
            This caused basp to re-arp using the new source mac address,
            wherein the reply to this arp would be with a different source mac
            address, and the process would repeat ad nauseam.

   Change:  Throughout this process, the source mac address in the arp/ndp would
            remain constant, and so basp was changed to use this field instead
            of the volatile address in the ethernet header.

   Impact:  This change applies only to slb teams, and to both ipv4 and ipv6
            protocols.

Version 1.3.0 February 9, 2009
-------------------------------

1. CQ39953: Add multiple load balancing nic support to SLB teams running with
            Hyper-V.
 
   Problem: Basp SLB teams only supported a one primary, or one primary with
            one standby configuration when running with Hyper-V.
   
   Cause:   Hyper-V assigns each guest os a unique mac address. Hyper-V uses
            this mac address to demux receive frames to the appropriate guest
            os. However, Basp always indicated receive frames using the team's
            mac address. This caused Hyper-V to demux all receive frames to the
            parent os instead of to the appropriate guest os, causing a loss of
            TCP connectivity in the guest os.
   
   Change:  Basp was changed to set the mac address of each received frame to
            the mac address of the appropriate guest os.

   Impact:  This change applies to all slb team types, regardless of whether
            Hyper-V is running.
   
   Caveat:  Basp Hyper-V SLB team only supports the TCP/IP protocol. Frames
            received using other protocols, such as IPX, will not be routed to
            the correct guest os. Basp slb teams running without Hyper-V will
            still have limited support non-TCP/IP protocols however.

Version 1.2.10 October 30, 2008
-------------------------------

1. CQ38199: Basp causes BSOD when adding VNIC to Hyper-V Guest OS
 
   Problem: Basp would cause a BSOD when transmitting a ICMPv6 packet that is
            shorter than an ICMPv6 neighbor discovery packet.
   
   Cause:   The BSOD was caused by basp traversing beyond the end of the mdl
            list and dereferencing a null pointer in the code added to fix
            cq38060 in v1.2.9 

   Change:  Basp was changed to validate the pointer before dereferencing.

   Impact:  The changes made to basp apply to both the ipv4 and ipv6 code paths
            for all team types.

Version 1.2.9 October 24, 2008
------------------------------

1. CQ38060: HyperV crashes when using a BASP team
 
   Problem: The crash dumps attached to the cq shows that the bsod is caused by
            an illegal memory access when basp tries to access the ipv4 header
            in an outbound packet.
   
   Cause:   Basp assumed that ethernet and ipv4 headers are in the same mdl. In
            this case however, the headers were split and the ethernet header
            was in a different mdl than the ipv4 header. When basp tried to read
            the ipv4 header, the read extended beyond then end of the mdl and
            caused an access violation and the bsod.

   Change:  Basp was changed to traverse mdls when attempting to read ipv4, ipv6
            and arp headers. Basp already had this capability for other header
            types it accessed, such as tcp/udp headers, and so this was not
            changed.

   Impact:  The root cause of this problem was in basp's parsing of split
            headers, Currently, split headers have only been seen on a
            customer's network running a combination of hyper-v virtual machines
            with clustering. The changes made to basp apply to both the ipv4 and
            ipv6 code paths for all team types.
            
Version 1.2.8 October 8, 2008
-----------------------------

1. CQ37696: The 64th BASP Virtual adapters always shows "not load" in BACS3
 
   Problem: Basp would not start the 64th vnic in a team.
   
   Cause:   There was a bug in basp that caused it to start only 63 vnics.

   Change:  Basp was changed to initialize up to 64 vnics.

   Impact:  This change applies to all team types with the maximum number of
            vnics. The maximum number of vnics is 1-untagged and 63-tagged vnics
            for a total of 64 vnics.

2. Optimized send discard path for improved performance.

   Problem:  Send performance could be degraded because of multiple ndis calls to
             discard packets when failing over.

   Cause:    Basp was returning each discard packet individually.
   
   Change:   Basp was changed to collect all discarded nbls and return them in
             one call.

   Impact:   Basp failsover quicker when sending packets is interrupted by a
             failover event.
                       
Version 1.2.7 September 24, 2008
--------------------------------

1. CQ37189: Does not wake from S4 with 64 VLANS 
 
   Problem: Restarting 64 vlans can take a long time, 2 minutes or more
            depending on the network traffic being received by the team.
   
   Cause:   On this network, there were multiple unconfigured iscsi stations
            broadcasting arps with a source ip address of 0.0.0.0. Basp
            processed these arps as normal arps. Because there were multiple,
            different, stations sending these arps, basp detected that ip
            address 0.0.0.0 had moved to a different mac address.  This caused
            basp to do an expensive delete/add/inbound redirection operation
            whenever it detected that ip address 0.0.0.0 had moved to a new nic.
            Basp was performing this operation frequently which further
            increased the restart time. This gave the appearance that the system
            had hung because it did not awake in the expected amount of time.

   Change:  This problem was fixed by adding a filter in basp to not add arp and
            ndp packets to basp's internal cache when the source ip address of
            these packets is zero. Basp was changed to indicate these packets to
            the os, but not add them to its internal cache.

   Impact:  This change only applies to slb teams on networks with unconfigured
            iScsi nics.

2. CQ37174: CHR0245 while running randomIO HiPerf script on RX only 

   Problem: New L4 traffic from the target was being incorrectly redirected to
            a different nic causing existing L4 flows offloaded on another nic
            to fail and cause a 245 error.

   Cause:   Entries in basp's internal arp cached we're being aged to quickly on 
            a 1-primnary, 1-standby nic team, causing the entry to be
            prematurely deleted from the arp cache. When this happens, new flows
            to the same target can be assigned to a different nic in the team.
   
   Change:  To fix this problem, basp was changed to increased life of arp cache
            entries and prevent premature aging out of entries in teams with
            1-primary and 1-standby nic.

   Impacts: This change only applies to slb teams with 1-primary and 1-standby
            nic in the team.

3. CQ35559: Mismatch in jumbo mtu size for team and team members.

   Problem: The maximum size of the team was 9000, while the 57710 is capable of
            sending frames that are 9600 bytes long.

   Cause:   The 57710 is the first nic capable of supporing this frame size.
   
   Change:  The maximum size mtu size was changed from 9000 to 9600.
            The team's mtu size is set to the smallest mtu size supported by all
            the nics in the team.

   Impact:  This change mainly applies to teams with 57710 nics that are using
            jumbo frames.

4. CQ34714: Task manager shows wrong link max speed for teaming adapter.
    
   Problem: Basp reports the team's link speed as the highest link speed of all
            the nics in the team instead of the aggregate link speed.
            
   Cause:   This behaviour is a marketing requirement.
   
   Change:  For customers desiring to show the aggregate link speed of the team,
            a new registry key was added. The registry key to enable basp
            reporting the aggregate link speed of all ready nics in the team is
            as follows.
       
            [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Blfp\
            Parameters] "AggregateLinkSpeed"=dword:00000001

            Adding this key and setting it to 1 will enable aggregate link speed
            reporting. Deleting the key or setting it to 0 will enable the
            current behavior.
            
   Impact:  This registry key is global and its setting applies to all teams. The
            registry key is deleted when any team is deleted. After adding the
            registry key, the system must be rebooted for the change to take
            effect.

5. CQ37106: BSOD is observed while passing L4 sockdie_stress traffic while
            causing traffic to failover

   CQ37165: Assert occurred while passing L4 sockdie traffic to SLB with
            6 vlans

   CQ37503: Assert occurred while adding 5708 to Everest team with chariot
            traffic

   This is a port of a problem found in basp5

   Problem: Basp would indicate an offload initiate connection complete or
            return an nbl using a null handle while unbinding a nic from the
            team.
   
   Cause:   #1 There was a race condition in basp that allowed a nic to be
            unbound and the handle nulled while a toe connection was still
            offloaded.

            #2 Receive nbls were being returned after all the connections
            had been terminated

   Change:  #1 Removed the race condition to guarentee all toe connections
            have been uploaded before unbinding a nic from the team.

            #2 Wait for all nbls to be returned after all connections have
            been uploaded before unbinding a nic from the team.

   Impact:  This problem only happens on toe capable teams when unbind a nic from
            the team.

6. CQ35133: Broadcom teaming driver isn't passing traffic to VMs (Hyper-V)

   Problem: Hyper-V would not receive frames when bound to tagged vnic in basp.
   
   Cause:   Received tagged vlan traffic was being indicated to Hyper-V with the
            vlan tag. This caused Hyper-V to discard the frame since it thinks
            it's bound to an untagged vnic.

   Change:  The vlan tag is cleared before indicating the frame to the os.

   Impact:  Impacts vnics bound to Hyper-V for all team types.

Version 1.2.6 July 24, 2008
---------------------------

* Basp was not correctly deleting duplicate IPv6 flows in its internal cache.
  Duplicate entries can occur when a remote IP address is assigned to another
  nic, or when communicating with another load-balancing team. This may result
  in the load-balancing algorithm not balancing IPv6 flows correctly across the
  team.

* Basp was sending internally generated packets with to much padding. All
  internally generated packets were being sent as 128-byte packets instead of
  their correct size. These didn't seem to cause any problems as the receiving
  stations appears to ignore the extra padding.

* Fixed a problem where Basp was not advertising support for
  OID_TCP6_OFFLOAD_STATS and OID_IP6_OFFLOAD_STATS even though it does support
  these oids.

Version 1.2.5 July 11, 2008
---------------------------

* CQ36288: BASP6 - IA64 : BSOD occurred after teaming w/ livelink enabled on
  Win2k8 IA64. A buffer was being passed to basp with unaligned data.  When basp
  accessed the data, a BSOD occured. This problem was fixed by declaring this
  data as unaligned. This problem only occurs when LiveLink is enabled on some
  IA64 systems and has no impact on x86 or amd64 platforms.

Version 1.2.4 July 9, 2008
--------------------------

* Optimized send and receive code path to improve performance.

Version 1.2.3 July 2, 2008
--------------------------

* Added RSS support. Unlike offload capabilities, RSS support is not calculated
  dynamically as nics in the team are disabled/link-down or enabled/link-up.
  Instead, RSS support is calculated statically based on the capabilities of the
  current set of nics in the team. This set of nics includes the standby nic if
  it is present.

* Fixed a bug that caused the team to be non-functional when a system is booted
  and all the nics in the team have been disabled execpt the standby.

Version 1.2.2 June 2, 2008
--------------------------

* CQ35552: BASP6-can't create team and blscreen under 2K8-IA64 system. A buffer
  was being passed to basp with unaligned data. When basp accessed the data, a
  BSOD occured. This problem was fixed by declaring this data as unaligned. This
  problem only impacts some IA64 systems and has no impact on x86 or amd64
  platforms.

Version 1.2.1 May 21, 2008
--------------------------

* CQ35017: Have Baps6 unbind QoS packet scheduler from adapter when added to a
  team. The name for this cq is inaccurate. It should be something like "Rebind
  QoS Packet Scheduler to adapter when uninstalling basp using baspun while a
  team exists". This problem is the same as CQ33298 fixed in 1.1.0, except it
  applies t the "QoS Packet Scheduler" instead of the "Link-Layer Topology
  Discovery Mapper I/O Driver". It has been fixed in the same manner as CQ33298
  and has the same restrictions and limitations.

* CQ35020: The change made in 1.1.3 did not verify. Rewrote a portion of the
  pnp event handler to reduce the number of times number times basp requested
  ndis to reenumber a the bindings, as extra reenumeration requests seems to
  confuse ndis. I could find no other problems in basp that would cause the
  problem reported. These changes also entailed reworking the Bonus Fix so that
  it once again operational.

Version 1.2.0 May 7, 2008
-------------------------

* Added IPv6 load balancing and failover support. This includes the following
  features.

  - IPv6 Outbound load balancing for SLB, LACP and GEC teams
  - IPv6 Inbound load balancing for SLB teams
  - IPv6 Checksum offload
  - IPv6 Large send offload (LSOv2)
  - IPv6 Connection offload (TOE/Chimney)
  - IPv6 LiveLink (probe packets)

Version 1.1.3 May 7, 2008
----------------------------

* CQ35020: No more than one VLAN can be added to a team in BACS3. Basp was
  trying to re-enable a vnic from a global pnp event, while the os was disabling
  the vnic through MiniportHaltEx. Once this happened, the vnic could not be
  enabled. The fix for this problem was to not reenable a vnic on global pnp
  events. This entailed removing the Bonus Fix in 1.1.0.

Version 1.1.2 April 10, 2008
----------------------------

* CQ34643: Basp.inf file has incorrect version displayed in properties. The
  wrong version in inf. Will bump version to 1.1.2 and re-release everything.
  Only the version number has changed, nothing else.

Version 1.1.1 April 1, 2008
---------------------------

* CQ34215: Int 2ch assertion when running sockdie on SLB w/FOLB team when the
  debugger was attached to the sut. If the system was booted with debugging
  disabled, the system would hang. The int 2c/system hang ocurred because basp
  deadlocked when two basp threads simultaneouly attempted to acquire the same
  two spinlock, but in reverse order. This problem should only occur on slb
  teams. This problem was fixed by merging the two spinlocks into a single lock.

* Fixed two problems where arps may not be sent when the system is in a low
  resource condition.

Version 1.1.0 February 25, 2008
-------------------------------

* CQ33298: When bacs is uninstalled with team present, Link-Layer I/O driver and
  Responder remain unbound to adapter. The "Link-Layer Topology Discovery Mapper
  I/O Driver" and "Link-Layer Topology Discovery Responder" are two new
  protocols that are now available in Vista/LH. BACS was recently changed to
  support these protocols, such that when it creates a team, it unbinds these
  protocols on the underlying miniport, and when it deletes a team, it rebinds
  these protocol to the underlying miniport driver. The problem was that when
  basp is uninstalled, binding process is controlled by the co-installer
  (basp.dll), not BACS, and the co-installer had not been modified to support
  these new protocols. This problem was fixed by adding support for these two
  protocols to the co-installer.

  There are two points I'd like mention regarding this issue. The first point is
  that both BACS and the co-installer always rebind these protocols to the
  underlying miniport driver when a team is deleted or basp is uninstalled. This
  means that even if these protocols were unbound to the miniport when the team
  was created, they will end up being bound to the miniport when the team is
  deleted. This is how BACS and the co-installer have always behaved towards all
  the protocols they support, e.g. IPv6, and so this is just a caveat I wanted to
  point out -- BACS and the co-installer do not necessarily restore the bindings
  to the orignal settings before the team was created. The second point is that
  there is a third new protocol in Vista/LH named "Reliable Multicast Protocol"
  that has the same set of issues as found with the LLT protocols. I have added
  support for this protocol in the co-installer. Support for this protocol was
  also added to BMAPI, so make sure you're using the latest version of
  BACS/BMAPI.

* CQ31578: BSOD occurred when testing mixed mode (L4/L2) teaming in LH-32. The
  BSOD occurred because Basp was asked to terminate a connection that was not
  offloaded. The retail version of Basp assumes a connection is offloaded when
  requested to terminate a connection and will access an internal connection
  context data structure. This context doesn't exist if the connection isn't
  offloaded and results in a BSOD when Basp tries to reference it. Note that the
  checked version of Basp does validate the offload context and generates an
  assertion in this same scenario. I believe this is a bug in Ndis since it
  should only terminate connections that have been offloaded successfully. This
  problem was worked around by failing terminate offload requests on connections
  that haven't been offloaded.

* CQ33540: BASP6 SLB team exhibits lower performance with L4 enabled. This
  problem was caused because Linux endpoints with two nics were used without
  enabling arp filtering. Without arp filtering, linux sends arps on both nics
  (google "arp flux") which confused basp's load balancer. This would result in
  the flows becoming unbalanced - more flows on one nic than another - and
  reduce network performance of the team. With arp filtering enabled on the
  endpoints, Linux only sends arps using the nic that is a member of the same
  broadcast domain as the arp. This allowed basp to correctly map an IP address
  to a MAC address and balance the flows on the nics, which fixed the problem.

  A bug was also found in basp that would still allow two arp cache entries with
  the same ip address, but different mac address to be stored in the cache (see
  bullet #6, v1.0.8). This bug only occurred when using Linux endpoints with arp
  filtering disabled, but it also contributed to the flow imbalance and the
  performance problem. This bug was fixed by searching for duplicate IP
  addresses in the arp cache when adding a new arp entry and deleting the
  existing entry if found and by itself will reduce, but not eliminate, a
  performance reduction when using Linux endpoints with arp filtering disabled.

* CQ33648: Unable to use SLB teamed adapter on NLB cluster. While halting a
  vnic, Ndis returned success on an unbind request from basp, but never actually
  performed the unbind. When this happened, Ndis would never reinitialize the
  vnic. The fix was for basp to wait 20s for the unbind to occur and if it
  doesn't, retry the unbind operation. 

* BONUS FIX: Basp had a long standing issue where if one vnic in a muli-vnic
  team was diabled, all the vnics in the team had to be disabled before it could
  be re-enabled. This problem was fixed as part of the research for cq33648.

Version 1.0.8 January 8, 2008 
-----------------------------

* CQ33060: SUT locks up when running sockdie stress L4 traffic on a SLB
  (2 vlans)with 2 5708c. The miniport driver indicated an unexpected
  RESET_START status which caused basp to try and pause the nic and failover the
  connections to another nic. The problem was that the status was indicated a
  high IRQL, but the pause function must run at a low IRQL. This caused basp to
  hang. Basp was changed to call the disconnect function instead of the pause
  function which can run at IRQL <= DISPATCH_LEVEL.

* Increased the maximum mtu size to 9000 to support jumbo frames. The mtu size
  is still set to the smallest mtu size of all the nics, so all nics in the team
  must have their mtu size set to greater than 1500 so support jumbo frames.
  This currently will not work if you hot add a nic with a mtu size less than
  the current mtu sized used by the team.

* Improved transmit performance on systems where the number of cpus is less than
  the number of nics in the team. When sending packets, some nics would always
  be serviced first causing the remaining nics to be cpu starved. A round robin
  algorithm was implemented to provide equal transmit servicing of all nics in
  the team.

* Improved L2 and L4 receive performance by batch processing nbls indicated with
  the resources flag set.

* Eliminated temporary redirection of traffic to the primary on target system
  when a broadcast arp is sent. This change will reduce the number of
  out-of-order packets received from the target of the broadcast and the number
  of retransmissions required.

* Fixed problem when remote system reassigned its ip address to another nic.
  This usually resulted in multiple cache entries for the same ip address and
  would cause problems with redirecting inbound traffic.

Version 1.0.7 November 23, 2007
-------------------------------

* CQ32653: BASP6 1.0.6 BSOD during sleep stress tests. Basp was stuck in an
  infinite loop waiting for the miniport to wake-up. 

Version 1.0.6 November 8, 2007
------------------------------

* CQ31635: BSOD occured when adding untagged vlan to existing team with 4 NX2
  with 4 Vlans. This problem was caused by the unbind operation not completing
  from withing the MiniportHaltEx routine. When the last vnic is deleted, all
  the nics are unbound and the team data structure is freed. If the unbind
  operation then occurs after the MiniportHaltEx has exited, a BSOD will occur
  when the team data structure is dereferenced because it is no longer
  allocated. This problem was fixed by delaying the deletion of the team data
  structure until all unbind operations have completed.

* CQ32254: Team(s) is/are inactive when you create multiple teams. Basp assumed
  the nic will generate a status indication when given a pnp restart command.
  This does not always happen. Basp was changed to query the link status of the
  underlying nic when given a pnp restart command. 

* Reduced number of packets discarded when disabling a nic by added delay to the
  pnp pause function to allow in-transit packets to arrive.

* Fixed spinlock imbalance.

Version 1.0.5 November 2, 2007
------------------------------

* CQ31449: Traffic does not load balance in AFD team on the 2nd adapter after
  a fallback event.

* Fixed problem where all the vnics in a LiveLink team remain disabled after a
  vnic is deleted from the team.

* Fixed BSOD caused when Basp receives a status change after the team has been
  deleted.

* Fixed a race condition where Basp would attempt to send a probe packet on an
  underlying nic that was just closed.

Version 1.0.4 October 29, 2007
------------------------------

* CQ31853: Team still active when it doesn't have vlan, but livelink vlan is
  set, probes retried are shown.

* CQ31845: Fixed problem where AFD LiveLink would not fallback to a primary when
  the standby nic was disconnected.

* Fixed problem with AFD LiveLink where the primary would not be enabled when
  connected after the standby nic has been disconnected.

* Fixed problem with AFD LiveLink where when creating a team, the team would
  come up with the AFD standby nic active.

* Fixed problem where SLB team would incorrectly respond to gratuitous ARP
  REPLYs.

Version 1.0.3 October 12, 2007
------------------------------

* Implemented AFD LiveLink.

Version 1.0.2 October 10, 2007
------------------------------

* CQ31506: Testing failover in SLB, eventually TOE connections will drop 
  off to 0. Packets were being dropped on failover causing some of the sockdie
  sessions to hang. Basp was changed to not drop packets when an underlying nic
  is disabled and there are other active nics in the team.

* CQ31635: BSOD occurred when adding untagged vlan to existing team with 4 NX2
  with 4 Vlans. Basp was being called with a PnP event after the team had been
  deleted. The PnP event handler now checks that the team hasn't been deleted
  and locks if from being deleted until the PnP event completes.

* Fixed memory leak that occurred when nics are added after the first mif.
* Fixed error handling unwind when adding a nic failed.

Version 1.0.1 September 14, 2007
--------------------------------

* CQ29621: Team remains inactive after removal of NX2 adapter from team
  while passing traffic. Under heavy traffic, Ndis will fail the call to
  NdisIMInitializeDeviceInstanceEx to initialize a vnic. Basp was modified
  to retry initializing the vnic until successful or 60 seconds had expired,
  at which time it will fail the vnic initialization. Previous versions of
  Basp would only attempt to initialize the vnic one time.

Version 1.0.0 September 14, 2007
--------------------------------

* CQ31406: LACP teams are not active. Nics in a LACP team were not able to
  send or receive PDUs to the switch due to nic being treated as not ready.
  The fix is to add special code to handle probe disconnect differently than
  media disconnect. 

* CQ31369: BASP6 primary version number must be greater than 0. The version 
  number was changed to 1.0.0.

* CQ31411, CQ31409: A primary nic receives packets when the standby nic in an
  AFD team is active. An oid call to set the mac address of a nic was failing
  when binding the nic to the team.  This could cause the nic to have the wrong
  address and receive packets it wasn't suppose to receive (among other things).
  This problem happened because the nic was in the wrong state (OPENING) and
  blocking the oid call to set the nics mac address. When a nic is in the
  OPENING state, oids will not be forwarded to it. The fix was to move the state
  change to the PAUSED state up a couple of statements to just before setting
  the mac address.  Oids calls are allowed when in the PAUSED state and this
  allowed the oid call to pass through successfully.

Version 0.1.9 September 12, 2007
--------------------------------

* CQ31291: BSOD in Vista x64 while running sleep stress and common scenario
  stress in HCT. The BSOD was caused by basp sending a packet using a nic in the
  team that was in a low power state. Basp was changed to not send packets on a
  nic until the nic has indicated the link is up and Ndis has indicated that the
  nic is the running state. 

* CQ31283: System BSOD during boot with iSCSI. A race condition between BASP
  initialization in DriverEntry and the handling of protocol binding calls was
  causing access to a uninitialized variable. The initialization sequence in
  DriverEntry was reordered to avoid race condition.

* Fixed legacy bug that caused BSOD when Basp was requested to send a packet when
  no nics were ready.

Version 0.1.8 August 30, 2007
-----------------------------

* CQ31067: Chariot error 202 is observed when non-active stand-by adapter is
  disconnected. Flows were being rebalanced when the link status changed for any
  nic in the team. Modified basp to rebalance when the ready_map is changed (the
  ready_map doesn't include the standby nic unless the team is in a failover
  state).

* CQ30952: Disable/re-enable VLANs, the VLANs remain inactive. The fix for this
  bug added in 0.1.7 resulted in teams being disabled when a new team was
  created. The team was became disabled because Ndis was pausing each nic in the
  team and later restarting it, but Basp did not have support for the restart
  request. Added additional capability to Basp to restart existing nics when
  requested to do so by Ndis.

* Add send nbl coalescing to improve performance.

Version 0.1.7 August 28, 2007
-----------------------------

* CQ30952: Disable/re-enable VLANs, the VLANs remain inactive. Add check for
  NetEventIMReEnableDevice in ProtocolNetPnpEvent().

* Added code to zero out the team's task offload capabilities if the team
  does not support task offload.

Version 0.1.6 August 27, 2007
-----------------------------

* Fixed a bug where basp would drop unacknowledged tcp packets on a connection
  that was being offloaded.

* Support for split protocol headers added.

Version 0.1.5 August 21, 2007
-----------------------------

* CQ30669 - Turn off LSO functionality in Basp6 when a 3rd party adapter is
  present. This is a feature request.

* The number of L4 offload connections was not being divided and distributed
  across the vnics in the team. This resulted in an over subscription of L4
  offload connections and caused basp to fail L4 offload initiation requests.
  Basp was changed to equally distribute a team's L4 offload capabilities
  across all vnics in a team.

* INF cat file failed signability test with "DriverVer missing or in incorrect
  format in \baspm.inf" and "DriverVer missing or in incorrect format in
  \baspp.inf" error. The inf files were changed so the month and day have a
  leading zero if necessary and are always two digits long.

* CQ30843 - Traffic is not load balanced in a LACP team. The team traffic
  statistics were not being collected properly.

* CQ30741 - Traffic fails to offload back to adapter after it has been
  disabled/re-enabled. The team traffic statistics were not being collected
  properly.

Version 0.1.4 August 2, 2007
----------------------------

* CQ29885 - LSO does not increment after traffic fails over to stand-by
  member in a SLB/AFD with NX1 or NX2 adapters. The team link and offload
  capabilities were not being recalculated when failing back from a standby nic.

* CQ29773 - Traffic does not fallback in a AFD team when the stand-by adapter is
  disconnected. Fixed corner case where link status was not being indicated
  properly when falling back to primary on a AFD team.

Version 0.1.3 July 31, 2007
---------------------------

* CQ30562 - Link speed is 8Gbps when all adapters disconected. Fixed a bug in
  the link speed calculation when no nics in the team are ready.

* CQ30376 - BSOD when running sockdie stress with TOE. A memory structure was
  being accessed after it was freed too early.

* CQ30417 - Non-IPv4 connection loss on failover. Non-IPv4 traffic is only
  supported on teams that have all Broadcom nics. The NxI nice i/f changed that
  caused basp to think it was not a Broadcom nic.

* CQ30419 - BSOD when toggling chimney enable. The context area for nbl's was
  being freed to early which caused a bugcheck when basp tried to access the
  context.

* CQ30404 - BSOD on failover with TOE. A handle in the offload block was not
  being restored when the underlying miniport driver failed an offload request.

Version 0.1.2 July 11, 2007
---------------------------
* Fixed divide by zero error when enabling/disabling 5708 in connection manager.
* Fixed bugcheck caused when last nic in team is disabled and ndis tried to
  offload an L4 connection.  

Version 0.1.1 July 10, 2007
---------------------------

* CQ30123 - Low thruput on LACP teams. Corrected problem with LACP state machine
  not processing packets properly.

* CQ30116 - LSO does not function on LACP teams. Corrected problem with team
  capabilities not being advertised properly on LACP teams.

* CQ30240 - Link speed of zero reported on LACP teams. Corrected problem with
  link speed not being calculated on LACP teams.

* CQ30405 - Basp indicates aggregate link speed for team. Basp was modified to
  indicate the highest link speed of a single nic as the team's link speed.

* The nbl context memory was being freed after initiating an L4 offload 
  connection. This could cause any number of problems with L4 teaming.

Version 0.1.0 July 2, 2007 - FEATURE COMPLETE
---------------------------------------------

* Added basic TOE offloading support.

Version 0.0.6 June 18, 2007
---------------------------

* Fixed the IOCTL interface used by BACS. This interface was broken on Vista/LH
  and consequently BACS had limited, but usable, functionality. This version of
  basp and a new version of BACS/BMAPI restores complete functionality.

* Added basic TOE offloading support. This feature is still being developed and
  should not be tested. The purpose of including it in this release is to test
  for any side effects it may have introduced to L2 teaming.

* Added support for generic trunking and 802.3ad trunking.

Version 0.0.5 May 17, 2007
--------------------------

* There is a race condition in basp 0.0.4 that occurs when a team is deleted or
  when a nic is removed from the team (which will cause the team to be deleted)
  that causes a bug check.

  When a team is deleted, the unbind routine terminates all threads and waits for
  a signal that the threads have terminated. The threads generate the signal just
  prior to calling PsTerminateSystemThread. They have to do this before the call
  to PsTerninateSystemThread because this call doesn't return. If the signal
  arrives a the unbind routine before PsTerminateSystemThread terminated.

  DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS (ce)
  A driver unloaded without cancelling timers, DPCs, worker threads, etc.

  This problem was fixed by registering a notify routine for when the thread is
  really terminated using the PsSetCreateThreadNotifyRoutine  and
  PsRemoveCreateThreadNotifyRoutine calls.

Version 0.0.4 May 15, 2007
--------------------------

* Added support for Probe Packets (LiveLink)
* Added support for NxII nics
* Added support for LsoV2

Version 0.0.3 May 01, 2007
--------------------------

* Basp would sometimes hang when deleting a team or disabling a nic using the
  Network Connections Manager. The OS would remain operational, but a hard reset
  was required to for Basp to recover. This happened because Basp would not
  return receive net buffer lists after a vnic was paused prior to shutting
  down.

Version 0.0.2 May 01, 2007
--------------------------

The following feature have been added.

* L2 Task Offloading (LsoV1, XSUM)

Version 0.0.1 April 05, 2007
----------------------------

Pre-Alpha Release of Basp Ndis 6.0 for Vista/Longhorn. This release provides a
pre-view of Basp for Vista/Longhorn with basic SLB teaming functionality only.
The following features are supported.

* Install/Uninstall Basp on Vista/Longhorn
* Create/Delete one or more SLB teams
* Create/Delete one or more VNICS
* Add/Remove one or more primary NICs in team 
* Add/Remove optional standby adapter
* L2 Inbound/Outbound load balancing
* Failover/Fallback supported
* Tagged/Untagged Vlans are supported
* Hot add/delete NICs to teams
* Auto-fallback Disable supported
* Enable/Disable team member in Network Connection Manager supported
* Supports Broadcom Ndis 6.0 driver w. NICs >= 5703.

The following features are not available with this release.

* LiveLink
* FEC/GEC
* LACP
* L2 Task Offloading (LSO, XSUM)
* L4 Connection Offloading

The following features may work, but havn't been tested

* Third Party NICs
* MSVS
* Blade Servers
* IA64, AMD64 platforms
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: web1, load: 0.61