=========================== R E L E A S E N O T E S =========================== Broadcom Advanced Server Program (BASP) Driver for Windows 2003, Windows XP, Windows 2000 X86, AMD-64, IA-64 Copyright (c) 2000-2009 Broadcom Corporation All rights reserved. Version 6.3.24 March 14, 2010 ----------------------------- 1. CQ47714: BSOD is seen when team is present and Symantec Anti-Virus SEP is installed Problem: The system bsod's when a team is present and Symantec Anti-Virus SEP is installed Cause: The Symatec software is cloning a receive packet and not filling in the OriginalPacketInfo field in the packet extensions. Basp bugchecks when it reads and dereferences the null value stored there. Change: This is a bug in the Symantec software, but it was quicker to implement a work around in basp then to ask Symantec to fix the bug. Basp was changed to check for a null value in this field and when detected, to use the packet passed to instead of the original packet. Impact: This change is in the receive path and affects all team teams. The problem has been in basp since the first release, but is only seen when using the Symantec software v11.0.6. This problem is not seen when using the Symantec software v11.0.4. The only other field basp uses in the packet extensions is the Ieee802QInfo. This field is required for vlans. The Symantec software appears to be filling in this field correctly, but using vlans with the Symantec software should be monitored closely. Version 6.3.23 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. Version 6.3.22 December 21, 2009 -------------------------------- 1. 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 6.3.21 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 6.3.20 October 7, 2009 ------------------------------ 1. CQ44000: BSOD observed while passing sockdie L4 traffic and disabling eVBD Problem: Basp indicated a nbl to ndis with a null handle. Cause: Basp timed out after one minute waiting for a nbl to return from the evbd driver. When the nbl didn't return within this time period, basp timed out and disabled the interface to the evbd driver, creating the null handle. Later the nbl was returned to basp and basp tried to return it to ndis using the null handle. This caused a bsod in ndis when ndis dereferenced the handle. Change: The time out to wait for a nbl to be returned was incresed from one minute to five minutes. Impact: This change only impacts slb teams with L4 offloading enabled while failing over. Version 6.3.19 August 26, 2009 ------------------------------ 1. CQ42969: 5709C - Customer experiencing occasional system hang condition Problem: There were actually two bugs associated with this problem. The first bug, the "deadlock bug", was fixed in #1 of v6.3.18. This is the fix for a second bug releated to this problem report. This problem is that an L4 flow could be prematurely deleted from the internal arp cache. Prematurely deleting an L4 flow may result in dropping connections that are being L4 offloaded. This problem is related to the deadlock bug because it allowed the deadlock code to execute on an L4 offload capable team, when the deadlock bug should only have been possible on teams capable of L2 offloading only. Cause: Deleting flows in the internal arp table is disabled on teams that are L4 offload capable. However, there was a bug in the driver that allowed flows to be deleted when the flow manager executed more than once on the same kernel tick. Change: Basp was modified to not delete L4 flows when the flow manager executes multiple times on the same kernel tick. Impact: This problem only occurred on slb teams that are L4 offload capable. Version 6.3.18 August 24, 2009 ------------------------------ 1. CQ42969: 5709C - Customer experiencing occasional system hang condition Problem: Servers running w2k3 would occasionally hang when running a basp slb team. Cause: A 3-way deadlocks was created by basp when calling ndis to send an internal array of packets while holding a spinlock. Change: Basp was modified to release the spinlock before sending internal packets. Impact: This problem only occured on slb teams with two or more primaries and more than 64 active remote endpoints to the basp team. 2. CQ39535: Causes NLB cluster to ARP flood network if a remote host pings cluster Problem: This is a back-port of a problem reported on basp6. 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 6.3.17 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 6.3.16 June 22, 2009 ---------------------------- 1. CQ42082: Restoring IPv4 address not bound in OS until reboot occurs Problem: Static IPv4 address would not be active when restoring a saved LACP team configuration containg static ip addresses until the sut was rebooted. Cause: Regression testing identified the change between v6.3.4 and 6.3.5 that caused this problem to occur. Change: Since 1) this problem only happened on LACP teams, 2) the change that caused this problem to occur is only need for L4 offloaded and 3) only slb teams do L4 offloading, the change that caused this problem to occur was conditionalized to only execute on SLB teams. This fixed the problem. Impact: This change applies to non-slb team types, eg. LACP and GEC. Version 6.3.15 June 18, 2009 ---------------------------- 1. CQ42066: No data for NW utilization or Link Speed in TaskMgr for 802.3ad team running traffic Problem: The link speed was reported as 0 on lacp and gec team types. Cause: Some debug code was inadverently left in the driver that blocked the link speed calculation on non-slb team types. Change: Remove the debug code. Impact: This change only applies to lacp and gec team types. Version 6.3.14 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 6.3.13 May 22, 2009 --------------------------- Fixes: ====== 1. CQ41070: Adding VLAN team causes non-team NIC to also send out VLAN tag packet Problem: Adding VLAN team causes non-team NIC to also send out VLAN tag packet Cause: Basp was not clearing the vlan id field when it returned a send packet to ndis. The os would reuse the packet to send a frame on the non-team nic. The non-team nic would see the stale vlan id and send the packet with a vlan tag. Change: Basp now clears the vlan id field when returning send packets to ndis. Impact: Affects all vlan team and msvs. Version 6.3.12 May 8, 2009 -------------------------- Fixes: ====== 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 6.3.11 Feburary 5, 2009 ------------------------------- Fixes: ====== 1. CQ39446: Sockdie traffic auto fallsback in AFD team when both primaries are re-enabled Problem: The team would fallback to a load balancing nic when the standby nic was active in an AFD team with Live Link enabled when the load balancing nic was reenabled. The team should only fallback when the standby nic is disabled, loses link, or when a user initiates a fallback in BACS. Cause: The Live Link modules uses a separate set of flags to control AFD. One of these flags was not being checked to see if the standby was active when a nic was reenabled. Change: Basp was changed to not add a nic to the ready map when when a nic is reenabled and the standby nic is active in a Live Link AFD team. Impact: This change only applies to Live Link AFD teams. 2. The standby nic is active after booting a system with a AFD team. Problem: The standby nic will be active when load balancing nics are ready when the system is first booted. The user is required to initiate a failover to active the load balancing nics. The team then behaves correctly after the first failover. Cause: An internal failover event would happen when the standby nic was the first nic bound in the team Change: Enabling AFD is delayed for ten seconds when a team is created to prevent premature AFD activation and allow a second load balaning nic to be bound to the team second delay was added Impact: This change applies only to AFD and Live Link AFD team types. 3. CQ39411: The message file in basp5 driver is broken. Problem: Messages are not displayed correctly in the event log. Cause: The message file was broken fixing cq37379 in v6.3.9. Change: Repaired the message file. Impact: This change applies to most messages displayed in the event log. Version 6.3.10 January 5, 2009 ------------------------------ Fixes: ====== 1. CQ37378: Discarded packet counter Problem: The basp discard packet counter behaved differently in Ndis 5.x and Ndis 6.x Cause: The discard packet counter in Ndis 5.x did not included packets discarded by the policy engine. Change: The discard packet counter was changed to include packets filtered by the policy engine. Impact: This change applies to all team types and platforms. Version 6.3.9 December 22, 2008 ------------------------------- Fixes: ====== 1. CQ37379: System eventlog entries after deleteing a team. Problem: Basp logged a warning message when a team was deleted. Cause: The message severity was warning and not informational. Change: The message severity was changed to informational. Impact: This message is logged when any team type is deleted. 2. CQ38507: Bsod occurred when deleting SLB team after passing sockdie traffic overnite Problem: The team was deleted before a failover had completed. Cause: This problem was caused because the failover that happens when a team is deleted took an excessive amount of time. The timers between the unbind and failover were not coordinated which allowed the unbind to timeout and delete the team before the failover attempt had timed out and exited. The unbind timeout is 2 minutes, and the failover timeout is a sum of timeouts which if they all timedout, can be up to 5 minutes. Change: The unbind timer was changed from 2 minutes to 5 minutes. Impact: This change only impacts slb teams. Version 6.3.8 October 28, 2008 ------------------------------ Fixes: ====== 1. CQ38183: Bsod occured when updating vbd fre to vbd chk with team present. Problem: This is a another manifestation of cq37782. Basp was sending a queued arp on a nic that had just been unbound. Cause: There was a logic sequencing error that allowed new sends to be posted after the nic being unbound was paused. Change: Basp was changed to block new sends before waiting for pending sends to complete. Impact: This was an L2 send problem in all team types and platforms. Version 6.3.7 October 17, 2008 ------------------------------ Fixes: ====== 1. CQ37949: Chariot traffic auto falls back in a mixed mode team when disable/enable primaries Problem: The problem was introduced in v6.3.5 and would occur on SLB-AFD teams with any nic configuration. This happened when the standby became active due to one or more or primaries becoming disabled. When the primary was later enabled, the team would fallback to the primary even though AFD was enabled. Cause: The primary was becoming active because some code add in v6.3.5 to disable offloads while binding a nic was causing a failover to occur at the end of the binding process when offloads were again enabled. Change: L4 offloads are still disabled during the binding process, but a change was made to not cause a failover event at the end of the binding process when offloading was enabled. Impact: This change is only applied when nics are bound to the team and should only impact SLB-AFD team types. Version 6.3.6 October 14, 2008 ------------------------------ Fixes: ====== 1. CQ37782: Bsod occured while passing L4 sockdie traffic to SLB team while disabling 1 port in team Problem: This problem was caused by basp trying to send a packet on a nic that had just been unbound. Cause: A nic was assigned to send a packet, but the send routine was preempted before the packet could be sent, and the nic closed and unbound from the team. When the send routine resumed, dereferencing the mif->handle caused a bug check on the call to NdisSend(). Change: Basp was changed to allow all pending sends to complete when a nic is unbound from the team. Impact: This was an L2 send problem in all team types and platforms. Version 6.3.5 October 8, 2008 ----------------------------- Fixes: ====== 1. CQ37822: Bsod occured while deleting SLB team CQ37306: Assert occured passing traffic to SLB w/3vlans Problem: Basp was calling ndis with a null handle. Cause: Ndis was offloading a connection when no nics were ready. Change: Basp was changed to fail offload requests when not nics are ready. Impact: Applies to slb teams that are L4 offload capable. Version 6.3.4 September 24, 2008 -------------------------------- Fixes: ====== 1. CQ37016: 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 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: Impacts only slb team types, but occurs on all platforms when unbinding a nic from the team. Version 6.3.3 September 17, 2008 -------------------------------- Fixes: ====== 1. CQ37189: Does not wake from S4 with 64 VLANS CQ37199: VLANS: Fails ACPI stress tests Problem: Basp would take to long to complete initialization when configured for many vlans. These problems were reported on ndis6 and fix was backported to ndis5. Cause: iSCSI adapters that are not configured for an IP address broadcast arps with a source ip of zero. Multiple unconfigured iSCSI adapters where on the network. When basp receives these arps broadcasted from different stations, it sees that the mac address associated with IP address zero has changed. This cause basp to perform a delete/add/rearp operation which is expensive and causes basp's initialziation time to increase. Change: A filter was added to basp to not add arp and ndp packets to basp's internal cache when the source ip address of these packets is zero. Basp still indicates these packets to the os, but does not add them to its internal cache. Impact: This problem happens only on SLB team types on any network with unconfigured iSCIS adapters. 2. CQ37362: Bacs displays LACP team type as TOE capable. CQ37360: LSO does not increment in LACP team config Problem: Basp was advertising toe capability when all the underlying nics supported toe, regardless of the team type. Cause: Only slb teams types support toe. Change: Changed basp to only allow advertisment and setting toe capabilities on slb teams. Impact: This problem only impacts LACP and GEC team types. 3. CQ37372: BSOD (C5 stop code) is observed during a reboot test with SLB team with 6 vlans CQ37122: Bsod observed when booting into OS (basamd64!reg_read_team_registry+453) Problem: Basp was reading the registry while holding a spinlock. Cause: While holding a spinglock, the os cannot handle page faults. Reading the registry can sometimes cause a page fault. If page fault happens while holding the spinlock, the system will BSOD. This is what was happening. Change: Basp was changed to read the registry after the spinlock was released. Impact: This problem change happen whenever a team is created or edited. It will not happen when the team is deleted. Version 6.3.2 August 29, 2008 ----------------------------- Enhancements: ============= 1. CQ13925: IPv6 support is not avaiable with Basp5. Extended IPv6 support to include IPv6 LiveLink. Fixes: ====== 1. CQ37013: Bacs:Basp5:NX2:E1.0: Basp is not reporting the OL cap of team to bacs. Bmapi is not using the correct header size to validate the offloading capabilities returned by basp due to a bug in the ddk. Basp was modified to return the incorrect header size in order to pass bmapi validation. 2. Fixed a bug the would cause inbound flows to be deleted prematurely from basp's internal cache in team with 1-primary and 1-standby nic. Version 6.3.1 August 20, 2008 ----------------------------- 1. Changed the driver directory strucutre. The new directory names are listed below. Old New Description --- --- ----------- xp32 i386 This is the Ndis 5.1/5.2 x86 driver. amd64 amd64 This is the Ndis 5.1/5.2 amd64 driver. xp64 ia64 This is the Ndis 5.1 ia64 driver. w2k This is the Ndis 5.0 x86 driver for Windows 2000. This is a new directory. This driver was previously stored in the xp32 directory. Version 6.3.0 August 18, 2008 ----------------------------- Enhancements: ============= 1. CQ13925: IPv6 support is not available with Basp5. IPv6 support for load balancing and failover support was added to Basp. 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 Note that the following IPv6 features are not supported. - IPv6 Large send offload (LSOv2) is not supported by Ndis 5.x - IPv6 Connection offload (TOE/Chimney) is not supported by Ndis 5.x - IPv6 LiveLink (probe packets) is not support in this release. 2. CQ35559: Mismatch in jumbo mtu size for team and team members. The maximum 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. 3. CQ34714: Task manager shows wrong link max speed for teaming adapter. Basp reports the team's link speed as the highest link speed of all the nics in the team. To address the problem reported, a new registry key was added to configure basp to report the team's link speed as the aggregate link speed of all ready nics in the team. The registry key to enable aggregate link speed reporting 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. 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. 4. CQ36495: Task mgr shows link speed as 10Mbps when there is no link. Basp was modified to report the last non-zero link speed when all links in a team are down. If a team has never established a link, the link speed will still be reported as 10Mbps 5. CQ34330/CQ33128: Toe license limited to 1024 connections. Basp offloading module was modified to support an unlimited number of offload connections. The following registry key must be created to configure the number of offload connections supported by the hardware. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Blfp\Parameters\ {team_id}] "ToeMaxConns"=dword:00000400 This registry key must be created after the team has been created. The {team_id} field must be replaced with the numeric identifier for the team, e.g. 1. After the registry key has been created, the system must be rebooted for the change to take effect. The registry key is deleted when the team is deleted. If the registry key is not present and the team is TOE capable, the default value for ToeMaxConns is 1024. If a team is TOE capable, ToeMaxConns must be set to the smallest number of TOE connections supported by any one nic in the team. Version 6.2.36 July 25, 2008 ---------------------------- Fixes: ====== 1. Problem: Multicast streaming stops when using the Device Manager to failover and then failback a nic in the team. Cause: Basp stopped receiving multicast packets on the failback because the multicast address list was not being forwarded to the nic when it was reenabled. Disabling a nic from the Device Manager causes it to be unbound from the team and reset. The nic loses its current multicast list when it is reset. When the nic is later reenabled, basp should forward its current multicast address list to the nic, but it wasn't doing this. This resulted in the nic dropping all multicast packets and caused the test to fail. Change: This problem was fixed by forwarding basp's multicast address list to a nic whenever it is bound to the team. Impact: This change applies to all team types whenever a team is disabled and reenabled using the Device Manager, or a nic is hot added to the team. Version 6.2.35 June 6, 2008 ---------------------------- Fixes: ====== 1. Problem: CQ35743: Cannot get max TOE connections with BASP SLB team Cause: Basp was distributing the L4 offload connections across the total number of vnics plus one instead of just the total number of vnics. Change: Distributed the L4 offload connections across the actual number of vnics in the team. Impact: This change applies to teams that are L4 offload capable and have multiple vnics. Version 6.2.34 April 1, 2008 ---------------------------- Fixes: ====== 1. Problem: CQ34028: Oversubscription of L4 offload connection on team with more than 1 VNIC Cause: Basp was not distributing the L4 offload connections across the vnics. This would cause offloading of L4 connections to fail and the system to become unstable. Change: Statically and evenly distribute L4 connections across the vnics. Impact: This change applies to teams that are L4 offload capable and have multiple vnics. 2. Problem: CQ34079: Changing MTU size of physical adapter in a team will result in a "grayed out" team. Cause: Basp was indicating the incorrect frame size indicated when nics have different mtu sizes. Basp was incorrectly setting the team mtu size to the size of by the nic with the greatest mtu. Nics in the team with a smaller mtu size would fail sending packets with the larger mtu size. Change: Basp now sets the mut size to the smallest mtu size of the nics in the team. Impact: This impacts all team types where the mtu size of the nics in the nics in the team are not the same, eg. 1500. 3. Problem: Arps may not be sent when the system is in a low resource condition. Casue: Basp overwrote an index that would cause it to skip sending arps to some stations when it a low resource condition. Change: Basp no longer overwrites the index. Impact: This problem would only happen rarely on slb teams when the system was in a low resource state for multiple interations of the slb worker thread executing. 4. Problem: Disabled L4 debug messages. Version 6.2.33 December 10, 2007 -------------------------------- Fixes: ====== 1. Problem: CQ32976: BSOD on NDIS.sys on Magnum blade. Cause: There is a race condition between Ndis offloading connections and Basp posting a link status indicating that the link is down. If this race condition occurs as the link goes down on the last active nic in the team while Ndis is trying to offload a new L4 connection that isn't in Basp's internal arp cache, Basp may try and offload the connection using a data struture for an unused nic. The unused nic data structure has a null miniport handle and when Ndis derefereences the handle, a BSOD occurs. Change: Basp was changed to assign new connections to the last active nic when no nics are active. This way Basp will always have a valid handle to operate on. Impact: This bug may also occur when sending a unicast arp to a new destination and the race condition occurs as the link goes down for the last nic in the team with a nic. The change fixes both manisfestations of this bug. 2. Problem: CQ32457: BSOD is observed while pass traffic through slb team with 5 vlans, TOE enabled Cause: Basp exhausted all entries in an internal array required for L4 offloading. This could occur if Ndis tried to offload more connections than supported in the hardware. Change: Basp now fails an offload request when it is unable to allocate an entry in its internal array. Impact: Failing an offload request should only occur when the maximum number of offload connections the hardware supports is exceeded. Version 6.2.32 November 7, 2007 ------------------------------- Fixes: ====== 1. Problem: CQ31823: Fixed problem where SLB team would incorrectly respond to gratuitious ARP REPLYs. Version 6.2.31 October 4, 2007 --------------------------------- Fixes: ====== 1. Problem: CQ30534 Add support for "no Auto Fallback" with Livelink. Cause: New feature Change: Implemented the requested feature for w2k3. Impact: To use this functionality you need BACS 10.7.11 or later and BMAPI 7.8.4 or later. Version 6.2.30 September 11, 2007 --------------------------------- Fixes: ====== 1. Problem: CQ28853, CQ31290: After hot removal of an adapter from a team the team is either not active or not all remaining members of the team are active. Cause: When the team is being reinitialized, NDIS is not ready for BASP's call to NdisIMInitializeDeviceInstance. Change: Modified BASP to retry calls to NdisIMInitializeDeviceInstance if the function does not return success. Impact: none. Version 6.2.29 September 07, 2007 --------------------------------- Fixes: ====== 1. Problem: CQ31283: System BSOD during boot with iSCSI Cause: Race condition between BASP initialization in DriverEntry and the handling of protocol binding calls was causing access to a unitialized variable. Change: Reordered the initialization sequence in DriverEntry to avoid race condition. Impact: none. Version 6.2.28 September 04, 2007 --------------------------------- Fixes: ====== 1. Problem: CQ31135: System hangs when running BACS diagnostics. Cause: The fix for CQ30877 did not account for a potential deadlock condition on OID passlock. Change: Removed deadlock condition on OID passlock. Impact: none. 2. Problem: CQ31020: SLB teaming stops working with MSFT NLB after disconnecting the network cable. Cause: BASP did not account for the case where an ARP for the NLB team has not been added to the inbound hash. Change: Modify BASP to assign inbound ARPs for the NLB team to the primary adapter. Impact: none. Version 6.2.27 August 13, 2007 -------------------------------- Fixes: ====== 1. Problem: CQ30877: Blue Screen during reboot test. Cause: An OID was being processed and a physical nic was being loaded concurrently. This would cause the OID to intermittently process an OID with invalid data. Change: Synchronized the affected OIDs with the protocol bind routine. Impact: none. Version 6.2.26 August 8, 2007 -------------------------------- Fixes: ====== 1. Problem: CQ30877: Blue Screen during reboot test. Cause: An OID was being processed and a physical nic was being unloaded concurrently. This would cause the OID to intermittently process an OID with invalid data. Change: Synchronized the affected OIDs with the protocol unbind routine. Impact: none. Version 6.2.25 July 30, 2007 -------------------------------- Fixes: ====== 1. Problem: CQ28132: Converting from SLB to SLB AFD team when LiveLink is Present Does Not Reinitialize Virtual Adapter Successfully When changing the team type from SLB with LiveLink to SLB with Auto-Fallback Disabled (no LiveLink), the team will be disabled until the system is rebooted or the team is deleted and re-created. Cause: LiveLink doesn't support Auto-Fallback Disable. When the team was reconfigured to AFD, an internal flag disabling LL was not being cleared. Consequently, LL tried to initialze but failed, causing the binding operation to fail and the team to become disabled. Change: LiveLink is disabled for all team types execpt SLB with LL. Impact: This change fixes the problem that occurs when the team type is changed from LL to any other team type, i.e. AFD, LAG, or GEC/FEC. 2. Problem: CQ28289: BASP driver 6.2.22 copyright year in incorrect Cause: Copyright was incorrect. Change: Updated copyright to 2000-2007 Impact: The copyright is now correct on Basp's property page. 3. Problem: CQ28346: Cannot create team with BASP v6.2.22 on w2k3/IA64 system. Blue screen when creating a SLB team with BASP v6.2.22 on w2k3/IA64 system. Cause: Data mis-aligment on IA-64 systems. Change: Re-aligned data. Fixed incorrect address arithmetic in tdi.c. Impact: Only impact is on IA-64 systems running basp. 4. Problem: CQ28958: BSOD when disabling LSO/CO in team configuration. CQ30248: Intermittent Check 0x7f during system reboots. Cause: BASP's protocol bind/unbind routines did not handle multi-threaded re-entrancy properly. Change: Added a semaphore and spinlock to properly synchronize the binding and unbinding of the underlying miniport. Impact: none. Version 6.2.24 January 26, 2007 ------------------------------- Fixes: ====== 1. Problem: CQ28200: BACS ver. 10.0.8.0 did not complete the Delete A Team task. This problem was traced to Basp and addressed there. No changes were made to BACS to fix this problem. Cause: Basp will pause when deleting a team when it detects it has outstanding requests to Ndis that have not yet completed. Basp waits for up to 1 minute for the requests to complete before continuing with halting the team and unbinding from the underlying miniport driver. When Basp unbound the miniport driver, the minport driver also detected it had outstanding requests to Ndis and would wait about 2.5 minutes for the requests to complete before continuing. This problem was traced to Ndis 5.2 not returning receive packets when packet stacking was enabled. This problem was not seen when using Ndis 5.1, or when packet stacking was disabled. It is unknown at this time why Ndis 5.2 does not always return receive packets when packet stacking is enabled, though it is thought that this problem may be a bug in Ndis 5.2. Change: To work around this problem, packet stacking was disabled in Basp for Ndis 5.1 and 5.2. Impact: Not enabling packet stacking results in about 2% lower throughput of L2 traffic. This change is not in the L4 code path and does not impact L4 performance. Version 6.2.23 January 19, 2007 ------------------------------- Fixes: ====== 1. Problem: CQ28129: BASP needs to send out CTP packets on each VLAN. Cause: The purpose of CTP frames is to notify the switch that the team's MAC address is now connected to another port. Basp always sent CTP frames untagged. Switches configured to accept only tagged frames would discard the untagged CTP frames and not remap the team's MAC address to the new port. This can result in frames sent to the team being dropped until a _tagged_ packet is sent from the team that causes the switch to reassociate the team's MAC address with the new port. Change: Basp now sends a tagged or untagged CTP frame for each VNIC in the team. Impact: Teams with VNIC's using tagging may unnecessarily lose packets on on failover without this change, though they'll recover as soon as the team sends some tagged packets. 2. Problem: No CQ: Packets can be sent on the wrong VLAN. Cause: There were two problems. 1. The vlan id field was not being cleared in the packet extensions when sending untagged packets. This caused some untagged packets to be tagged with a stale tag from the tagged packet that previously used the packet extension. 2. A tagged VNIC would send directed ARPs untagged when failing over or rebalancing inbound traffic. This happens when NDIS clones a packet, such as when packet stacking or MSVS is used, but does not clone the miniport reserve field in the packet. When this happened, Basp would incorrectly calculate that the vlan id was 0 and use this value when sending all subsequent ARPs for this particular flow. Change: 1. The vlan id in the packet extension field is now always cleared before sending untagged packets. 2. Basp now obtains the vlan id from the original packet, not the cloned packet. Impact: 1. This problem only occurred on teams that had an untagged vnic and one or more tagged vnics. This problem resulted in a leaking of data from an untagged vlan to a tagged vlan, and caused packets to have to be retransmitted. 2. This problem could result in connections on a tagged VLAN being dropped. This problem did not require an untagged VNIC to be a team member. Version 6.2.22 January 10, 2007 ------------------------------- Fixes: ====== 1. Problem: CQ28054: Running multiple of clients of sockdie/nslicer against SLB team in a multi-processor system caused bsod during overnight test. Cause: There was a race condition in which multiple threads were processing a global structure variable. This structure's reference count gets decremented to zero. However, the non-atomic nature of the usage of the variable caused un-due processing of house-keeping functions causing system blue screen. Change: Changed the usage of InterlockDecrement function to use the returned value of the decremented reference count variable. This returned value is then used by caller functions to perform tasks. Impact: This change affects only Layer 4 TOE Offload functionality only. Version 6.2.20 January 5, 2007 ------------------------------ Fixes: ====== 1. Problem: CQ27871: Windows NLB Failover Unreliable with SLB Teams Cause: Basp was adding the cluster's IP address to its ARP cache table. When a failover occurred, Basp would send an ARP redirecting the cluster's clients to use the team's MAC address instead of the cluster's MAC address. This would break connections to other servers that were members of the cluster. Change: Basp no longer adds a cluster's IP address to its ARP cache table. This prevents Basp from sending ARPs using the cluster's IP/MAC addresses on failovers. Basp identifies cluster addresses by looking at the source MAC address. If the source MAC address is a multicast, then the IP/MAC address pair is determined to be a cluster address and not added to the ARP cache. Impact: Basp now works with Microsoft NLB Clustering in multicast mode. It does not work (and never has worked) when NLB is configured in unicast mode. Version 6.2.19 January 2, 2007 ------------------------------ Fixes: ====== 1. Problem: CQ26580: Layer 2 teaming causes high number of retransmissions on the clients Cause: Basp occasionally indicated packets to NDIS out of order. This could happen when Basp's receive packet handler was reentered. When this happened, the interrupting process would indicate its packets before the preempted process, resulting in packets being indicated out of order to the overlying protocol stack. Ndis guarantees that Basp's receive handler will not be reentered for a particular nic in the team, but it can be reentered from different nics that are team members. Basp used a single receive queue to queue packets from all underlying miniport drivers before indicating the entire queue to Ndis. Packets would be indicated out of order in the following scenario. 1. Nic1 queues some packets, but not enough to trigger an indication to Ndis and exits the receive handler 2. Nic2 queue some more packets which meets the threshold to trigger an indication to Ndis. All driver spinlocks are (must be) released before calling Ndis. 3. When the spinlocks are released, but before indicating the packets to Ndis in the context of Nic2, the receive handler is reentered by Nic1. 4. Nic1 queues sufficient packets in a new queue to trigger another indication to Ndis. These packets from Nic1 are indicated before the indication from Nic2 in step 2. that contains packets from both Nic1 and Nic2. This results in Nic1's packets being indicated out of order. Change: Basp was changed to always indicate packets from a particular nic in the order received. A separate receive queue was allocated for each nic in the team. This guarantees Basp will indicate receive packets for a particular miniport driver in the same order that that miniport indicates them to Basp. Impact: This change lowers cpu utilization and increases throughput with Layer 2 traffic. Packet retransmission should no longer occur under normal network conditions and should only be seen under heavy network load. This problem only occurs with L2 teaming, and will occur both with and without 3rd party NICs in the team. 2. Problem: CQ27173: Disabling Standby Adapter with MS Virtual Server 2005 causes Guest OS to Lose Connection Cause: Basp only supports MSVS using SLB teams with one primary and one standby NIC. When disabling the standby NIC, the standby NIC is internally deleted from the team and the team reconfigured to have only one primary NIC in the team. Basp did not support MSVS with teams having only one primary. Change: Basp was changed to support MSVS using teams that have only a single primary NIC, in addition to the team type of one primary and one standby that was already supported. Impact: The change applies to SLB teams configured to have either one primary and one standby, or one primary NIC in the team, regardless of if MSVS is running. 3. Problem: CQ27547: The newly teamed adapter(s) was not participating in the team's traffic Two problems are described in the problem description for CQ27547. 1. A hot added adapter did not participate in load balancing a team's outbound traffic until a failover occurred. 2. Chariot test scripts would fail when a hot added nic was added to the team and the cable to one or more nics was disconnected. Cause: 1. Dynamic re-balancing of outbound L2 traffic was disabled when running with Ndis 5.2. This resulted in no existing outbound flows being migrated to the hot added nic until a failover occurred or a new flow was created. Dynamic rebalancing of outbound flows was disabled when Ndis 5.2 was present because it was believed (incorrectly) that L2 and L4 outbound flows to a particular station must be sent using the same nic. Only L2 and L4 _inbound_ flows from remote station must be sent to the same nic. 2. All inbound flows were being deleted when hot adding a nic. When adding a nic to the team, basp was notified to delete the IP address that the new nic uses when it's NOT a member of the team. When basp received this notification, it deleted all inbound flows so that it wouldn't send arps using an unused source IP address. Because of this, no arps would be sent to remote station's redirecting their traffic to nics that are up when a failover happened. This resulted in the remote station still sending traffic to the failed nic and causing TCP/IP disconnections. This situation would persists until the remote stations sent out a broadcast arp request and received a new inbound address. Change: 1. Two changes were made to address this problem. a. Dynamic rebalancing of outbound L2 traffic is now enabled on both Ndis 5.2 and 5.1. This allows L2 outbound traffic to be balanced over time across all nics in a team, including hot added nics. b. All L2 and L4 outbound and inbound flows are rebalanced when a nic is hot added to a team. This is in addition to change a. above that allows for dynamic rebalancing of L2 outbound traffic. Note that all traffic is rebalanced when a nic is removed from a team - this has not changed. 2. When basp receives a notification that an IP address has been deleted from the system, it now only deletes all flows with a source address that matches the deleted IP address. This will only result in TCP/IP disconnections to the deleted IP address (this is okay!) on failovers. Impact: L2 outbound flows are now dynamically rebalanced on Ndis 5.2. Inbound and outbound L2 and L4 flows are rebalanced whenever a nic is added to a team. After hot adding a nic, previously existing connections to remote stations will not be lost on failovers. 4. Problem: CQ27374: A Guest OS's Virtual Network bound to a BASP Team Virtual Adapter for a Tagged VLAN Will Not Pass Traffic Cause: MSVS does not copy the MiniportReserve fields when cloning an NDIS_PACKET. Basp and its underlying miniport drivers store the vlan id and priority of a packet in the MiniportReserve field of an NDIS_PACKET. When transferring packets between Basp and the miniport driver, MSVS makes a copy of the NDIS_PACKET and gives the copied NDIS_PACKET to the IM/MP drivers. However, MSVS does not copy the MiniportReserve field of the NDIS_PACKET when coping the packet, and so the vlan id and priority are not present in the copied NDIS_PACKET that's given to the IM and MP drivers. Change: Using the Miniport Reserve field was the only method available in Ndis 5.0 to pass per packet information between the IM and MP drivers. With Ndis 5.1 and above, a field in the NDIS_PACKET_EXTENSIONS is available for passing the vlan id and priority between the IM and MP drivers. When sending packets, Basp was changed to store the vlan id in the packet extensions field for Ndis 5.1 and above systems. Basp still stores the vlan id in the MiniportReserve field for all versions of Ndis. For receive packets, Basp was changed to first locate the original receive packet (not the copy made by MSVS) and look in the MiniportReserve field of the packet for the vlan id. If the vlan id is not found in the MinportReserve field, Basp will then look for it in the packet extension field. Impact: This method of passing the vlan id to and from the miniport works with both the NX I and NX II drivers. Both drivers have used this method for many years and so will work un-modified. Using the packet extensions for the vlan id also opens up the possibility of Basp supporting vlans using 3rd party nics. 5. Problem: CQ27497: Chariot 1Kbuffer test with toggle Chimney and Failovers will cause system hangs. Cause: The Microsoft NDIS API MiniportTcpOffloadSendHandler does not allow inline send completion within this call. It expects the send completion to come asynchronously from a different thread. Change: Removed check for failover state to fail a packet send in mp_TcpOffloadSendHandler as this is redundant. The passed in ProviderContext has legitimated the existing offload connection. Impact: The change applies to SLB teams configured in L4 TOE offload mode only. Version 6.2.18 November 3, 2006 ------------------------------- Fixes: ====== 1. Problem: CQ27203: Running Chariot 4k buffer size of High Performance Script detects Error 245. CQ27321: L4 BASP could return a receive buffer to an underlying miniport instance for the wrong physical adapter. Cause: BASP can return underlying miniport owned received NetBufferList(s) to the wrong miniport in a team. This occurred as NDIS can pool multiple NetBufferLists from multiple underlying miniport drivers and returned them all at once. Change: De-linked the NetBufferLists and performed multiple returns to return the lists to individual miniports. Impact: This change applies to all BASP configurations where there are more than one primary adapter in a SLB L4 offload team. Version 6.2.17 October 19, 2006 ------------------------------- Fixes: ====== 1. Problem: No CQ: Fix 1. in 6.2.16 re-introduced problem 1. in 6.2.5 [CQ23867: Basp works sporadically with IPX/SPX When only the IPX protocol is enabled (TCP/IP is disabled) on a Basp team, and the link is disconnected on a team's true primary NIC, all IPX connections and drive mappings are lost until the link is reestablished on the true primary NIC.] Cause: The primary NIC's mac address is not added to the snoop table unless an ARP request or reply is sent. When TCP/IP is not enabled on the host OS, no ARPs will be sent, so the primary's address is never added to the snoop cache. This results in no CTP frames being sent for the primary on failover/failback and erratic behavior. Change: The primary's MAC address is always added to the snoop cache, regardless of which protocols are enabled. Impact: This change applies to all configurations when not running MSVS. When running MSVS, this change only applies to the Host OS. This problem still exits when TCP/IP is not enabled on Guest OS's running MSVS. 2. Problem: No CQ: Incorrect source MAC address assigned to L4 flows Cause: When the primary nic in a team fails, another nic in the team is promoted and becomes the new primary nic. As the primary nic, it is now assigned the team's MAC address. In this senario, when a new L4 flow was offloaded, the L4 flow would use the orignial MAC address of the promoted NIC instead of the team's MAC address. Change: When an L4 flow is offload, Basp now checks if the NIC it has selected is a promoted primary and selects the correct MAC address to use. Impact: This change only applies to systems with L4 offloading enabled and there is more than one primary in the system and all NICs in the team are Broadcom NICs. 3. Problem: CQ26905: Basp falls back to the primary nic when using the network connection manager to enable a primary nic and "Auto-Fallback-Disable" is enabled. Cause: Even when Auto-Fallback-Disable was enabled, basp would ignore the setting unless all nics in a team had completed binding to the virtual nic. This was done to prevent the standby nic from becomming the primary at initialialization when the primary nics were ready, simpbly because the standby was bound to the vnic first. Disabling a nic using the network connection manager causes the nic to be unbound from the team and causes Basp to ignore the Auto-Fallback-Disable setting. Change: When Auto-Fallback-Disable is enabled, it is now ignored only until all nics in a team are bound to the vnic for the first time. Afer all the nics have been bound once, the setting for Auto-Fallback-Disable is honored even when nics are disabled and enabled using the network connection manager. Note however, that if all nics in a team are disabled using the network connection manager, the internal flag indicating that all nics have been bound once will be cleared, and hence all nic in the team must be reenabled for the Auto-Fallback-Disable setting to be hornored. Impact: There must be two or more primary nics in the team in the team and at least two primaries have been disabled using the network connection manager and the standby nic is active. 4. Problem: CQ25025: network utilization isn't showing the correct % for L4 teaming Cause: Previous versions of BASP did not support some of the new statistics OIDs that were added in the NDIS 5.2 spec. Specifically, previous versions of BASP did not support the following new OIDs: OID_TCP4_OFFLOAD_STATS OID_IP4_OFFLOAD_STATS OID_GEN_BYTES_XMIT OID_GEN_BYTES_RCV CQ 25025 was caused by not supporting the last 2 of the above OIDs. Change: BASP now supports these 4 new NDIS 5.2 statistics OIDs. Impact: BASP will now have added statistics support for L4 enabled TOE chimney environments. There should be no side effect from this change. 5. Problem: CQ27028: L4 BASP improperly holds spinlock while calling certain NDIS routines Cause: A spinlock was acquired before pausing, uploading and resuming offloaded connections on failover. Change: The spin lock in now acquired after pausing and uploading offloaded connections, and released before resuming. Impact: This problem was found during a code review and no specific test was used to create a problem caused by this defect. The area impacted in the driver by this change is in the area of failover for both L2 connections, as well as L4 connections that are being offloaded. 6. Problem: CQ26437: LiveLink vlan will hang during failover (disable/enable method) Cause: Basp hung trying to acquire a spinlock needed to calculate the correct MAC address to use in probe packets in the LinkLink thread. Change: The method used to calculate the correct MAC address has changed the former function acquiring the spinlocked was removed. Impact: Any SLB team using LiveLink with more than two members. 7. Problem: CQ26714: Failover doesn't work with Multi-vendor (Intel) Team Cause: ARPs were sent on the wrong NIC (the disabled NIC) when failing over using a MVT. Change: The fixup ARPS are now sent on the promoted primary when the link status changes for any team member. Impact: The change applies to both Multi-vendor and all Broadcom nic SLB teams, though the problem only occured on a MVT. 8. Problem: CQ26759: Very low traffic on standby memeber after livelink failover on Dell Montreal Cause: A version mismatch between the bxvbdx.sys and bxnd52x.sys driver caused the problem. Both drivers must have the same major.minor version. Change: After correcting the version mismatch of the underlaying drivers, no change was required for Basp. Impact: None 9. Problem: CQ26945: In SLB team type with LiveLink enable, the probe client's ARP table will have one MAC address for both primaries when disable/enable primaries. Cause: There is a code path in basp where it will change the mac address of a Broadcom nic in a multi-vendor team when re-enabling nics using the network connections manager in a different order then what they were originally brought up in. Basp should never change the mac address of any NIC in a MVT, since there is no way to reprogram the mac address of other vendors NICs. Since the Broadcom NIC mac address was reprogrammable, it was being changed to the Intel NIC's mac address, but the Intel NIC's mac address wasn't being changed. Change: Basp was modified to never change mac addresses on Multi-Vendor Teams. Impact: This bug has been in Basp for awhile, probably starting with the introduction of LiveLink. The bug would only occur when LL was enabled, the Intel NIC was the true primary when the team started, the Intel and Broadcom NIC were disabled, and then the Broadcom NIC was enabled. Version 6.2.16 September 15, 2006 --------------------------------- Fixes: ===== 1. Problem: CQ25241: Failover not working properly on 5704-based blade [when running Microsoft Virtual Server] Cause: Each virtual machine is assigned a new MAC address when it's created. The VM is bound to Basp and will use this address when sending and receiving data through BASP. When a failover event occurs, Basp sends a CTP frame to notify the switch that the team's MAC address is now connected to another port on the switch. All frames sent to Basp's team address are now forwarded through the new port. Since no CTP was sent using the VM's MAC address, it remains associated with disconnected switch port. This prevents all frames sent to the VM from reaching it until a frame is sent from the VM that causes the switch to reassociate its MAC address with the new port. Change: Basp now snoops the MAC source address in the ethernet header of all ARP frames it transmits, and caches all the source MAC addresses it sees in an interal cache. Using the cache, Basp now sends a CTP frame for each entry in the cache when a failover event occurs. Impact: Basp supports MSVS only on teams that have one primary and one secondary nic. Basp supports a maximum of 32 virtual machines. Basp requires each VM to send an ARP request or reply frame at least once before the first failover. This works only on OS's running IPv4. 2: Problem: During failover recovery, L4 Basp sent out packets on the 1st primary teamed NIC, who has the team MAC address, with the ethernet header source MAC address of the 2nd primary teamed NIC. This causes the switch mistakenly forwards all packets destined to the 2nd primary teamed NIC going to the 1st primary team NIC. Cause: Upon offloading a TCP connection, the L4 offload stack does not initialize the source MAC address in the L4 offload state when it hands this state information to the miniport/firmware. In this case, the miniport/firmware will fill in its source MAC address for all outbound packets. Changes: The L4 Basp driver filled in the designated source MAC address for the TCP connection at the time of offload before forwarding this offload state to the miniport. The designated source MAC address is based on the L4 load balancing algorithm which has pre-assigned a particular teamed NIC to the TCP connection. This MAC address will correspond to the corresponding underlying NIC where the packet will go out. Version 6.2.15 August 24, 2006 ------------------------------ Fixes: ====== 1. Problem: CQ22837: Multicast Filtering of the Standby Adapter Should Extend to Multi-Vendor Teams. Cause: Multicast/broadcast frame filtering was only enabled on teams supporting advanced failover. Teams only support advanced failover only when all miniport drivers in the team support the Broadcom NIC Extensions (BNICE) interface. Since other vendor's miniport drivers don't support BNICE, Basp disables advanced failover and hence multicast filtering was also disabled when other vendors NICs were in the team. Change: The fix was to assign one primary NIC in a team as the multicast NIC. The multicast NIC is the only NIC allowed to accept multicast frames; multicast frames will be filtered (dropped) on all other NICs in the team. If the multicast NIC fails (link loss, disabled, etc.), another primary NIC in the team is selected as the multicast NIC. If there are no primary NICs available, then a secondary NIC is selected. If a secondary NIC is the multicast NIC and a primary becomes available, then the new primary becomes the multicast NIC. Impact: Multi-vendor teams should now only indicate one copy of multicast frame up to the stack, whereas previously, a copy of the multicast frame would be indicated by each NIC in the team. Also, any NIC in a team of Broadcom only NICs may be assigned to receive multicast frames. Previously, the NIC assigned to receive multicast frames was always the current primary NIC (the one with the team's MAC address). 2. Problem: CQ25760: Lower Network throughput with 4 port TOE team using Chariot Cause: Inbound flows from remote clients can become unbalanced and not evenly distributed across all NICs in a team when broadcast ARPs are transmitted by the team. Sending a broadcast ARP causes all remote clients to update their ARP caches to point to primary NIC in a team. Basp would correct this problem by immediately sending a directed ARP to each remote client with a MAC address for that client to use to balance the inbound flows. The problem is that the broadcast ARP is always sent on the primary NIC, and the unicast ARPs are sent on (other) NICs that were assigned in the previous balancing process. The number of packets queued for transmition varies for each NIC in a team at any given time. This can result in the unicast/fixup ARP being transmitted before the broadcast ARP and the remote client receiving the fixup ARP before the broadcast ARP. When this happens, the remote client's ARP cache will end up pointing to the primary NIC instead of the assigned NIC. This causes an an imbalance in the number of clients assigned to a specific NIC in team and can cause some NICs in a team to become overloaded and others underloaded, resulting in a lower overall performance for the team. Fix: Three changes were made to basp to fix this problem. Change 1. is the major change that fixed the problem, while changes 2-3 correct minor logic errors in the balancing algorithm. 1. All unicast/fixup ARPs sent after a broadcast are are sent on the same NIC as the broadcast ARP. This insures that the ARPs are transmitted in the correct order from the team. 2. An error in the inbound state machine logic could cause a fixup ARP to not be transmitted in some cases was fixed. 3. An error in the logic to set a load balancing flag could cause load balancing to become disabled was fixed. Impact: This impacts both L4 and L2 teaming, though the imbalance is more noticeable on L4 teaming because of the static assignment of flows to NICs. It is less visable in an L2 environment because the flows can be dynamically moved between NICs. 3. Problem: Basp will not load on Windows Vista Cause: Basp checked the OS version and would only load when the OS version was 5.x Fix: Allow Basp to load when the OS version is 6.x Impact: Basp now runs on Vista using the NDIS 5.x wrapper. Version 6.2.14 July 14, 2006 ---------------------------- Fixes: ====== 1. Problem: CQ25328: Running two nslicer across 2 vlan with single sockdie will cause crash Cause: Stack calling Basp's MiniportTcpOffloadReceive() with NULL ProviderContext caused blue screen. There is a race condition between the offload initiation completion and the host stack starts posting receive data buffer to Basp on a TCP connection. Change: Basp pre-fill the Basp ProviderContext during offload initiation rather than during offload initiation complete as specified in the Microsft MSDN documentation. Impact: This bug would affect some offload connections if it hits that window of vulnerability as described above although the possibility is small. Version 6.2.13 July 12, 2006 ---------------------------- Fixes: ====== 1. Problem: CQ25558: Bugcheck encountered while running 1c_InitTime NDIS test script on SLB team Cause: Basp was trying to send a frame using a NIC that had just been un-bound from the team. Change: Basp now checks if the NIC is bound and ready before sending frames that are generated internally. Impact: This bug has been in basp for a long time, but was only uncovered by change 1. in version 6.2.12. This problem only occurs when a team with more than one NIC is deleted using basp v6.2.12. 2. Problem: CQ25745 - L2 - SLB Failover Causes Errors in Chariot/Nettack cause: Change intriduced in 6.2.12 to balance new layer 4 connection has broken layer 2 failover. The ARP cache should not be flushed arbitrarily. Change: Layer 2 connections in the ARP cache are now shuffled during a failover, but the ARP cache is not cleared. This effectively distributes all connections equally when a NIC becomes available. Impact: None 3. Problem: CQ25756 SLB team doesn't fail over properly in 2K3 Cause: See fix for CQ25745 Change: See fix for Cq25745 Impact: None 4. Problem: CQ25717 - Team becomes unreachable w/multiple IP addresses as SLB ports are unplugged Cause: There has been a long standing bug where some of the connections were not reassigned to available NICs when a NIC goes offline. Change: All connections are now re-assigned to available NICs when a NIC goes offline. Impact: None 5. Problem: CQ25604 - Stress Sockdies with Single NIC team with multiple virtual BASP instances (vlan) will BSOD during vlan removal Cause: Basp attemts to offload layer 4 connections to NICs unbound from the team. Change: Upload all layer 4 connections before unbinding a NIC from the team. Impact: None Version 6.2.12 June 23, 2006 ---------------------------- Fixes: ====== 1. Problem: CQ24182: Groucho: After BASP SLB team fail-over, remote ping takes several minutes to resume Cause: When failing back to the primary adapter because the link status has changed from down to up, basp sends CTP frames to notify neighboring and downstream switches that primary adpater has switched ports. Some switches (in this case the ESM) will indicate the link is up before they are able to accept or pass traffic when first powering up, causing them to miss the CTP frame and not detect that the primary MAC address has switched ports. Once the switch has finished booting, it does not forward traffic to the primary adapter until a packet is sent on the primary adapter to a remote station. Change: Basp was modified to send a CTP frames every five seconds for a period of 135 seconds when the primary NIC changes. This gives switches sufficent time to initialize and begin accepting traffic, and correctly detect which port the primary is connected to. Impact: This change impacts teams that have only two Broadcom NICS, with one NIC configured as a primary and the other as a secondary. Also, the problem only occurs when a failback occurs and the switch basp is failing back to is off or in the process of powering up. This problem does not occur when LiveLink is enabled. 2. Problem: New layer 4 connections are not load balanced. Cause: In prior Basp versions, layer 2 entries in Basp's ARP cache determined the adapter assigned to new layer 4 connections to the same destination. As a result, new layer 4 connections were not load balanced. Change: This version flushes Basp's ARP cache during failover to allow new layer 2 and layer 4 connections to be redistributed. Impact: None. Version 6.2.11 June 09, 2006 ---------------------------- Fixes: ===== 1. Problem: CQ25271: Creating a GEC/3AD team with TOE enabled adapter, team is offloaded Cause: Basp advertises offload capabilty for all team types. Change: Only advertise offload capabilty for SLB teams. 2. Problem: CQ24979: Stress Vlan with Chariot causes system blue screen. Cause: NetbufferList link list contained in the TcpOffloadForwarding completion call has NetBufferLists that are designated to different NdisMiniportHandles. They are forwarded in separate ndis calls per NdisMiniportHandle. This processing erronously extracted a null NdisMiniportHandle. Change: Subsequent netbufferlists are processed with its correct NdisMiniportHandle. 3: Problem: CQ25291: Multi vendor Team member stops receiving after simulated failure. Cause: Basp's merging for L4 offload and L2 flows negates the expected L2 failover behavior. Change: Provided conditional checks upon the presence of L4 offload to preserve the original L2 flow algorithm. Version 6.2.10 May 31, 2006 -------------------------- Fixes: ===== 1. Problem: CQ24069: BASPTOE Can not offload 1024 tcp connections Cause: Bug in the Microsoft NDIS offload stack as it mis-recognizes the number of tcp connections that the BASP driver has advertised. This problem manifests itself from 2 Microsoft bugs: 1. Microsoft NDIS_TASK_OFFLOAD structure is not 32-bit aligned. 2. Microsoft sizeof operator does not compute the correct size. It rounds up to the next 4 bytes. Change: Fix in the driver by recomputing the data structure offsets in which the Microsoft stack can identify. Version 6.2.9 May 25, 2006 -------------------------- Fixes: ===== 1. Problem: Failover is still too long Cause: A experimental delay of 2s was left in the code Change: Removed this delay 2. Problem: CQ24667: BASPTOE is not symmetrically balancing the traffic between the team members LOW performance is seen. Cause: The NICS assigned to L2 inbound flows were being asymetrically randomized when no L4 flows were being offloaded. When L4 flows were later offloaded, they were assigned the NIC from the existing L2 flow, resulting in the same asymetric (random) NIC assignment used for the L2 flow. Note however that the NICS for L2 and L4 flows were initially assigned in a round-robin fashion which resulted in the inbound flows being symetrically balanced. The inbound flows only became unbalanced after the system was quiet for a short period and the idle L2 flows randomized. Change: This problem was fixed by not randomizing L2 flows on SNP (ndis >= 5.2) capable systems. Impact: This change applies to teams that have TOE enabled and are running on a SNP capable system. Version 6.2.8 May 23, 2006 -------------------------- Fixes: ===== 1. Problem: Invalid assertion is hit in the debug build (recv.c) Cause: This assertion is not handled properly in a multiproc environment. Change: Removed the assetion from the code. 2. Problem: CQ24710: Failure in BASP failover, with Chariot's validate data upon receipt option on Cause: There were a several problems with L4 teaming failover, 1) L2 NIC driver drops link on all NICs during failover. This is fixed in the latest L2 NIC driver. 2) Hard hang condition during failover. This is fixed with the latest L4 tcpip.sys patch from MSFT. 3) There was an error in the Basp code which would cause communication with the clients to be interrupted permanently. This coding error is fixed in this version. 4) The chariot test script do not use the normal TCP timeout/retry mechanism. Sniffer traces show the client aborting the session if communication is lost for 200ms. We would like all tests to use the longer default TCP timeout value. Please retest with other tools which use the TCP timeout/retry mechanism (for example, copy files to/from a network drive). Change: See "Cause" section. 3. Problem: CQ23580: BASPTOE Reporting CO Capability Only When Trunk-type Team Members Show LSO/CO Capabilities Cause: Task offload capabilities were only advertised for SLB teams Change: Implemented task offload for all team types. Version 6.2.7 May 15, 2006 -------------------------- Fixes: ===== 1. Problem: CQ24790 BASPTOE ran into assertion when the nexthop mac address is 0 Cause: L4 offloadblock can be a linker block which is not a block that contains a new offload state. In this case, the block will not contain a invalid mac address of all zero. Change: Prevents a call to insert a new entry into the flow table when this case exists. 2. Problem: CQ23851 CQ24159 Running Charriot script in extended 72 hrs. testing would cause the network services fail to work after the test has failed. Cause: Extended testing caused memory leak in BASPTOE because netbuffer list contexts were not deallocated over time. Change: Deallocated these contexts upon netbufferlist received returned back to the BASPTOE driver. Previously not all contexts were deallocated becaused the receivedreturned netbufferlist were batched up. Version 6.2.6 May 3, 2006 ------------------------- Fixes: ====== 1. Problem: CQ23835 BASPTOE freezes system when failing and reconnect several times under stress in L4. Cause: L4 offloading was not being notified when an inbound flow moved from one NIC to another when failing back to the original primary NIC. Change: Modified Basp to terminate and restart L4 flows on failback event Impact: Applies only to teams containg all NIC's that are capable of offloading L4 flows running on a W2K3 server with SNP installed. Version 6.2.5 April 21, 2006 ---------------------------- Fixes: ====== 1. Problem: CQ23867: Basp works sporadically with IPX/SPX When only the IPX protocol is enabled (TCP/IP is disabled) on a Basp team, and the link is disconnected on a team's true primary NIC, all IPX connections and drive mappings are lost until the link is reestablished on the true primary NIC. Cause: ARP frames are only sent when there are IP flows associated with a NIC. When there are no IP flows, such as when only the IPX protocol is enabled, no ARPs will be sent. Because no ARPs are sent the switch still directs all IPX traffic from remote stations to the disconnected port which causes all IPX connections and drive mappings to be broken. Change: Send a L2 frame to the switch to notify it of the change in the MAC address whenever a failover or failback happens. Impact: This problem should only impact systems using only the IPX/SPX Protocol. Enhancements: ============= 1. Added support for sending ARP frames when an L4 flow is offloaded. 2. Disabled re-balancing of inbound flows when L4 flows are offloaded. 3. Changed inbound hashing algorithm to accommodate L4 offloading. 4. Modified DriverEntry to correctly report the ndis minor version for ndis 5.0, 5.1, and 5.2. Version 6.2.4 March 27, 2006 ---------------------------- Fixes: ====== 1. Problem: CQ23756: BASP 6.2.2 doesn't offload all Sockdie connections, BSOD with Stress. Change : Changed the algorithm which assigns connections to the NICs in the team. The previous algorithm did not work for all cases. Impact: None Version 6.2.3 March 13, 2006 ---------------------------- Fixes: ====== 1. Problem: CQ23633: BASP 6.2.2 does not LSO Offload with any LSO capable team. The ioctl handler does not report task offload if the team is not SNP capable. Change: Report the other offload capabilities even if the team is not SNP capable. 2. Problem: Global data structure is not protected with a spinlock. This can lead to the corruption of this global data structure and ultimately a system failure. Change: Protect this data structure (SGBlockList) with a spinlock. Impact: None Version 6.2.2 March 7, 2006 --------------------------- Fixes: ====== 1. Problem: CQ23556: BASPTOE will BSOD with running a Untagged Vlan team in less then 10min CQ23503: BASPTOE will BSOD when attemting to make a change in BACS while sending traffic CQ23495: BASPTOE will cause system to rebot when running chariot traffic CQ23471: BASPTOE caused blue screen when running two offloaded teams CQ23376: L4 BASP will not load on a non-snp environment CQ23515: BASPTOE will BSOD when failing over Change: Changed the offloaded blocks linked list recovery algorithm. 2. Problem: CQ?????: L4 failover causes all connections to remain in the "Uploading" state. Change: Changed the offloaded connection count management algorithm Impact: None Version 6.2.1 March 4, 2006 --------------------------- Enhancements: ============= 1. Read the registry to determine the TOE capabilty for the team 2. Fix for CQ??? where disabling a NIC stops all network for the team Impact: ======= 1. This version requires the latest BMAPI to enable TOE support. TOE will not be enabled if used with older BMAPI dlls. Version 6.2.0 Feb 27, 2006 -------------------------- Enhancements: ============= 1. Added TCP offload support for layer 4 teaming. This feature requires Broadcom BCM5706 or BCM5708 converged NICs to be operational. 2. This version requires Microsoft Windows Vista with SNP (Scalable Network Pack) build 6021 or later which contains NDIS5.2 library installed. Impact: ======= 1. This version is not backward compatible with systems with Windows Vista that do not have the SNP (NDIS5.1 or older) installed. 2. This version does not support teaming between BCM5706/08 and other Broadcom and/or third party NICs. Version 6.1.20 Jan 19, 2006 --------------------------- Fixes: ====== 1. Problem: CQ22826: Driver Ver dates in incorrect format. Cause: Month in .inf should use two digits Change: Changed the .infs. Impact: None. Version 6.1.19 Jan 17, 2006 --------------------------- Fixes: ====== 1. Problem: CQ22765: Teaming with 3rd party will not pass traffic to standby when the primary link is broken. Cause: The load balancing algorithm must always run whenever there is a non-broadcom NIC in the team. Otherwise, connection can be interrupted during failover. The logic added to support MSFT Virtual Server should not disable load balancing for the one standby/one active configuration when there are non-broadcom NICs in the team. This error was corrected once before, but crept back in the last version Change: Enable the load balancing algorithm whenever there is a non-broadcom NIC present in the team. Impact: This means MSFT Virtual Server is not supported with non-broadcom NICs. 2. Problem: CQ14018, CQ 22622: The Basp intermediate driver indicates duplicate multicast packets to the OS. Cause: The previous Basp versions did not attempt to filter multicast packets the NICs in the team receive. This led to duplicate indication to the OS. Change: In this version, Basp only indicates multicast packets received on its primary NIC (For SLB teams, this is the NIC programmed with the team's MAC address). Impact: This fix applies only to SLB teams, and the problem still exists when there are non Broadcom NICs present in the SLB team. Version 6.1.18 November 30, 2005 -------------------------------- Fixes: ====== 1. Problem: CQ21470: Errors during failover on SLB teams. CQ22276: BASP: SLB-LoadBalance does not send out direct ARPs when adapter fails. Cause: Due to a bug in the Basp code, directed ARPs are not always sent. As a result, network connectivity can be lost for an extended period of time during failover. Change: There is optimization code in Basp which avoids sending directed ARPs when one was sent recently. But there are cases when the directed ARP must be sent reguardless of what was sent previously. In this version, this optimization is disabled. Impact: Duplicate ARP messages may be sent to hosts, which is harmless. Version 6.1.17 October 13, 2005 ------------------------------- Fixes: ====== 1. Problem: CQ14345 creating / deleting team will cause BSOD when Driver Verifier is turned on. Cause: Called passive level NDIS API at dispatch level. Change: Make the call at passive level as required. Impact: None. Version 6.1.16 September 29, 2005 --------------------------------- Fixes: ====== 1. Problem: CQ14219 Need to remove DbgPrint calls from BASP 6.1.15. Cause: One debug print was left in the code. Change: Removed the debug print. Impact: None. Version 6.1.15 September 22, 2005 --------------------------------- Fixes: ====== 1. Problem: CQ13809 SLB team (Intel NIC + 5708/5751) fails to pass traffic when adapter is brought down. Fail over not working. Cause: The code added to support MSFT Virtual Server is causing this problem. The load balancing algorithm should execute for non advanced_failover teams, even if there is only one active NIC in the team. Since NIC MAC addresses are not changed for these teams, the packet must always be tweaked to contain the intended source/destination MAC address. Change: Restored the old logic when a non Broadcom NIC is present in the team. Impact: MSFT Virtual Server is _not_ supported when there are non Broadcom NICs in the team. 2. Problem: CQ14068 using 3rd party adapter as standby in the team, clients no longer able to connect after fail over. Cause: This problem is caused by a fix introduced back in July 2003 (CQ8153). Basp caches information about IP conversations between the host (where Basp is running) and remote computers. Code was added back then to clear this cache when an IP address is being deleted on the host. Without this fix, customers complained that Basp would continuously send ARPs about IP addresses no longer active on the host. When the cache is cleared, Basp no longer sends directed ARPs to remote hosts to redirect inbound traffic among the NICs in the team. When the TCP/IP6 stack is loaded on the host, Basp receives unexpected notifications that IP6 addresses are being removed and wrongly clears this cache (I did not investigate why these notifications occurs since Basp does not support IP6 yet). Clearing the cache in turn disables the code which sends ARP notifications during failover. This introduces random failures to send these ARPs when they are required. Change: To fix this problem, I enable the CQ8153 fix for IPV4 address removal notifications only Impact: None. Version 6.1.14 September 13, 2005 --------------------------------- Fixes: ====== 1. Problem: CQ13940 Basp does not block multicast packets. Cause: Packets received from standby adapter(s) (while assuming the standby role) are submitted to the OS. This causes packet duplication, and confuses the application layer. Change: Added code to filter packets received by the standby adapter(s). Packets from one of the stanby adapters is allowed through in failover mode. Impact: The problem reported still exists for teams with more than one active NIC. A better solution will be implemented in future Basp releases. Version 6.1.13 August 30, 2005 ------------------------------ Fixes: ====== 1. Problem: CQ13246 References to Whistler in the driver properties. Cause: xp32 and xp64 drivers should have the same description. Change: xp32 and xp64 drivers now have the same description. Impact: None. 2. Problem: CQ13109 Probe retries counter in BACS 8.22 for Basp 6.1.1 does not reflect accurate probe retries. Cause: Previous fix does not work for all cases. Specifically, the probe retried counters now goes up and down. Change: Maintain a separate counter for probe missed, rather than calculate the number of probe missed by subtracting the number of probes received from the number of probe sent. Impact: None. 3. Problem: CQ13548 LSO support should also be enabled for an SLB (Auto Fallback Disabled). Cause: LSO processing was run for SLB teams only. The fix advertised in 6.1.12 was not in the release. Change: Allow LSO processing for SLB (Auto Fallback Disabled) teams. Impact: None. 4. Problem: CQ13154 Dynamic ARP cache reset feature for LiveLink team member should be immediate. Cause: Previous fix for this problem broke LiveLink. Probe targets can no longer be pinged. Change: Forward ARP responses from the probe target to the OS. The previous fix broke this functionality. Impact: See 6.1.12. Version 6.1.12 August 15, 2005 ------------------------------ Fixes: ====== 1. Problem: CQ13149 Add Basp failover compatibe with MSFT Virtual Server. Cause: MAC address fields are corrupted in all sent and received packets. Also, ARP cache entries are corrupted on the hosts. Change: When the team contains a single active NIC, Basp only performs fail over. All load balancing related processing is disabled. Impact: This only works when there is a single active (passing traffic) NIC in the team. Normal Basp behavior resumes as soon as there are more than one active NIC. 2. Problem: CQ13246 References to Whistler in the driver properties. Cause: There are reference to old Windows builds in the Basp codes. Change: Removed the stale references. Impact: None. 3. Problem: CQ13109 Probe retries counter in BACS 8.22 for Basp 6.1.1 does not reflect accurate probe retries. Cause: The counter should be checked against limits to make sure bogus values are not reported. This could happen for example if a probe request generates multiple responses from a probe target. Change: Add code to clamp the counters to values greater than zero. Impact: None. 4. Problem: CQ13548 LSO support should also be enabled for an SLB (Auto Fallback Disabled). Cause: LSO processing was run for SLB teams only. Change: Allow LSO processing for SLB (Auto Fallback Disabled) teams. Impact: None. 5. Problem: CQ13154 Dynamic ARP cache reset feature for LiveLink team member should be immediate. Cause: In prior LiveLink implementations, the probe targets were managed with a single state machine per NIC instance. As a result, keeping track of the status of all probe targets became convoluted and difficult to extend. Change: In this implementation, each NIC instance dedicates a state machine to manage each probe target (for a maximum total of 4 state machines per NIC). Impact: The code changes to implement this feature are significant, so testing should be done accordingly. 6. Problem: CQ13490 Removing VLAN on port 1 of 5704C failed. Cause: The error message of concern is logged into the event log by design, and should not be removed. The error message is non fatal, and is merely the byproduct of the technique used to create VLAN type teams. Change: The error message severity is reduced to Warning. Impact: None. 7. Problem: Probe packets should have a user defined VLAN tag. Cause: In prior implementations, all LiveLink probe packets were untagged. Change: The user can optionally associate a VLAN tag to each probe packets. The tag is specified with a special (Basp private) key in the registry. Impact: The special registry key is an interim solution, in the future the tag will be modified with the BACS GUI. 8. Problem: Under some scenario, Basp may not indicate some packets to the OS. Cause: There is a coding error in the previous version. Some received packets are not submitted to the OS. Change: Submit all received packets to the OS. Impact: This bug fix was not documented when 6.1.12 was released. This entry in the readme.txt file has been added while releasing 6.1.18. Version 6.1.11 June 9, 2005 --------------------------- Fixes: ====== 1. Problem: CQ12393 BASP Poor performance throughput with BASP SLB. Cause: This features were advertised in 6.1.10 but were not included. Change: Added the following, 1) Batch receive indication to NDIS 2) Use NDIS 5.1 packet stacking on receive Impact: None. 2. Problem: CQ11590 The Link for a BASP Team Is Established Based on the Probe Interval Time in the LiveLink Configuration. Cause: The probe interval is used while determining the probe target mac addresses. Change: Use a fixed value of 1s while sending probes to resolve the probe target mac addresses. Impact: None. Enhancements: ============= 1. Problem: OEM has requested the addition of link up/down statistics counters (see release 8.2 MRD). Change: Added the statistics counters. Impact: Requires BACS 8.2.2 or later. Version 6.1.10 May 9, 2005 -------------------------- Fixes: ====== 1. Problem: CQ12393 BASP Poor performance throughput with BASP SLB. Cause: Basp 6.0.x did not provide support for task offload. Change: The 8.2 MRD requires a Basp for Windows performance level comparable to Basp for Linux. This requirement is aready met in 6.1.x. This version contains additional enhancements to improve performance further in some configuration (chariot benchmarks collected on FSC-TX600 platform show a 30% improvement in performance when compared to 6.1.9). Basp 6.1.9 in turn shows a 70% improvement in performance when compared to 6.0.12. The enhancements in this version are, 1) Batch receive indication to NDIS 2) Use NDIS 5.1 packet stacking on receive Impact: None. Version 6.1.9 March 11, 2005 ---------------------------- Fixes: ====== 1. Problem: CQ12393 BASP SLB team send out directed unicast ARP contains old IP address. This is a a reincarnation of CQ8153. Cause: BASP caches the old IP address, then uses this information to send the directed arps. The fix was not applied to the IA64 architecture. Change: Trap IP address change notifications from the protocols, and use this info to flush BASP cache. Apply this fix to the IA64 and AMD64 as well. Impact: None. Version 6.1.8 March 4, 2005 --------------------------- Fixes: ====== 1. Problem: CQ12315 BASP AMD64 sending mismatched data while running 2c_OffloadLargeSend test. Cause: 5705 and later devices only support the unspecified and 802.3 task offload encapsulation. Basp was advertising all encapsulations to the test suite. Change: Only advertise the two encapsulations supported by the 5705 and later chips. Impact: The 2c_OffloadLargeSend executes as it would with 5705 and later chips (the test terminates quickly). Version 6.1.7 March 2, 2005 --------------------------- Fixes: ====== 1. Problem: CQ12178 Running RAW UDP packet smaller than 40 bytes causes BSOD. Cause: The driver attempts to use a null mdl while scanning packets to transmit. Change: If a null mdl is seen, the packet is submitted to the default nic for transmit. Impact: None. 2. Problem: CQ12250 Need symbol file for BASP AMD64. Cause: The driver was compiled with an old ddk. Change: The driver is recompiled with ddk 3790 build 1433. Impact: None. Version 6.1.6 Dec 14, 2004 -------------------------- Fixes: ====== 1. Problem: CQ11541 BSOD during disable/enable of primary team members. Cause: Uninitialized variable content is used in the Basp code. This problem was introduced in 6.1.x. Change: Initialized the variable properly. Impact: None. 2. Problem: CQ11638 System hang during enable/disable if primary team members. Cause: Improper use of NDIS spinlocks can lead to hang condition when NICs are enabled/disabled. Change: Use the NDIS spinlock properly. Impact: None. Version 6.1.5 Dec 7, 2004 ------------------------- Fixes: ====== 1. Problem: CQ11544 After configuring LiveLink, the team stays disconnected. Cause: The interface change between the application and the driver was not implemented properly in the intermediate driver. In particular, the IP addresses byte ordering has been reversed in 6.1.4 and later. Change: Implemented the change properly. Impact: None. Version 6.1.4 Dec 6, 2004 ------------------------- Fixes: ====== 1. Problem: CQ11511 BSOD upon resuming from hibernate. Cause: A bug in the code causes Basp to report LSO supported when the machine boots, then reports LSO not supported when the machine resumes from hibernate. This causes inconsistencies within the IP stack and BSODs. These inconsistencies can also occur whitout suspending the machine. Change: Fixed the code to be consistent in reporting task offload features. Impact: None. 2. Problem: The team configuration parameters (task offload and LiveLink) are not always read properly from the registry. Also added better protection against invalid parameters. There is no CQ entry for this issue. Change: Fixed the code to read the parameters properly. Impact: None. Enhancements: ============= 1. Problem: The probe interval is now received in the unit of millisecond from the application. In prior basp versions, the units were seconds which limited the resolution. Change: The intermediate driver now receives its probe interval in milliseconds Impact: Requires BACS 7.7.2 or later. Version 6.1.3 Nov 24, 2004 -------------------------- Fixes: ====== 1. Problem: CQ11413 Team goes down with certain Live Link parameters. Cause: The team does not report link if the number of retries is set to 1. The code checking the number of retries is off by 1. Change: Fixed the code. Impact: None. 2. Problem: CQ11403 Basp 6.1.2 .inf version info is incorrect. Cause: Released the wrong .inf. Change: Corrected the .inf. Impact: None. 3. Problem: CQ11404 System gets blue screen while configuring team. Cause: Did not check the return value from one of the Ndis calls, and attempted to set the fields of a non existant NDIS packet. This bug was introduced while fixing CQ11388. Change: Fixed the code to check for NDIS return error code. Impact: None. Version 6.1.2 Nov 19, 2004 -------------------------- Fixes: ====== 1. Problem: CQ11388 BAsp 6.1.0 fails 2c_OffloadChecksum NDIS test script. The test also fails with Basp 6.1.1. Cause: Basp needs to propagate the extension fields of ndis packet on packet received. This extension contain the checksum info and is used by the HCT to verify that the NIC/miniport driver calculated checksums properly. Change: Propagate the extension fields on NDIS packet received. Impact: None. Version 6.1.1 Nov 18, 2004 -------------------------- Fixes: ====== 1. Problem: CQ11371:When we configure live link, the team stays disconnected. Cause: Logic error in the live link code. If the probe target is not resolved after the first broadcast, basp incorrectly sends all subsequent probes to the null MAC address. Change: Fixed the logic error. Impact: None. 2. Problem: Task Offload is not working correctly (this bug is not in clearquest). Cause: Error in reading and decoding the team task offload capabilities in the registry. Change: The team task offload capabilities are now processed correctly. Impact: None. Version 6.1.0 Nov 12, 2004 -------------------------- Fixes: ====== 1. Problem: CQ10668:BASP Remove calls to MmMapLockedPage in win2k basp. Cause: 6.2.11 only addressed winxp. This version addresses w2k and later. Change: Removed call for win2k and xp-64. Impact: No NT4. Enhancements: ============= 1. Problem: Support for Live Link Impact: New version of bmapi and control suite required. No NT4 2. Problem: Support for task offload Impact: New version of bmapi and control suite required. No NT4 Version 6.0.11 July 12, 2004 ---------------------------- Fixes: ====== 1. Problem: CQ10564:BASP v6.0.10 fails 1c_SetMulticast and 2c_RecvMulticast NDIS Test. Cause Error in the new multicast list handling code (off by one in max list size check). Change: Fixed the new multicast list handling code. Impact: None. Enhancements: ============= 1. Problem: Created single .infs and installation executables for win2k and winXP Impact: The win2k directory has been removed from this distribution. All the files for win2k are now in the xp32 directory. Version 6.0.10 July 1, 2004 --------------------------- Fixes: ====== 1. Problem: Multicast is not supported with VLANs. Cause: BASP maintains a single multicast list for the team. Change: A multicast list is assigned to each virtual NIC, the physical NIC is given the union of all virtual NIC multicast entries. Impact: None. Version 6.0.9 Feb 4, 2004 ------------------------- Fixes: ====== 1. Problem CQ9254 Intermittent network failure. This problem was reported by several OEMs. Cause: BASP is running out of receive buffers and can no longer receive packets Change: Instruct the OS to return the receive buffers ASAP. Impact: None. Enhancement: ============ 1. Problem: Add support for AMD64. Change: AMD64 support added. Impact: None Version 6.0.8 October 16, 2003 ------------------------------ Fixes: ====== 1. Problem: CQ8660 unable to pass traffic after secondary members loose link (auto fallback disable mode). Cause: With the new mode, BASP was reporting link down to the OS when it should not have. Change: Do not report link down to the OS if there are at least one NIC with link. Impact: None. 2. Problem: CQ8659 BASP not reporting correct speed of team when a member fails (all modes). Cause: BASP is using the highest speed reported by the team members. A NIC with no link reports a speed of 1G. Note: this problem can be found in all versions prior to 6.0.8. Change: Only use the team members with link when reporting the speed. If all the NICs are down, report a don't care value of 100Mbs. Impact: Need to run all HCT tests to make sure there are no side effects Version 6.0.7 October 13, 2003 ------------------------------ Enhancements: ============= 1. Problem: CQ6410 Provide ability to disable auto fallback when primary port recovers. Change: Implemented new auto fallback disable mode. Impact: The new mode is not supported in NT4 Version 6.0.6 September 26, 2003 -------------------------------- Fixes: ====== 1. Problem: CQ8523 BASP vlan tags don't work in NT4. Cause: This feature was broken in version 6.03 while adding support for 802.1p. Some of the #ifdef to disable this new feature for NT4 are incorrect. Change: Fixed the #ifdefs Impact: None Version 6.0.5 July 22, 2003 --------------------------- Fixes: ====== 1. Problem: CQ8173 BASP 6.0.4 fails 1c_KernelCalls NDIS Test. Cause: Calls to DbgPrint() are not allowed for WHQL Change: Removed calls to DbgPrint() Impact: None 2. Problem: CQ7847, Windows: Driver Verifier on BASP causes Blue Screen Cause: This problem is due to a check detected by driver verifier, in which driver verifier ensures the "Cancel routine" is being zero before the request is completed. Having "cancel routine" un-zero does not affect functionality nor performance. It's a sanity type checking. Change: Ensure the "Cancel routine" is zero before completing the request. Impact: None Version 6.0.4 July 9, 2003 -------------------------- Fixes: ====== 1. Problem: BASP SLB team sends out directed unicast ARP containing old IP address (CQ8153) Cause: BASP caches the old IP address, then uses this information to send the directed arps. Change: Trap IP address change notifications from the protocols, and use this info to flush BASP cache. Impact: Does not work with NT4. Is not implemented for IA64. CHANGES in v6.0.1 ----------------- - 6827: User specified team name won't bind to virtual adapter when creating BASP teams. The problem happened when QoS is installed, the team/vlan name in 'Network Connections' page is not set properly. The solution is to get around the problem by setting the name later, raising the 'Network Connections' page to foreground and send 'F5' to force the 'Network Connections' page to refresh after team/vlan name are set. ===================================================== ATTENTION: Sometimes the 'Network Connections' did not refresh properly. Users may need to manually hit 'F5' to refresh. ===================================================== CHANGES in v3.0.21 ------------------ - Fixed the loss of connectivity problem when creating a 802.3ad team on Windows 2003 Server. CHANGES in v3.0.20 ------------------ - Fixed the binding problem of QoS packet scheduler to the BASP virtual adapter. CHANGES in v3.0.19 ------------------ - 6073: Unable to unbind protocol when BASP is installed. CHANGES in v3.0.18 ------------------ - 5484: Support Microsoft Network Load Balancing. CHANGES in v3.0.17 ------------------ - 5568: W2K BASP App can add a turbo team into a BASP team. - 5264: BASP v3.0.16 Should not be loaded in IA-64 system. CHANGES in v3.0.16 ------------------ - Changed to use differnt APIs to accomodate the new WHQL requirements. - Added support of additional Broadcom NetXtreme based NICs and LOMs. CHANGES in v3.0.15 ------------------ - Added support of additional Broadcom NetXtreme based NICs and LOMs. CHANGES in v3.0.14 ------------------ - Added support of additional Broadcom NetXtreme based NICs and LOMs. CHANGES in v3.0.13 ------------------ - Fixed Prod00004015: System bugcheck after created 802.3ad team on a .NET IA64 system. CHANGES in v3.0.11 ------------------ - Fixed Prod00003790: fails 2c_PMHibernate NDIS test on XP32. CHANGES in v3.0.10 ------------------ - Fixed Prod00003745: fails 1c_reset NDIS test on W2K. CHANGES in v3.0.9 ----------------- - Fixed Prod00003665: fails 1c_reset NDIS test on XP32. CHANGES in v3.0.8 ----------------- - Fixed Prod00003609: fails 1c_kernelcalls test. - Fixed Prod00003666: fails to add multiple cards with identical names into the teams. CHANGES in v3.0.7 ----------------- - Fixed 2c_Simultaneous test script failure with BASP on XP32. CHANGES in v3.0.6 ----------------- - Fixed Prod00003600: Windows XP Professional BASP teaming does not WOL from ping CHANGES in v3.0.5 ----------------- - Fixed Prod00003107: Load balancing does not occur on multiple hot-standby adapters. - Fixed signability errors with INF files. CHANGES in v3.0.4 ----------------- - Fixed few minor IEEE 802.3ad interoperability issues. CHANGES in v3.0.3 ----------------- - Enhance event notification mechanism. - Fixed system crash with the IEEE 802.3ad team in NT 4.0. - Add Trouble-shooting section to document known issues. CHANGES in v3.0.2 ----------------- - Fixed second port blocking problem in the IEEE 802.3ad team. CHANGES in v3.0.1 ----------------- - Support IEEE 802.3ad link aggregation. CHANGES in v2.0.6 ----------------- - Minor textual changes in INF and DLL. CHANGES in v2.0.5 ----------------- - Fixed Prod00002106: System Crashes after Deleting Vlan with ID 0 and another Vlan. CHANGES in v2.0.4 ----------------- - Fixed Prod00001753: loss of static IP address problem when disconnect all the NICs in a team and then only connect the hot-standy NIC. - Fixed Prod00001694: the BASP installer does not indicate the if the BASP already installed. - Fixed Prod00001779: BASP installation process is asking for BASPXPI.EXE while running BASPI64I.EXE install program. CHANGES in v2.0.3 ----------------- - Minor fix in installation and configuration GUI. CHANGES in v2.0.2 ----------------- - Enhanced installation and configuration GUI. CHANGES in v2.0.1 ----------------- - Updated teaming configuration. - Improved error reporting when configuring more than 8 physical NICs in a team. CHANGES in v1.3.3 ----------------- - Fixed the driver update issue on NT 4.0. This issue was introduced by v1.3.2. CHANGES in v1.3.2 ----------------- - Improved the reset operation on the virtual miniport instances. CHANGES in v1.3.1 ----------------- - Added support of IA-64 version of Windows.NET Beta 2. CHANGES in v1.3.0 ----------------- - Improved Windows 2000 userability by reducing traffic interruption in reconfiguring the team. In case of HotSwap, users can simply remove the adapter without reconfiguring the team if the replacement adapter carry the plug and play ID and the replaced adapter will not plug into network again. In case of HotRemove, users can remove the adapter without changing team configuration if the removed adapter will not plug into network. Team configuration will automatically adjusted when team configuration software launched. CHANGES in v1.2.11 ------------------ - Fix: error in re-installing BASP for Windows 2000. In version 1.2.10, the first time installation works fine without any error. However, if the BASP is removed and then re-installed again, a message box will be poped up during installation and display following message: "Unknown Installation Error". Despite this message, BASP is still installed properly. To configure the teaming, the user is required to manually bring up the BASP configuration dialog. - Fix: removal of a NIC from a Generic Trunking team may result duplicated MAC addresses on a network. CHANGES in v1.2.10 ------------------ - Fix: unable to resume from hibernation on Windows 2000. CHANGES in v1.2.9 ----------------- - Fix the failure in re-enabling the virtual miniport instances on Windows 2000. CHANGES in v1.2.8 ----------------- - Fix: loss of network connectivity when performance monitor is monitoring VLAN network segment. CHANGES in v1.2.7 ----------------- - Improved SNMP trap support in the BASP driver. CHANGES in v1.2.6 ----------------- - Fix: Individual adapters maintain team MAC address after a FEC/GEC team is removed on Windows 2000. [0798] - Fix: Description on virtual adapter is shown incorrectly when running ipconfig /all on Windows NT 4.0. [0803] CHANGES in v1.2.5 ----------------- - Fix: BASP W2K configuration GUI allows up to 39 characters for a team name. [0795]. - Fix: BASP W2K configuration GUI is updated to allow all 64 VLANs properly configured and functional. [0780] CHANGES in v1.2.4 ----------------- - Fix: Intermitten recovery failure with fiber network adapters. [0093] CHANGES in v1.2.3 ----------------- - Fix W2K INF files to pass signability test. CHANGES in v1.2.2 ----------------- - BASP is enhanced to work better with multiple protocols. [0608], [0671] - Fix: system bugcheck when NetXray is executed. [0305] CHANGES in v1.2.1 ----------------- - Added support of SNMP trap in the BASP driver. - Fix: Installing both BASP and PPTP on NT 4.0 causes "Exception error". [0573] - Rename the driver and DLLs files with BASP prefix. [0559], [0557], [0550] - Minor changes in configuration GUI dialog. [0529], [0250] - New upgrade procedure for Windows 2000: [0050], [0040] BASP in W2k can not be updated as the 'Description' section. Users need to save the original configuration through the driver configuration page, uninstall BASP, reboot machine, install new BASP and restore the origial team configuration. There are two new buttons added to the configuration GUI. One is to save configuration and the other is to restore configuration previously saved. There are some limitations/rules for the upgrade procedure. 1. The protocol related information like IP address will not be saved and restored. users need to reconfigured again after teams restored. 2. The physical NICs on the system should not be changed during the upgrade procedure. If any NIC can not matched during restoration, the NIC will be dropped. 3. If any team configuration can not be parsed, the restoration procedeure will be aborted. The format of the saved configuration is as following: a. The team configuration key word 'Load Balance Team Configuration' has to be at the start of a line followed by 0x0D and 0x0A (line break). b. Next line should contain the key word 'Team Name : ' followed by the team name which followed by 0x0D and 0x0A. Note that the spaces in the key word are expected and this rule will apply to other key words too. Team name can not be empty. c. Next line should contain key word 'Team type : ' followed by team type. The supported team types are 'Smart Load Balance and Fail Over' and 'Generic Trunking (FEC/ GEC)'. Team type will be followed 0x0D and 0x0A. Team type can not be empty. d. Next line should contain key word 'Load Balance Member : ' or 'Stand By Member : ' followed by the NIC name. NIC name has to match a NIC on the system, otherwise it will be dropped. NIC name will be followed by 0x0D and 0x0A. e. Next line should either repeat the same format as description for team member/stand by NIC or 0x0D 0x0A to end the team member/stand by section. f. After team member/stand by section, next line should contain key word 'VLAN Member : ' followed by VLAN name or 0x0D 0x0A if the team does not have VLAN configured. If VLAN name exists, it should be ended by 0x0D 0x0A. g. Next line should contain key word 'VLAN ID : ' followed by VLAN tag (a number) or 0 if no VLAN configured. the line should be ended by 0x0D 0x0A. h. Next line should be the beginning of another VLAN confuration (with key word 'VLAN Member : ') or 0x0D 0x0A to end the VLAN configuration. i. Next line should be the beginning of another team configuration (with key word 'Team Name : ') or 0x0D 0x0A to end 'Load Balance Team Configuration' section. 4. All team configuration rules will apply to the parsed configuration. Any disqualified team configuration will be dropped. Users should always check the parsed configuration and modify if they want. 5. If no valid team configuration parsed, the original configuration should remain. CHANGES in v1.1.10 ------------------ - Fix: Unnecessary dialog box in team configuration. [0443] CHANGES in v1.1.9 ----------------- - New feature: Support protocol independent failover on Broadcom 5700 only team. For team which contains not only Broadcom 5700 adapters, there is still IP protocol failover as existed in previous release. No user configuration is required to activate this feature. - Fix: System crash when primary adapter is either disabled (on W2K) or removed (on NT 4.0 and W2K), AND after system reboots. [0046], [0098], [0106], [0120]. - Fix: Netmon stops capturing after disconnect the cable of the primary NIC. [0053]. - Fix: Not all 64 VLAN are working. [0245], [0269] CHANGES in v1.1.8 ----------------- - Fix: Update the BASF driver with older version caused error. [0096] - Fix: FEC/GEC Property dialog does not show MAC address after reboot. [0270] - Fix: The standby adapter of FEC/GEC team receives inbound traffic from switch. [0297] - Fix: VLANs are not functional with BCM5700 A1 boards. [0298] - Fix: Failover does not occur to hot-standby adpater after all load-balancing adapters are removed and system reboots. [0046], [0098], [0106], [0120] - Fix: Recovery does not occur to load-balancing adapters when there is hot- standby adapter in the team. [0055], [0093] - Fix: System crash when NetXRay is run. [0305] CHANGES in v1.1.7 ----------------- - Fix: Unable to configure a FEC/GEC team with Tigon 2 and third party adapters. - Fix: Grammatical error of the message displayed during FEC/GEC team configuration. CHANGES in v1.1.6 ----------------- - Various fixes to address UI, installation and software update issues. - Support up to 64 VLAN per team. CHANGES in v1.1.5 ----------------- - Fix: NT 4.0 bugchecks with multiple Tigon 2 adapters on a Multi-Processor system. CHANGES in v1.1.4 ----------------- - Fix: BASF NT 4.0 driver bugchecks with multiple network adapters in a team during system boot. CHANGES in v1.1.3 ----------------- - Added 15 VLAN support per team. - Added Generic Trunking/FEC/GEC load balancing support. - Fixed a problem in distributing traffic to the network adapters that recover from link loss. CHANGES DETAILS in v1.1.3 ------------------------- - VLAN Starting from this release (v1.1.3), VLAN support is added to BASF driver. In each team, up to 15 VLAN can be added. Each added VLAN will result in a virtual adapter appearing in the protocol stack. In the case of TCP/IP, each VLAN corresponds to a network interface. VLAN support is orthogonal to the existing load balancing and failover features, which means customers who want VLAN will enjoy the same Smart Load Balancing <tm> and newly added Generic Trunking support. VLAN support is only available with following network adapters (1) BCM5700 gigabit adapter (2) Alteon Tigon 2 gigabit adapter VLAN addition will fail if an unlisted network adapter is added to the team. - Generic Trunking/FEC/GEC In addition to the original switch-independent Smart Load Balancing algorithm, a switch dependent load balancing algorithm, Generic Trunking or Cisco FEC/GEC compatible, is added. To properly configuring Generic Trunking, an unique MAC address is required. During Generic Trunking configuration, BASF will query one of the network adapter in the team and present its MAC address to the user for modification. The resultant MAC address will be written to the NDIS "NetworkAddress" registry key of all network adapters which belong to the team. A reboot is required to make this change effective. However, since the NDIS "NetworkAddress" registry key support is not a mandatory feature of NDIS driver, it is possible that some network adapters do not support. Most of the popular network adapters, as we verified, support this feature. When there is any question, please consult the corresponding network adapter vendors for details. Generic Trunking also REQUIRES network switches to support Cisco FEC/GEC and to be PROPERLY configured. Consult the switch documentation for setting up trunking. TROUBLE SHOOTING SECTION ------------------------ (1) 802.3ad team member links disconnect and reconnect continuously when connects to the HP2524 switch. This is a 3rd party issue. It is seen only when configuring an 802.3ad team with greater than 2 members on the server and connecting an HP2524 switch, with lacp enabled as passive or active. The HP switch will show an lacp channel being brought up successfully with only 2 members. All other member's links will disconnect and reconnect. This does not occur with a Cisco Catalyst 6500.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.