release.txt Driver File Contents (R230074.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-2009 Broadcom Corporation
                             All rights reserved.


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: web2, load: 0.34