===========================
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
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.