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