=========================== R E L E A S E N O T E S ============================ Broadcom NetXtreme II GigE VBD For Windows Server 2000-2012 Copyright (c) 2000-2013 Broadcom Corporation All rights reserved. Version 7.6.2.0 (Jan 31, 2013) ============================== Bug Fixes: ---------- 1. Problem: cq#67177 BCM5709 page fault on PnP remove device. Cause: The page fault occurs when MessageNumberLimit is set to 1. The driver is not able to operate with only one MSI-X vector. It requires a vector for each transmit/receive queue. Fix: In the case where there is only one MSI-X vector, the driver falls back to a single interrupt mode. In this mode, one interrupt services all the transmit/receive queues. Impact: This problem exists in past gold releases. 2. Problem: WOL test causes a break in checked version of Windows. Cause: The break in Windows is due to the device generating an interrupt after interrupts had been disabled. Impact: This problem exists in past gold releases. Version 7.6.1.0 (Jan 10, 2013) ============================== BCM5709 firmware 6.2.7 ====================== Bug Fixes: ---------- 1. Problem: CQ#65144 Device goes unresponsive when setting MTU to 1324. Cause: When MTU is setup configure to a value smaller than 1500 the device will receive packets larger than the configured MTU but less than 1500. This will result it overflowing the receive buffer. Fix: Drop packets that are larger than the configured MTU. 2. Problem: CQ#65408 Keep alive packets from an offloaded connection are ignored by the receiver. Cause: Keep alive packets from an offloaded connection are sent out with incorrect TCP checksum which causes the receiver to ignore them. BCM5706/08 firmware 6.2.4 ========================= Bug Fixes: ---------- 1. Problem: CQ#65144 Device goes unresponsive when setting MTU to 1324. Cause: When MTU is setup configure to a value smaller than 1500 the device will receive packets larger than the configured MTU but less than 1500. This will result it overflowing the receive buffer. Fix: Drop packets that are larger than the configured MTU. Version 7.6.0.0 (Oct 4, 2012) ============================= Enhancement: ------------ 1. Initial T7.6 release. Version 7.4.14.0 (Aug 27, 2012) =============================== Enhancements ------------ 1. cq#65360 - Add support for flow control option "Auto" as defined by Microsoft. Version 7.4.13.0 (Aug 9, 2012) ============================== Bug Fixes: ---------- 1. Problem: cq#65068, #65069 WHCK device install check test failed on Windows 2012. Cause: The INF contains obsolete entries that the test does not like. Enhancements ------------ 1. Request: Add "Auto" flow control option.Changed default flow control settings to "Auto". Version 7.4.12.0 (July 18, 2012) =============================== Bug Fixes: ---------- 1. Problem: cq#64688 A very infrequent break in DriverEntry. Cause: If a backlash happens to be the next character after the registry path, the routine get_reg_key_name will corrupt memory of the adjacent structures and will also lead to a page fault. Version 7.4.8.0 (June 22, 2012) =============================== Bug Fixes: ---------- 1. Problem: cq#62270 Break in get_location_str while running Autofail test. Cause: The test injects faults into system calls. The driver needs to check for valid return values. Version 7.4.7.0 (June 15, 2012) =============================== Bug Fixes: ---------- 1. Problem: cq#63977, #63978 Sparta test failures in TCP_Urgent and TCPWindowScaling scripts. Cause: There was a race condition between indicating a connection to upload and processing forwarding packets. The race condition cause the firmware to ignore the forwarding packets because the connection is being closed. Fix: The processing for the KQ must be done first before processing the L2 receive chain. This will ensure the stack receives the upload indication and will not forward the packets back to the firmware. Impact: This problem exists in previous gold drivers but it won't cause any function issue. Version 7.4.6.0 (June 13, 2012) =============================== Bug Fixes: ---------- 1. Problem: cq#63865 Driver may crash when the second BCM5709 port is bound to a VM switch. Cause: The second port was not able to get all the required interrupt messages for all the processors. When a request came in to create a VMQ, it was not possible to set the queue's processor affinity. Impact: This problem exists in previous gold drivers but the problem is system specific. Enhancements ------------ 1. cq#63845 - Undo the changes to cq#63185 below. Version 7.4.4.0 (June 5, 2012) ============================== Bug Fixes: ---------- 1. Problem: cq#63432 Checked driver breaks in mm_process_ooo_pkt while running iSCSI and TOE stress test. Cause: iSCSI OOO processing is out of sync with the firmware due to packet drops. Fix: When out of sync condition is detected, the driver will flush its states by dropping all he isles. Impact: This problem exists in previous gold drivers. Enhancements ------------ 1. Move to WDK 8400. Version 7.4.3.0 (May 23, 2012) ============================== Bug Fixes: ---------- 1. Problem: cq#63250 Windows 8 could crash in DriverEntry due to corruption of the Bugcheck call back record. Cause: get_reg_key_name routine incorrectly assumes a unicode string is null terminated. Impact: This problem does exist in the previous gold drivers. 2. Problem: cq#62183 Ndistest RSS test failure when run on a configuration with mulitple k-groups. Cause: The driver does not handle multiple k-groups properly. As a result RSS packets may be indicated on an incorrect processor. Impact: This problem does exist in the previous gold drivers. Enhancements ------------ 1. Remove an assert in checked driver with the vbd fails to load. 2. cq#62923 - Save pointer to the connection context in the backing store. Version 7.4.2.0 (May 10, 2012) ============================== Enhancements ------------ 1. cq#63185 - Prevent the driver from loading on BCM5706 and BCM5708 on Windows 8. Version 7.4.1.0 (May 2, 2012) ============================= Bug Fixes: ---------- 1. Problem: cq#63004 Driver not able to load on some systems due to driver signing problem. Cause: Reverted back to the previous version of the certification used for signing. Version 7.4.0.0 (Apr 30, 2012) ============================== Enhancements ------------ 1. Integrate the changes made to the Windows 8 inbox branch. Version 7.2.1.0 (Jan 24, 2012) ============================== Enhancement: ------------ 1. cq#59807 - Changed product version number to v17.2.0. Version 7.2.0.0 (Nov 22, 2011) ============================== Enhancement: ------------ 1. Initial T7.2 release. Version 7.0.6.0 (Oct 14, 2011) ============================== BCM5709 firmware 6.2.6 ====================== Bug Fixes: ---------- 1. Problem: CQ#59255 Unable to install to a lefthand target over 1G offload Fix: Changed the iSCSI dataIn pkt processing to allow invalid TTT packets to get processed if the err mask is set to 1 (warn). Version 7.0.5.0 (Oct 13, 2011) ============================== BCM5706/08 firmware 6.2.3 ========================= Bug Fixes: ---------- 1. Problem: CQ#59255 Unable to install to a lefthand target over 1G offload Fix: Changed the iSCSI dataIn pkt processing to allow invalid TTT packets to get processed if the err mask is set to 1 (warn). BCM5709 firmware 6.2.5 ====================== Bug Fixes: ---------- 1. Problem: CQ#59255 Unable to install to a lefthand target over 1G offload Fix: Changed the iSCSI dataIn pkt processing to allow invalid TTT packets to get processed if the err mask is set to 1 (warn). Version 7.0.4.0 (Sept 22, 2011) =============================== Bug Fixes: ---------- 1. Problem: cq#58664 Some of the descriptions for the Speed & Duplex options don't match the description used in the miniport. Fix: Used the same descriptions that are in the miniport's INF file. Impact: This problem does not exist in the previous gold drivers. Enhancement: ------------ 1. cq#58704 - Added a registry configuration to allow for reporting of flow control results instead of the requested settings. BCM5706/08 firmware 6.2.2 ========================= Bug Fixes: ---------- 1. Problem: When TCP timestamp option is enable, TCP slow start is not functioning correctly. Fix: TCP should not use non-round trip packets for RTT estimation. Impact: This problem exists in past gold drivers. BCM5709 firmware 6.2.4 ====================== Bug Fixes: ---------- 1. Problem: cq#58308 When TCP timestamp option is enable, TCP slow start is not functioning correctly. Fix: TCP should not use non-round trip packets for RTT estimation. Impact: This problem exists in past gold drivers. Version 7.0.3.0 (Aug 4, 2011) ============================= Bug Fixes: ---------- 1. Problem: cq#56242 In a case where jumbo frames are enabled when running iSCSI over L4/TOE and the Host application is not posting buffers (fast enough), it is possible for a BSOD condition to occur (BAD_POOL_HEADER bug check) when a connection is uploaded after passing iSCSI traffic. Cause: The BAD_POOL_HEADER bug check is a result of device driver data structures in host memory having extended outside their defined range. Again, for this problem to occur jumbo frames must be enabled, in particular, the last jumbo frame that must be placed in generic buffers could exceed the maximum number of generic buffers allowed for the connection. This problem does not cause data corruption, but instead a system BSOD is observed. Fix: Increase the maximum number of generic buffers to account for the last jumbo frame placement while in generic mode. Impact: This problem exists in previous gold drivers. 2. Problem: cq#56102 System crashes when running diagnostic on the bus driver with all the client devices (Ndis miniport and iSCSI) disabled. Cause: Because no client devices had previous bound to the bus driver, the ISRs and DPCs were not setup. Impact: This problem exists in previous gold drivers. Version 7.0.2.0 (July 21, 2011) =============================== Bug Fixes: ---------- 1. Problem: cq#57115 The 2c_Mini6RSSSendRecv fails on BCM5706 and BCM5708. Cause: The bus driver is incorrectly reporting that it supports IPv6 RSS on BCM5706 and BCM5708. Impact: This problem exists in past gold drivers but it has no functional impact. Enhancement: ------------ 1. Changed *FlowControl to match the miniport's setting. 2. cq#57159 - Removed support for iSCSI on Windows 2003. Version 7.0.1.0 (July 11, 2011) =============================== Bug Fixes: ---------- 1. Problem: cq#56816 Device fails to resume after hibernation when iSCSI boot is enabled. Cause: After hibernation, the device's interrupt was not enabled. Enhancement: ------------ 1. cq#56206 - Hide wol_cap configuration. WOL capababilities are now configured in the Ndis miniport's property page via *WakeOnMagicPacket and *WakeOnPattern keywords. Version 7.0.0.0 (Jun 1, 2011) ============================= Enhancement: ------------ 1. Integrated the changes from the Windows 8 branch. Version 6.4.4.0 (Apr 11, 2011) ============================== Bug Fixes: ---------- 1. Problem: Magic packet wakes up the system from S5 when WOL setting is disabled in the NVRAM. Cause: The driver is using the OS setting to enable/disable WOL on shutdown ignoring the setting in the NVRAM. Impact: This problem exists in the previous gold driver. Version 6.4.3.0 (Mar 29, 2011) ============================== Bug Fixes: ---------- 1. Problem: cq#54095 Ping wakes up the system form S5. Cause: ACPI wake up was not disabled when the system goes to S5. Impact: This problem exists in the previous gold driver. 2. Problem: iSCSI OOO is may be enabled even when iSCSI PDO is not enumerated. Cause: The logic to disable iSCSI OOO based of the numeration of iSCSI PDO was incorrect. Impact: Problem exists in previous gold drivers but it is benign and won't result in any functional issue. Version 6.4.2.0 (Feb 18, 2011) ============================= Bug Fixes: ---------- 1. Problem: CQ#53040 BCM5709 failed on WolWin7Pattern under WLK 1.6 RTM. Fix: Allow support of maximum 8 WOL patterns for 5709. Impact: Problem exists for all previous gold releases. 2. Problem: CQ#52136 Win8:VBD:5709: bxvbda!lm_disconnect_tcp+150;Assert is seen while running offloadstress on both ports. Fix: Fixed a race condition where VBD driver could process an back to back gracefully disconnect and abortive disconnect request out of order. Impact: Problem exists for all previous gold releases. However, this problem depends on timing and the chance of happening is very remote. Version 6.4.1.0 (Feb 9, 2011) ============================ Bug Fixes: ---------- 1. Problem: CQ#51281 The instance number for the bus driver and the child devices do not match the bus driver's software instance number. Instead the Ndis miniport's instance was used in the same way as the older releases. Cause: The bus driver does not change the instance number of the Ndis instance number matches the last digit of the software instance number. Fix: Replace the instance number in the friendly name if all of the digits don't match the software instance number. Impact: New introduced in T6.2 release. Version 6.4.0.0 (Nov 08, 2010) ============================ Enhancement: ------------ 1. Request: Changed versioning scheme to include 4 version numbers. Version 6.2.8 (Jan 05, 2011) ============================ Bug Fixes: ---------- 1. Problem: OEM system BSOD after driver update. Fix: Driver must guard against a race condition where OS asks driver to post rx buffers to a TCP connection and the same TCP connection has already been invalidated. Impact: Problem happens to previous gold drivers. 5709 firmware 6.2.3 ----------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ#51894 5709 - iSCSI ReadWrite throughput has regressed. Fix: Removed the extra ctx memory read/writes introduced in the fast path which contributed to this regression. Impact: Problem happens in T6.0 gold driver. Version 6.2.7 (Dec 21, 2010) ============================ Bug Fixes: ---------- 1. Problem: Changing number of RSS queues causing ping timeout. Cause: After number of RSS queues get changed, the driver RSS table didn't get initialized and may contains stale values. Fix: Upon NDIS miniport driver unbind, VBD must re-initialize the driver RSS table to 0. Impact: Problem exists on T6.0 gold driver. Version 6.2.6 (Dec 20, 2010) ============================ Bug Fixes: ---------- 1. Problem: CQ#51281 The instance number for the bus driver and the child devices do not match the bus driver's software instance number. Instead the Ndis miniport's instance was used in the same way as the older releases. Cause: The bus driver does not change the instance number of the Ndis instance number matches the last digit of the software instance number. Fix: Replace the instance number in the friendly name if all of the digits don't match the software instance number. Impact: New introduced in T6.2 release. Version 6.2.5 (Dec 14, 2010) ============================ Bug Fixes: 1. Problem: CQ#51281 Driver should set NumberOfInterruptMessages to 1 instead of 0 in INTA mode. Fix: Driver set NumberOfInterruptMessages to 1 per DDK spec. Impact: Problem exists in previous gold drivers. Version 6.2.4 (Nov 11, 2010) ============================ Bug Fixes: ---------- 1. Problem: CQ#50989 Windows 2003 F6 installation: Windows BSOD at final boot-to-desktop phase. Fix: Wdfldr and wdf01000 services are set to load group "Boot Bus Extender". Impact: Newly introduced in release T6.2. Version 6.2.3 (Nov 04, 2010) ============================ Bug Fixes: ---------- 1. Problem: CQ#50502 Driver load/Unload causes the system to reboot when running sockdie stress with driver verifier enabled on one port and load/unload test on the other port using 5709. Fix: Driver should not call PsCreateSystemThread at dispatch level. Impact: Problem exists in previous gold drivers. However, this problem only happens when driver is running out of kwq resources and this is very unlikely. 5709 firmware 6.2.2 ----------------------- ***** TOE/iSCSI offload ***** 1. Problem: CQ#50775 5709: Unable to delete team after running CNIC stress for 72 hrs. Fix: Catchup rate limiter may increase the TX window improperly and resulted in exhausion of TX BD cache if catchup traffic consist of many small BDs. Impact: Problem happens in previous gold driver but this is a corner case that should not happen frequently. Version 6.2.2 (Oct 20, 2010) ============================ 5706/08 firmware 6.2.1 ----------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ#44011 iSCSI SQE fails to get triggered via the mailbox due to the iSCSI cid allocation not being 0x100 boundary aligned. Fix: (CP) Fixed the iSCSI cid allocation. Impact: Problem exists in previous gold drivers. Enhancement: ------------ 1. Enable MSIX support for 5716 devices when create INF file for BRCM branding, and for 5709/5716 when create INF file for MSFT branding. 2. Added registry key to allow control of large GRC timeout setting. 3. cq#36066: Append the same instance number to the end of the bus driver's and its client device's friendly names. Version 6.2.1 (Oct 11, 2010) Bug Fixes: ---------- 1. Problem: CQ#49618 Windows shutdown WOL does not work with OEM blade by magic packets with LAA MAC. Fix: Allowed LAA MAC WOL capability during window shutdown by default. Impact: Problem exists on previous gold drivers. 2. Problem: CQ#50306 Advanced properties will hang during modification on single processor systems. Fix: The driver should stay in MSIX interrupt mode instead of entering SIMD interrupt mode when running in a single processor system. Impact: Problem exists on previous gold drivers. Enhancement: ------------ 1. Set "starttype" to 0 (SERVICE_BOOT_START), set "loadordergroup" to "System Bus Extender", and removed bootflags. Version 6.2.0 (Sep 15, 2010) 5706/08 firmware 6.2.0 ----------------------- 1. Problem: CQ#49832 Flow Control is not operating correctly under stress. Fix: RV2P FW needs to be optimized for small packet traffic. 5709 firmware 6.2.0 ----------------------- 1. Problem: CQ#49832 Flow Control is not operating correctly under stress. Fix: RV2P FW needs to be optimized for small packet traffic. Version 6.0.24 (Sep 14, 2010) 5706/08 firmware 6.0.15 ----------------------- 1. Problem: CQ#49832 Flow Control is not operating correctly under stress. Fix: RV2P FW needs to be optimized for small packet traffic. 5709 firmware 6.0.17 ----------------------- 1. Problem: CQ#49832 Flow Control is not operating correctly under stress. Fix: RV2P FW needs to be optimized for small packet traffic. Version 6.0.22 (Sep 2, 2010) Bug Fixes: ---------- 1. Problem: CQ#49739 bxvbda!set_rss_params calling WdfInterruptReleaseLock with null interrupt handle. Fix: Driver must make sure the interrupt is valid before performing interrupt spin lock operations. Impact: Problem exists in previous gold drivers. Version 6.0.21 (Aug 20, 2010) Bug Fixes: ---------- 1. Problem: CQ#49590 NDIS miniport checked driver hits break point at bxnd60a!destroy_q_group+0x1a6. Fix: The consumer index may stop at the end of a BD page boundary. In this case, VBD must advance the consumer index one more time. Impact: Newly introduced in T6.0 drivers. Version 6.0.20 (Aug 19, 2010) Bug Fixes: ---------- 1. Problem: Interrupt moderation may not get initialized properly as user disable/enable interrupt moderation repetitively. Fix: VBD must re-initialize packet trig counters each time interrupt moderation setting is changed. Impact: Newly introduced in T6.0 drivers. Version 6.0.19 (Aug 09, 2010) Bug Fixes: ---------- 1. Problem: CQ#48120 CNIC stress test fail on chariot portion of the test after running for 48 hrs when toggling TOE. Fix: Make sure VBD driver to take account for all the bytes received in the case where the connection is initially offloaded to the chip with large partially filled buffer before uploads the TCP connection to the host. Impact: Problem exists on the previous gold drivers. The problem should happen rarely. Version 6.0.18 (Jul 28, 2010) Bug Fixes: ---------- 1. Problem: CQ#48884 Disable the ¡°Receive Side Scaling¡± function cause BSOD issue. Fix: Make sure VBD driver to clear the current RSS state when NDIS miniport unbind. Otherwise, the stale RSS state can be reused when the next time miniport driver bind. If miniport driver has RSS disabled when re-bind, the VBD could use the stale RSS state and resulted in BSOD. Impact: Newly introduced in T6.0 release. 2. Problem: Driver hits breakpoint in routine post_dummy_buffers when running CNIC stress test. Fix: VBD driver should reject the TCP connection offload request that has buffered data the exceed amount of BDs that allocated for this TCP connection. Impact: Problem exists on previous gold drivers. However this situation should rarely happen. 3. Problem: CQ#47944 BSOD when running this CNIC Stress finished and then to shutdown system. Fix: When setting the driver to jumbo frame mode with MTU size of 9000, driver should also increase the catchup mbuf size from default 8k to 9k so the catchup path can be functioned properly during TOE mode. Impact: Newly introduced in T6.0 release. Enhancement: ------------ 1. Add delreg for l2_rx_desc_cnt0 to l2_rx_desc_cnt11. 5706/08 firmware 6.0.11 ----------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ#47606 Delay ACKs were used instead of immediate ACKs for the acknowledgment to the remote's fast retransmit which eventually caused the target to drop the connection Fix: (RXP) Added tracking for the OOO packets so immediate ACKs will be used instead of delay ACKs Enhancement: ----------- 1. Added dynamic TCP advertise windowing support 2. Ported over the ACK flood fix from the VMware 5.0.0.j branch P4 CL95688 Version 6.0.17 (Jul 2, 2010) Bug Fixes: ---------- 1. Problem: CQ48472 OEM failing system certification with link losses and/or low throughput when the system has more than 64 processors. Fix: Fixed a problem where VBD might not service the interrupt event in the DPC when number of the processors in the system is more than 64. Impact: This problem exists in previous gold driver and can only happen when there are more than 64 processors in the system. 2. Problem: Driver BSOD on OEM 96 processors system. Fix: Make sure VBD query the OS about the correct number of CPU in the system. Impact: Problem exists in previous gold drivers and problem can only happen with system that has more than 64 processors. 3. Problem: Driver not receiving enough MSIX messages on 96 processors system. Fix: Make sure driver limits itself within the processor group 0 when requesting MSIX messages from OS. Impact: Problem exists in previous gold drivers but MSIX is not enabled by default. So the exposure of this problem should be very low. Enhancement: ------------ 1. Allow MSIX mode even when number of MISX messages allowed by the OS is less than number RSS queues supported in 5709 chip and the number of messages is greater than 1. 2. Support dynamic VMQ CPU affinity per MSFT request. Version 6.0.16 (Jun 10, 2010) Bug Fixes: ---------- 1. Problem: Customer reported driver may crash when running some internal test tools on post win7 RTM builds. Fix: The post Win7 build seems to have different behavior that is inconsistent with the implementations in the driver. Changed the driver to accommodate the behavior. Please refer to CL#113698. Impact: This problem exists in previous gold driver but the impact is minimal. The problem is only seen when running the said tools on the post RTM OS build. 2. Problem: CQ#47953 Driver unload sometimes hang when interrupt moderation is disabled in 5709. Fix: The per processor HC setting is not correctly setup when interrupt moderation is disabled. Therefore, per processor status blocks might not get updated and resulted in pending completions that could prevent driver from unload. Impact: Problems exists in all previous gold drivers. This problem can only happen intermittently when interrupt moderation is disabled and user tries to unload driver. This should be a rare event. 3. Problem: CQ#48038 BSOD when running BACScli test with v2.0.30. Fix: Under a rare race condition, some packets might not get completed back to the host upon queue group destroy. Driver should detect this scenario and complete the packets back to the miniport properly. Impact: Newly introduced in T6.0 drivers. 5. Problem: CQ#47493 unload of 5709 NDIS driver while OIS driver is bind to VBD cause second device on shared interrupt to stop getting interrupts when running w2k3 OS. Fix: VBD must acknowledge all the per-processor status blocks when handling ISR and RSS is not enabled in OS to avoid causing interrupt storm. Impact: Newly introduced in T6.0 drivers. 6. Problem: CQ#47952 When RSS enabled, interrupt moderation using static algorithm, not dynamic. Fix: Enable dynamic interrupt moderation and disabled batch mode completion for RSS to improve latency. Impact: Problem exists in previous gold drivers. 5706/08 firmware 6.0.10 ----------------------- ***** L2/TOE ***** Bug Fixes: ---------- 1. Problem: CQ47838 Management connection stops after drivers load in Windows. Fix: (RXP RV2P) Mgmt packet length was not forwarded to MCP properly when the packet is dropped due to insufficient host buffer. Fix FW accordingly Impact: Newly introduced in T6.0. Bug Fixes: ---------- 2. Problem: CQ47812 RV2P stalls when running sockdie stress client on VM. Fix: (RV2P) Incorrect assert upon RV2P MQ update. Impact: Newly introduced in T6.0. 5709 firmware 6.0.10 -------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: Issue with iLab test 3_4 where package size < mss will generate unnecessary ACK responses Fix: (TXP) Fix ported over from the 5.0.0.j15 branch Removed the previously added ACK response when the advertise window is < mss (allow persist probe to do the job) Impact: Newly introduced in T6.0. 5709 firmware 6.0.9 -------------------- ***** L2 ***** Bug Fixes: ---------- 1. Problem: CQ47838 Management connection stop after drivers load in Windows. Fix: (RXP RV2P) Mgmt packet length was not forwarded to MCP properly when the packet is dropped due to insufficient host buffer. Fix FW accordingly Impact: Newly introduced in T6.0. Bug Fixes: ---------- 2. Problem: CQ47812 RV2P stalls when running sockdie stress client on VM. Fix: (RV2P) Incorrect assert upon RV2P MQ update. Impact: Newly introduced in T6.0. Enhancement: ------------ 1. Enabled HW RSS support for Linux driver. Version 6.0.15 (May 20, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ#47540 break at bxvbda!ioc_get_q_info+0x7b. Fix: VBD should not honor q_info query when driver is not in RUNNING state or status block pointer is not being setup set. Impact: Newly introduced in T6.0 drivers. 2. Problem: CQ#47586 problems with setting different MTU sizes. Fix: VBD should setup max_pkt_len + 4 byte crc in the L2 rx ring ctx. Impact: Newly introduced in T6.0 drivers. 3. Problem: Driver is occasionally reading "DEADBEEF" from the stats memory when running interrupt coalescing algorithm due to GRC access colliding with on-chip statistic collection. Fix: Instead of reading stats memory from the chip, driver will read stats from the firmware counters instead. Impact: Problem exists on previous gold drivers. 4. Problem: When doing TSS, the send packets may not be send out on the correct TSS queues. Fix: Driver should hash the send packet to the correct TSS queue according to the hash value and RSS indirection table. Impact: Problem exists on previous gold drivers. 5. Problem: CQ#45788 VBD:NX2: bxnd60a!set_rss_ioctl+0x19; Assert is seen on VBD while passing traffic to 1 port and disable/enable 2nd port Fix: Added asynchronous set_rss_ioctl completion to VBD to avoid an corner case where VBD could run out kwqes to honor set_rss_ioctl call synchronously under stressfully condition. Impact: Problem exists on previous gold drivers. 6. Problem: CQ#47715 BSOD is seen when deleting team with driver verifier enabled on VBD. Cause: A lock is being held too long causing the driver verifier to think a dead lock has occurred. This happens when a team is being deleted causing the miniport to get re-initialized which could take awhile to complete. During this period a lock is being held. Fix: Shortened the period a lock is held. Impact: This problem exists in previous gold driver but the impact is minimal. The problem is only seen when driver verifier is enabled. 5706/08 firmware 6.0.9 ---------------------- Enhancement: ----------- 1. Added firmware counters to track total bytes tx/rx. 5709 firmware 6.0.8 ---------------------- Enhancement: ----------- 1. Added firmware counters to track total bytes tx/rx. Version 6.0.14 (May 03, 2010) ============================= Enhancement: ----------- 1. Request: Support new driver interface version #6. Version 6.0.13 (Apr 23, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ#47283 Hyper-V: bxvbda!drv_bugchk_reason_callback+11f assert when unloading NDIS driver during L4 network stress on GOS. Fix: The crash dump buffer should be allocated before the MARKER1 so it won't get freed up during driver halt state. Otherwise, the crash dump buffer memory won't get re-allocated again when driver transition back to running state. Impact: Problem exists in the previous gold driver releases. 2. Problem: In a very rare case, Driver break at bxvbda!WdfInterruptReleaseLock+1b when running sleep Stress With IO of the device test category. Fix: Fixed a rare case where driver is releasing a interrupt object spin lock that it never held before. Impact: Problem exists in the previous gold driver releases, but this problem should happen rarely. 3. Problem: CQ#47300 BSOD (bxvbda!um_bdrv_alloc_ooo_resc+0x2b7) occurs after upgrading the vbd driver to v6.0.12 when driver verifier is enabled. Fix: Driver should acquire the RX lock in DPC level instead of passive level. Impact: Newly introduced in T6.0 release. 5706/08 firmware 6.0.8 ---------------------- ***** iSCSI offload ***** 1. Problem: CQ#47287 5708 B2: Fails to boot to W2K8 x64 SP2 in an iSCSI boot Environement (HBA mode disabled). Fix: (RXP) Optimize code size so iSCSi offload have enough stack space to run and avoid crash. Impact: Newly introduced in T6.0 release. Version 6.0.12 (Apr 19, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ#47111 System blue-screens running "Dual Port with Individual Driver load/unload test" with driver verifier enable. Fix: VBD should gracefully exit ISR if there are no packets to process. Impact: Newly introduced in T6.0 driver. Enhancement: ------------ 1. Request: Enable TCP out-of-order support for iSCSi offload by default. 5709 firmware 6.0.7 ---------------------- ***** L2 ***** Bug Fixes: ---------- 1. Problem: CQ46940 ftq discards were observed under L2 min pkt test running under the newer Linux 2.6.32 kernel Modified the hc algorithm to include an 1us guard time before checking for mbuf emptiness ***** iSCSI offload ***** Enhancement: ------------ 1. Request: Support TCP out-of-order reassembly when running iSCSi offload. 2. Modified the TCP rx window from 0xFFFF to 0xFFFC to improve performance when connecting to targets which packs iSCSI PDUs to max 5706/08 firmware 6.0.7 ---------------------- ***** iSCSI offload ***** Enhancement: ----------- 1. Modified the TCP rx window from 0xFFFF to 0xFFFC to improve performance when connecting to targets which packs iSCSI PDUs to max Version 6.0.11 (Mar 29, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ46850 break at X64_0x0_bxvbda!q_grp_process_destroy_req+b58 while updating NDIS driver. Fix: VBD should clean all queue related variables prior calling destroy done up call to NDIS miniport driver. Impact: Newly introduced in T6.0 driver. Enhancement: ------------ 1. Request: Support *FlowControl registry in VBD. 5709 firmware 6.0.6 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ46036 Break @ [bxnd60x!create_q_group+0x2f8] Running (sequential) Devcon_load_unload + NRIOv2 IPv4/IPv6. Fix: (RXP) Stack space is very low in some old legacy chip. Optimized code size to fix the problem. 5706/8 firmware 6.0.6 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ46036 Break @ [bxnd60x!create_q_group+0x2f8] Running (sequential) Devcon_load_unload + NRIOv2 IPv4/IPv6. Fix: (RXP) Stack space is very low in some old legacy chip. Optimized code size to fix the problem. Version 6.0.10 (Mar 22, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ46378, CQ46612 T6.0:BCM5708 BDOS on NDISTest 6.0 "1c_faulthanding" under w2k8 x64 sp2. Fix: VBD should watch out for the queues that are not mapped to the interrupt mapping table and completed all the aborted packets to the NDIS miniport during l2nd unbind. Impact: Newly introduced in T6.0 driver. Version 6.0.9 (Mar 15, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ46565 Changing interrupt moderation NDIS registry key has no effect on VBD. VBD most of time behaves as interrupt moderation is turned off. Fix: VBD should handle the Interrupt moderation change request properly by updating the corresponding its internal interrupt moderation parameters correctly. Impact: Newly introduced in VBD 6.0.8. 2. Problem: VBD didn't advertised correct number of RSS queues to NDIS during L2ND bind. Fix: Instead of always advertised maximum number of RSS queues, VBD should only advertised the actual number of RSS queues that it can support. Impact: Newly introduced in T6.0. Version 6.0.8 (Mar 07, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ46291 VMQ: break at bxvbda!q_grp_process_destroy_req when running load/unload on vbd while running sockdie stress on 8 virtual machines. Fix: VBD shouldn't reset the STOP indication upon completing the queue group destroy since upper driver can post buffer during this period from a different thread. The STOP indication should get reset upon next queue group creation. Impact: Newly Introduced in T6.0 driver. Enhancement: ------------ 1. Request: Move Interrupt Moderation related registry key controls to NDIS miniport. Version 6.0.7 (Feb 26, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ46214 5709:VBD:W2K3:Deadlock is observed in system while running heavy traffic and running load/unload with team present. Fix: VBD should avoid holding lock when indicate rx in the tx_switcher since BASP might return packet in the same thread. Impact: Newly introduced in T6.0 dirver. 2. Problem: CQ46218 5709: Break at "bxvbda!tx_pkt_switcher+2a2" occurs when running Common Scenario Stress Test W/ IO (iSCSI Certs Testing). Fix: VBD should take care of case where there could be no buffer posted from NDIS miniport driver yet while iSCSi miniport driver wants to forward packets to NDIS. Impact: Newly introduced in T6.0 driver. 5709 firmware 6.0.5 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ46090 VMQ: RV2P stalled when running load/unload on vbd while running sockdie stress on 8 virtual machines. Fix: (RXP) After a VMQ filter is cleared, there could some in-filght packets arrived with the cleared filter idx. However, RXP won't be able to make correct decision on how to place the packet since the corresponding filter ctx is cleared. In this case, RXP should just route the packet to default queue. Impact: This was introduced in T6.0 Windows driver only. ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ 45943 5709: Header Digest set to CRC32C fails Fix: (CP) The problem was caused by the driver for-going to utilize the offload path to do the iSCSI login/logout exchange. This prevented an internal state machine from progressing. Impact: This was introduced in T6.0 Windows driver only 5706/8 firmware 6.0.5 ---------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ 45943 5709: Header Digest set to CRC32C fails Fix: (CP) The problem was caused by the driver for-going to utilize the offload path to do the iSCSI login/logout exchange. This prevented an internal state machine from progressing. Impact: This was introduced in T6.0 Windows driver only Version 6.0.6 (Feb 17, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ45966 VBD:NX2:Max packet length is not propagated to the chip for iSCSI L2 queue. Fix: VBD should set the max packet length in the iSCSi L2 queue ctx so firmware can drop the packets that are exceeding the max packet length. Impact: None. Newly introduced in T6.0 driver. 2. Problem: CQ45976 VMQ: system breaks at bxvbda!l2_create_q_group+0x8df when launching virtual machines after enabling jumbo frames. Fix: When disable/enable NDIS miniport driver instance, the link list that keep track of free queue group list is not getting initialize properly. Impact: None. Newly introduced in T6.0 driver. Version 6.0.5 (Feb 11, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ45776/CQ45391 X64_0x0_bxnd60a!destroy_q_group+1a6 disabling NDIS via device manager. Fix: The destroy queue group thread and the posting RX buffers thread are not synchronized properly and causes some RX packets pending in VBD during default queue group destroy. Impact: None. Newly introduced in T6.0 driver. 2. Problem: 5708/06: when indicate tx completion, the ref_cnt of a queue group is decremented incorrectly since VBD didn't take account of the TSS queue may be sharing the same queue as iSCSi/RDMA L2 queues. Fix: Make VBD aware of the queue sharing when running 5708/06 chips. Impact: None. Newly introduced in T6.0 driver. 5709 firmware 6.0.4 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: In a rare case, host can offload a TCP connection that is in the middle of retransimssion. Firmware sometimes doesn't detect the retx state properly. Fix: (CP) Make the retx detection scheme more robust when handling TCP connection offload. Impact: Newly introduced in T6.0 driver. 5706/8 firmware 6.0.4 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: In a rare case, host can offload a TCP connection that is in the middle of retransimssion. Firmware sometimes doesn't detect the retx state properly. Fix: (CP) Make the retx detection scheme more robust when handling TCP connection offload. Impact: Newly introduced in T6.0 driver. Version 6.0.4 (Feb 04, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ45654 NDIS:iSCSI:5709: bxnd60a!l2nd_indicate_rx+13c; BSOD is seen when installing bxois.sys driver. The problem is due to the VBD tx packet switcher algorithm is forwarding the packets to the wrong miniport. Fix: Fix a bug that the tx packet switcher algorithm is looking at the wrong do_type and make sure it put packet back to pending queue after it is done indicating with LM_STATUS_RESOURCE. Impact: None. Newly introduced in T6.0 driver. 2. Problem: CQ45714 5708/5706: bxvbda!indicate_tx_done+303; Assert is seen on vbd while passing sockdie traffic. Fix: Driver should be aware that the some tss queues are shared between iSCSi/RDMA L2 queues for 5708/06 chips. Impact: None. Newly introduced in T6.0 driver. 5709 firmware 6.0.3 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ00045576 In rare occasion, obsolete BDs might get transmitted during retransmission Fix: (COM) There is a race condition between CP and COM. There is a small window that tx data is completed prematurely. Impact: None. Merged from T5.2 branch. Bug Fixes: ---------- 2. Problem: Server 2008 R2 - Similar symptoms of Windows 7 430977 (Windows SE 251309 covers the Longhorn bug for this) where Closesocket never returns. Fix: (com) After firmware completed an ABORT request back to the host, it must issue an upload request immediately after. Otherwise, the connection could stay offloaded forever if there are outstanding send requests waiting to be completed back to the host. Impact: None. Merged from T5.2 branch. 5706/08 firmware 6.0.3 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ00045576 In rare occasion, obsolete BDs might get transmitted during retransmission Fix: (COM) There is a race condition between CP and COM. There is a small window that tx data is completed prematurely. Impact: None. Merged from T5.2 branch. Bug Fixes: ---------- 2. Problem: Server 2008 R2 - Similar symptoms of Windows 7 430977 (Windows SE 251309 covers the Longhorn bug for this) where Closesocket never returns. Fix: (com) After firmware completed an ABORT request back to the host, it must issue an upload request immediately after. Otherwise, the connection could stay offloaded forever if there are outstanding send requests waiting to be completed back to the host. Impact: None. Merged from T5.2 branch. Version 6.0.3 (Jan 26, 2010) ============================= Bug Fixes: ---------- 1. Problem: CQ45477 Assert is seen on the VBD while trying to run Bacs diag on 5708 and/or 5709 in Win2k8-R2. Fix: The assertion is newly introduced in T6.0 VBD driver. In this case, the driver should gracefully return instead of assert when NDIS is trying to post rx buffer while diag mode is enabled in VBD. Enhancement: ------------ 1. Request: Support q_info cmd thru B06_IOC_GET_Q_INFO for vdiag utility. 5709 firmware 6.0.2 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00045480: Failing TCP_ZeroWindow Sparta test Cont00045526: Got recv failure while running 72-hour stress test with TOE chimney toggled Fix: (RV2P) In RV2P code, we are supposed to subtract 1 for host_bdidx (16 lsb) in context for end of BD chain for RBDC compatibility e.g. 0x12345600 -> 0x123455ff However, we have to treat host_bdidx == 0 differently. 0x12340000 should become 0x1234ffff instead of 0x1233ffff Otherwise, the 16 msb ctx field be will altered unintentionally. 5706/8 firmware 6.0.2 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00045480: Failing TCP_ZeroWindow Sparta test Cont00045526: Got recv failure while running MeatGrinder 72-hour stress test with TOE chimney toggled Fix: (RV2P) In RV2P code, we are supposed to subtract 1 for host_bdidx (16 lsb) in context for end of BD chain for RBDC compatibility e.g. 0x12345600 -> 0x123455ff However, we have to treat host_bdidx == 0 differently. 0x12340000 should become 0x1234ffff instead of 0x1233ffff Otherwise, the 16 msb ctx field be will altered unintentionally. Version 6.0.2 (Jan 20, 2010) ============================= Enhancement: ------------ 1. Request: Preliminary Irq/RSS/VMQ statistics support for vdiag utility. 2. Request: CQ#45324 - Change copyright year to 2010. 3. Request: CQ#44707 - Add new advanced driver property to "pause on exhausted host ring" for 5708/09. 5709 firmware 6.0.1 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: The l2 coalesce now algorithm is setting the wrong status block bit mask. Fix: (COM) Use correct bit mask. 2. Problem: CQ00045161 MG-tool abort during TCP Chimney offload toggled Fix: (COM) Problem is caused by deferred KCQE buffer overflow. We fix it by completing reload earlier. Enhancement: ------------ 1. Request: VMQ support: disallow jumbo frame placement when BD doesn't fit. 5706/8 firmware 6.0.1 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ00045161 MG-tool abort during TCP Chimney offload toggled Fix: (COM) Problem is caused by deferred KCQE buffer overflow. We fix it by completing reload earlier. ***** L2 ****** Enhancement: ------------ 1. Request: VMQ support: disallow jumbo frame placement when BD doesn't fit. Version 6.0.1 (Jan 07, 2010) ============================= Bug Fixes: ---------- 1. Problem: Under stressful condition, there could be some rx packets still pending in the vmq even the destroy vmq group command complete. Fix: Fixed a race condition when driver can still post buffer to the chip while the chip think the queue is already destroyed. 2. Problem: There is a bd_left == 0 assertion in checked built mode. This assertion is invalid since this situation can happen. Fix: Removed this invalid assertion. 5706/8 firmware 6.0.0 ---------------------- Enhancement: ------------ 1. Request: VMQ support. ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ43085 5709 intermittently fails T3 of TCP_Reassembly Fix: (COM, RV2P) In this OOO FIN sparta test, a context variable is accessed by both RV2P and COM. Timing issue will occasionally cause one of the test variations to fail. To synchronize access to this context location, the value of this variable is passed down in the FTQ for COM to access. 2. Problem: CQ43015 Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload Fix: (RV2P) In rare occasions, if an OOO packet is placed at the partially filled buffer right and FW do a 0-byte completion upon push timer expiration, the OOO packet will not be completed correctly. The fix is to bypass 0-byte completion whenever partially filled rx buffer is placed. ***** L2 ****** Bug Fixes: ---------- 1. Problem: Firmware is taking forever to flush a rx queue. During queue flushing, the math that calculate the number of BD outstanding appears to be wrong. Fix:(RXP) Make sure to use signed 16bit subtraction when doing the BD calculation. ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: PR500146 from VMware When RQ is full, the silent drop procedure erroneously overwrites the iSCSI header remainder count which is used in split header situations. Fix: (RXP) The iSCSI header remainder count will be preserved in the described situation 2. Problem: PR500146 from VMware Cont'd No packet will get transmitted when the L5 payload is > mss but the ewin is < mss. This will lead to a remote retransmission timeout due to a lack of ACK response. Fix: (RXP, TXP) A pure ACK with the updated ACK seq# will get generated in the described situation 5709 firmware 6.0.0 ---------------------- Enhancement: ------------ 1. Request: VMQ support. ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ43085 5709 intermittently fails T3 of TCP_Reassembly Fix: (COM, RV2P) In this OOO FIN sparta test, a context variable is accessed by both RV2P and COM. Timing issue will occasionally cause one of the test variations to fail. To synchronize access to this context location, the value of this variable is passed down in the FTQ for COM to access. 2. Problem: CQ43015 Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload Fix: (RV2P) In rare occasions, if an OOO packet is placed at the partially filled buffer right and FW do a 0-byte completion upon push timer expiration, the OOO packet will not be completed correctly. The fix is to bypass 0-byte completion whenever partially filled rx buffer is placed. ***** L2 ****** Bug Fixes: ---------- 1. Problem: Firmware is taking forever to flush a rx queue. During queue flushing, the math that calculate the number of BD outstanding appears to be wrong. Fix:(RXP) Make sure to use signed 16bit subtraction when doing the BD calculation. ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: PR500146 from VMware When RQ is full, the silent drop procedure erroneously overwrites the iSCSI header remainder count which is used in split header situations. Fix: (RXP) The iSCSI header remainder count will be preserved in the described situation 2. Problem: PR500146 from VMware Cont'd No packet will get transmitted when the L5 payload is > mss but the ewin is < mss. This will lead to a remote retransmission timeout due to a lack of ACK response. Fix: (RXP, TXP) A pure ACK with the updated ACK SEQ NUM will get generated in the described situation Version 6.0.0 (Jan 04, 2010) ============================= Enhancements: ------------- 1. Request: Added support for Hyper-V VMQ. 2. Request: Integrated fixes from t5.0 and t5.2. Version 5.2.14 (Dec 15, 2009) ============================= Bug Fixes: ---------- 1. Problem: cq#44926 INF file failed the WLK 1.5 inf checker. Cause: The "params_flow_control" was taken out recently but it is still being referenced. Fix: Remove all references to "params_flow_control". 2. Problem: CQ#44768 WLK 1.5 RTM:BCM5708/5709 BSOD on Plug and Play Driver under Win7 x64. Cause: There are two problems. Upon surprise removal, the VBD may leak MDLs which causes DV to assert. For the artificial SR cases, the VBD needs to gracefully disable DMA engines. Fix: Fixed the 2 problems mentioned above. Enhancements: ------------- 1. Request: Undo cq#44749 below. 2. Request: Add driver software key "MSISupport" to filter out MSI resource if the key is present and the key value is set to 1. 5706/08 firmware 5.2.5 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: RV2P locks up with iSCSI traffic. Fix: (RV2P) Fix an incorrect assertion in RBDC mode check. 5709 firmware 5.2.5 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: RV2P locks up with iSCSI traffic. Fix: (RV2P) Fix an incorrect assertion in RBDC mode check. Version 5.2.13 (Dec 10, 2009) ============================= 5706/08 firmware 5.2.4 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: NETQ MAC VLAN matching is taking account of vlan priority tag and CFI bit. Fix: (RXP) The match algorithm should only look at 12-bit VLAN identifier. 2. Problem: TCP_Urgent t7 failure in WLK 1.5 Fix: (RXP) A check for non-zero urgent pointer was put in to pass the same test in WLK 1.4 which was later found to be a stack issue. This is now causing failure in WLK 1.5. We just need to undo the change. 3. Problem: TCP_ChimneyOffload t18 and t21 failures in WLK 1.5 Fix: (COM) A minor FW design flaw causes send request to be completed with status_aborted instead of status_reset upon receiving RST from the remote peer in some situations. 5709 firmware 5.2.4 ------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: NETQ MAC VLAN matching is taking account of vlan priority tag and CFI bit. Fix: (RXP) The match algorithm should only look at 12-bit VLAN identifier. 2. Problem: TCP_Urgent t7 failure in WLK 1.5 Fix: (RXP) A check for non-zero urgent pointer was put in to pass the same test in WLK 1.4 which was later found to be a stack issue. This is now causing failure in WLK 1.5. We just need to undo the change. 3. Problem: TCP_ChimneyOffload t18 and t21 failures in WLK 1.5 Fix: (COM) A minor FW design flaw causes send request to be completed with status_aborted instead of status_reset upon receiving RST from the remote peer in some situations. 4. Problem: (Linux only) In Flow control, there is a corner case for context coherency problem when all posted buffers are depleted. Fix: (RV2P) Modified RV2P to ensure context coherency is maintained. Version 5.2.12 (Dec 04, 2009) ============================= Bug Fixes: ---------- 1. Problem: Driver can queue redundant dpc twice to the same interrupt event when running in INTA mode. Fix: Make sure dpc is only queued once to the same interrupt event. 2. Problem: cq#44727 The driver breaks in indicate_rx_comp while processing partial receive request. Cause: A receive request contains partial data that have already processed by the stack prior to offloading the connection. In such case, the chip could complete the receive request without placing additional data into the request. Such completion happens when the push timer expires. Also in this case the request is so big that only part of the request is posted in the bd chain. When this partial request completes, the driver needs to advance the bseq number to the end of the partial request. This assert happens because bseq advancement didn't occur. 3. Problem: cq#44747, cq#44476 Under w2k8r2, the inbox will cause BSOD since it can't handle MSIX after un-installing t5.2 driver which has MSIX enabled by default. Fix: Disable MSIX as default for the T5.2 driver to workaround this problem. Impact: T5.2 only. No previous drivers have this problem, since MSI-x is not enabled (by default) in those earlier drivers 4. Problem: cq44774 Win2k8 R2: Xinan is unable to ping when setting the Number of RSS Queues to 4. Fix: The msg id to qidx lookup table should be initialized according to number of rss queues available instead of MAX number of rss queues. Enhancements: ------------- 1. Request: cq#44749 Add support "*FlowControl" registry keyword for configuring flow control setting via BACS. Version 5.2.11 (Nov 18, 2009) ============================= Bug Fixes: ---------- 1. Problem: iSCSI boot in Win2K3 is slow or not functional with new iSCSI ROM that runs in polling mode (with PCI interrupt disabled). Fix: Unmask PCI interrupt when it runs in legacy PCI interrupt mode. Enhancements: ------------- 1. Request: Add 32k grc register dump to vbd crash dump mechanism. Version 5.2.10 (Nov 17, 2009) ============================= Bug Fixes: ---------- 1. Problem: cq#43420, #43504 DVD install to an iSCSI target causes the system to crash. Cause: This problem occurs because MSI-X is enabled on BCM5709. Two GRC windows are used to point to the MSI-X vector and PBA. These two windows are initialized once by the boot code during power-on- reset. When pre-boot agents (PXE or iSCSI boot) are running, it will reset the chip. As a result these two windows are no longer pointing to the MSI-X table which is needed by the OS for configuration. Since the OS is not able to configure the MSI-X table, it eventually disables the device by clearing the PCI bus master and memory enable bits in the command register causing the bus driver to fail initialization. Fix: Added a workaround to restore the GRC window mappings in AddDevice routine. 2. Problem: cq#44517, #44543 The fix in v5.2.8 to complete pending transmit and receive requests with status RESET after receiving a TCP RST segment is breaking tcpip.sys in W2K3. Fix: Reverted back to the old status code ABORTED for W2K3. Version 5.2.9 (Nov 10, 2009) ============================ Bug fix: ------------- 1. Problem: CQ#44424-Break at bxnd52a!l4nd_forward_catchup_done+0x323 using checked build Fix: Removed a bogus assert. Version 5.2.8 (Nov 09, 2009) ---------------------------- Bug Fixes: ---------- 1. Problem: cq#43710 iSCSI boot adapter in SLB team is not active when Lievelink probe ID is tagged. Cause: When iSCSI boot via the HBA path is enabled, the NDIS miniport can be part of an SLB team. To allow for this, the NDIS miniport needs to know if it is in the boot path or not. Fix: Modified the L2_IOC_GET_ISCSIBOOT_PAGING_INFO to only return MBA_ISCSIBOOT_ENABLE if the device is in the paging path. 2. Problem: cq#43918 Unable to change device properties after running basccli continuously. Cause: The driver reads an area in TPAT scratch pad to determine if the device is being used as an iSCSI boot device. The way it makes this determination is by checking for a non-zero value instead of checking for a valid signature. 3. Problem: Failing a pre-release Sparta test. Cause: Upon receiving a TCP RST segment, the driver will complete all pending transmit and receive requests with status ABORT. The new Sparta test requires pending requests to complete with status RESET. 4. Problem: W2k8 Checked Kernel assert during driver unload. Cause: VBD could cancel an uninitialized timer during driver unload when MSIX is enabled. (Regression bug) Version 5.2.7 (Sep 11, 2009) ---------------------------- Bug Fixes: ---------- 1. Problem: cq#43420 OIS fails to load during DVD install to an iSCSI target. Cause: This problem is related to the fix for cq#42967 which prevent iSCSI device enumeration on client OS. During DVD install the kernel is detected as a client OS. Fix: The bus driver will force iSCSI enumeration if the device was used for iSCSI boot. 2. Problem: CQ#43597 "Number of RSS Queues" driver property is missing in win2k3. Fix: Added nt52 section to inf file. 3. Problem: cq#43710 iSCSI boot adapter in SLB team is not active when Lievelink probe ID is tagged. Cause: When iSCSI boot via the HBA path is enabled, the NDIS miniport can be part of an SLB team. To allow for this, the NDIS miniport needs to know if it is in the boot path or not. Fix: Modified the L2_IOC_GET_ISCSIBOOT_PAGING_INFO to only return MBA_ISCSIBOOT_ENABLE if the device is in the paging path. Enhancements: ------------- 1. Request: CQ#43581 Update the inf product version string to 14.2.0 for T5.2. Version 5.2.6 (Sept 2, 2009) ---------------------------- Bug Fixes: ---------- 1. Problem: cq#43438 w2k3sp2x64: Running Chariot Traffic against 5709 Results in CHR0200 and CHR0245 Error Messages. Fix: Restrict the tx queue idx to within the range of number of tss queues allowed. Version 5.2.5 (Aug 31, 2009) ---------------------------- Bug Fixes: ---------- 1. Problem: The inf file is using kmdf v1.9 which needs to revert back to kmdf v1.7 to resolve cq#43166. Version 5.2.4 (Aug 28, 2009) ---------------------------- Bug Fixes: ---------- 1. Problem: cq#43313 5709:VBD:bxvbda!xinan_service_intr_rss+5a; Assert is observed during BacsCLI automation, setting advanced driver properties in CLI mode. Causes: The driver is not setting the RSS qidx mapping table correctly. Fixes: Re-adjust the RSS qidx mapping table algorithm. 2. Problem: cq#43166 DVD install over iSCSI to a target is broken. Cause: This is caused by the move to kmdf v1.9. Since installing kmdf v1.9 requires a reboot and with dvd install a reboot is not allowed. Fix: Rolled back to kmdf v1.7. Enhancement: ------------ 1. Request: cq#42568 Enable MSI-X capability by default on 5709. Version 5.2.3 (Aug 21, 2009) ---------------------------- Enhancement: ------------ 1. Request: cq#43081 Additional functionality to `vdiag` (Internal Tool) distinguish LSO and CSO statistics for IPv4 and IPv6. 2. Request: cq#42567 Support for NDIS6 MSI-X RSS cpu affinity according to the RSS indirection table. Version 5.2.2 (Aug 12, 2009) ---------------------------- Enhancement: ------------ 1. Request: cq#42625 Remove RSS queue configuration from the advanced properties paged in Windows XP. 2. Request: cq#43079 Move to WDK 7600 for building the driver and upgrade to KMDF v1.9. 3. Request: cq#43081 Added functionality to `vdiag` (Internal Tool) for CSO statistics and mtu size info. 5706/08 firmware release 5.2.2 ============================== ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ43085 5709 intermittently fails T3 of TCP_Reassembly Fix: (COM, RV2P) In this OOO FIN sparta test, a context variable is accessed by both RV2P and COM. Timing issue will occasionally cause one of the test variation to fail. To synchronize access to this context location. The value of this variable is passed down in the FTQ for COM to access. 5709 firmware release 5.2.2 =========================== ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ43085 5709 intermittently fails T3 of TCP_Reassembly Fix: (COM, RV2P) In this OOO FIN sparta test, a context variable is accessed by both RV2P and COM. Timing issue will occasionally cause one of the test variations to fail. To synchronize access to this context location. The value of this variable is passed down in the FTQ for COM to access. Version 5.2.1 (Aug 7, 2009) --------------------------- Bug Fixes: ---------- 1. Problem: CQ#41237 Windows driver is not providing full link status word for NCSI get link command Cause: Driver did not fully populate the full link status word. Fix: Populate all supported line status word for NCSI. 2. Problem: CQ#42967 The iSCSI device is enumerated on Vista and Windows 7 Client. Fix: The driver was modified to prevent iSCSI device enumeration on client operating systems. Enhancement: ------------ 1. Request: Support 64-processor server system. 5706/08 firmware release 5.2.1 ============================== ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ43015 Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload Fix: (RV2P) In rare occasions, if an OOO packet is placed at the partially filled buffer right and FW do a 0-byte completion upon push timer expiration, the OOO packet will not be completed correctly. The fix is to bypass 0-byte completion whenever partially filled rx buffer is placed. 5709 firmware release 5.2.1 =========================== ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ43015 Hyper-V: bxvda!build_frag_list_from_gen_bufs+30e during offload Fix: (RV2P) In rare occasions, if an OOO packet is placed at the partially filled buffer right and FW do a 0-byte completion upon push timer expiration, the OOO packet will not be completed correctly. The fix is to bypass 0-byte completion whenever partially filled rx buffer is placed. Version 5.2.0.0 (Jul 29, 2009) ----------------------------- Bug Fixes: ---------- 1. Problem: CQ#42648 Flow control appears not to be working as expected. Cause: The fix for cq#40029 and #38307 exposes this problem where transmit completion is batched too aggressively. Normally batching threshold is dynamically adjusted as a function of traffic rate. The fix for these issues sets "optimize_ips" to "0" which prevents the batching threshold to be adjusted dynamically. Fix: Disable transmit and receive completion batching whenever optimize_ips is set to 0. 2. Problem: CQ#42214 bxnd60a!complete_done_blks+b4;Assert is observed Cause: Incorrect number of toe connections is reported to the OS while toe connection is unchecked from RR in BACS. Fix: Change the driver to report correct number of toe connections. 5706/08 firmware release 5.2.0 (Jul 27, 2009) ============================= ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ42827 Protocol Reject when connecting to MSA1510i Fix: (CP) In some occasions, L4 FW overwrite a context location shared with iSCSI when the retx delta field in KWQE field is non-zero. 5709 firmware release 5.2.0 (Jul 27, 2009) ============================= ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ42827 Protocol Reject when connecting to MSA1510i Fix: (CP) In some occasions, L4 FW overwrite a context location shared with iSCSI when the retx delta field in KWQE field is non-zero. Enhancement: ------------ 1. Request: Starting from T5.2, NDIS 6 won't modified the RSS indirection table anymore. VBD will perform the MOD operation with the rxq_cnt to the RSS indirection table instead. Version 5.0.15 (Jun 29, 2009) ----------------------------- 5706/08 firmware 5.0.10 (Jun 29, 2009) ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ41926 CNIC Stress can’t be completed under very stressful network condition. Fix: (COM, TXP) Reload is completed prematurely. Fixed by postponing reload completion until tx side is ready. 5709 firmware 5.0.10 (Jun 29, 2009) ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ41926 TOE: Data invalidate error running CNIC Stress. Fix: (COM, TXP) Reload is completed prematurely. Fixed by postponing reload completion till snd_next == snd_max. Version 5.0.14 (Jun 22, 2009) ----------------------------- Bug fix: ------- 1. Problem: CQ#42007 - Setting RX buffer size <= 30 causes adapter to not be able to pass traffic. Cause: The extremely low RX buffer count is not compatible with the way the receive path was designed. Fix: Change the RX buffer lower limit to 50. 2. Problem: CQ#41987 - VBD:5709: bxvbda!um_clnt_unbind+522; Assert is seen passing L4 sockdie traffic to SLB, toggling TOE, disabling VBD. Cause: There is a race condition when updating client state and its corresponding data structure. Fix: reorder the variable updates Version 5.0.13 (Jun 10, 2009) ----------------------------- Bug fix: -------- 1. Problem: CQ#41803 Wakeup frame failed in W2k8 and Win7 on 5709c. Cause: A previous fix for Win7 WOL introduces a bug where the driver may not use WOL pattern size consistently. Fix: Changed the driver to use correct WOL pattern size. 2. Problem: CQ41755 5709:TOE:Lost network connectivity to one port after 5 minutes Fix: Take out a Read-modify-write to a context location updated by both MQ and VBD. 5706/08/09 Firmware 5.0.9 (Jun 10, 2009) ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ41924 5708:TOE:X64_0x0_bxvbda!build_frag_list_from_gen_bufs+30e running CNIC stress. Fix: (RV2P) In supporting Partially Filled Rx Request in WIN7, there is a context variable that RV2P P1 and P2 are both reading and writing. That create a potential race condition that they could overwrite each other. It's fixed by eliminating write access from RV2P P2. Version 5.0.12 (Jun 03, 2009) ---------------------------- 1. Request: CQ#41711 - Don't enumerate iscsi pdo when running on windows 7 client. Fix: As requested. Version 5.0.11 (Jun 1, 2009) ---------------------------- Bug fix: -------- 1. Problem: CQ41622 Windows7x64 7127: SUT Encounters BSOD (0xD1) for Break at bxvbda!copy_gen_bufs+b1, under Bi-Directional SockdieStress Test Scenario Problem: CQ41620 - Windows7x64 Build 7127: Running Bi-Directional SockdieStress against Xinan Results in Breaks at bxvbda!indicate_rx_comp+70 Fix: update complete bseq in case of 0-byte completion due to partial filled rx request 5706/08 firmware 5.0.8 (Jun 1, 2009) ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ41545 Win7 Hyper-V: connection timed out running sockdie stress client. Fix: (COM) COM should stop processing any timers when an offloaded connection is de-activated to avoid potential lockup/assertion in the firmware. 2. Problem: CQ41622 Windows7x64 7127: SUT Encounters BSOD (0xD1) for Break at bxvbda!copy_gen_bufs+b1, under Bi-Directional SockdieStress Test Scenario Problem: CQ41620 - Windows7x64 Build 7127: Running Bi-Directional SockdieStress against Xinan Results in Breaks at bxvbda!indicate_rx_comp+70 Fix: (RV2P) Fix bug when doing 0-byte completion due to partially filled rx request 5709 firmware 5.0.8 (Jun 1, 2009) ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ41545 Win7 Hyper-V: connection timed out running sockdie stress client. Fix: (COM) COM should stop processing any timers when an offloaded connection is de-activated to avoid potential lockup/assertion in the firmware. 2. Problem: CQ41622 Windows7x64 7127: SUT Encounters BSOD (0xD1) for Break at bxvbda!copy_gen_bufs+b1, under Bi-Directional SockdieStress Test Scenario Problem: CQ41620 - Windows7x64 Build 7127: Running Bi-Directional SockdieStress against Xinan Results in Breaks at bxvbda!indicate_rx_comp+70 Fix: (RV2P) Fix bug when doing 0-byte completion due to partially filled rx request Version 5.0.10 (May 27, 2009) Bug fix: -------- 1. Problem: (CQ37376,38375,41225,41226,41242) Win7 WOL doesn't work for both magic and pattern wake up. Fix: Implemented new PM interface for NDIS6.20. 2. Problem: CQ41377 Some advanced settings to configure the driver parameters cannot be applied correctly. Fix: Change the step size for affected parameter to 1. Version 5.0.9 (May 21, 2009) Bug fix: -------- 1. Problem: (CQ40029, CQ38307) Erratic throughput seen when RSS Enabled Using OEM 4-port 5709 System Fix: Disabled dynamic interrupt coalescing when RSS is enable since the algorithm is only tuned for single queue (NON_RSS mode). 2. Problem: CQ#41136-Assert is seen on the vbd while passing sockdie traffic to SLB team on a OEM platform, with 2 ports permanantly disabled, and 1 port being disabled every 20 secs and 1 port passing traffic. Fix: Changed the driver to wait for unbind event to be signaled before unbinding iSCSI HBA client. 5706/08 firmware version 5.0.7 (May 20, 2009) ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40989 WIN7 sparta failures observed in latest Win7 7100 & WLK 1.4 Final Fix: (COM, RXP) The WLK 1.4 Final exposed some minor flaws in TCP offload implementation. 2. Problem: CQ41132 5709 fails TCP_BadHeaderAfterConnection Sparta test from WLK 1.4 Fix: (RXP) If TCP header length or option is invalid, we need to drop the packet. 3. Problem: The tx completions are out of sync during upload when there is an outstanding disconnect request. Fix: (COM) Before generating the upload kcqes, COM should do a final tx/rx completion first, and then complete the pending disconnect request. 4. Problem: CQ40987 (regression bug) VBD:BASP6: Chariot error 242 is observed while passing chariot highperf IPv6 traffic to SLB team and toggling TOE. Fix: (TXP) Undo changes where we allow the tx pipeline continue to transmit while the connection is in the process of uploading. 5. Problem: CQ41143 bsod at x64_0xd1_bxnd60a!indicate_rx_as_success Fix: (COM) When FIN_ACKED is honored in OOO packet, we need to make sure TCP state is updated correctly. 5709 firmware version 5.0.7 (May 20, 2009) ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: iSCSi kwq/kcq communication is broken when netq is active. Fix: (COM, RXP) In RXP, the CID field of any PG related command should be filled in with PG cid instead of 0 such that COM can based on the CID and find the correct kcq id. In COM, it must also check the layer code of the incoming ftq to determine whether it is belong to iSCSi instead of purely relying on the CID range. 2. Problem: CQ40989 WIN7 sparta failures observed in latest Win7 7100 & WLK 1.4 Final Fix: (COM, RXP) The WLK 1.4 Final exposed some minor flaws in TCP offload implementation. 3. Problem: CQ41132 5709 fails TCP_BadHeaderAfterConnection Sparta test from WLK 1.4 Fix: (RXP) If TCP header length or option is invalid, we need to drop the packet. 4. Problem: The tx completions are out of sync during upload when there is an outstanding disconnect request. Fix: (COM) Before generating the upload kcqes, COM should do a final tx/rx completion first, and then complete the pending disconnect request. 5. Problem: CQ40987 (regression bug) VBD:BASP6: Chariot error 242 is observed while passing chariot highperf IPv6 traffic to SLB team and toggling TOE. Fix: (TXP) Undo changes where we allow the tx pipeline continue to transmit while the connection is in the process of uploading. 6. Problem: CQ41143 bsod at x64_0xd1_bxnd60a!indicate_rx_as_success Fix: (COM) When FIN_ACKED is honored in OOO packet, we need to make sure TCP state is updated correctly. Version 5.0.8 (May 13, 2009) Enhancement: ------------ 1. Request: Driver must be kgroup compatible for win2k8r2/win7 Change: Changed the bus driver to be kgroup compatible. Version 5.0.7 (May 05, 2009) Bug fix: -------- 1. Problem: Customer reported driver would crash upon stress test in particular environment on win7. Fix: Changed the driver to match surprise removal behavior on win7. 2. Problem: CQ#40942 The new vbd 5.0.6 causes bacs to display the jumbo mtu size as 1486, it should display it as 1500, Fix: Changed the driver to report MTU correctly for PDOs. 5706/08 firmware 5.0.6 ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40996 5709: connection timed out when running cnic stress. The problem happens when cp doesn't honor any reload kwqes that come after the upload request kwqe and allow COM to complete the request immediately. However, txp can be sending at the same time and cause the bseq out of sync with host driver. Fix: (COM) Defer the reload completion even reload request is not honored. TXP will trigger the reload request completion later once the snd_next >= snd_una. 5709 firmware 5.0.6 ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40996 5709: connection timed out when running cnic stress. The problem happens when cp doesn't honor any reload kwqes that come after the upload request kwqe and allow COM to complete the request immediately. However, txp can be sending at the same time and cause the bseq out of sync with host driver. Fix: (COM) Defer the reload completion even reload request is not honored. TXP will trigger the reload request completion later once the snd_next >= snd_una. Version 5.0.6 (May 01, 2009) Bug fix: -------- 1. Problem: Assert at bxvbda!um_bdrv_get_vbd_params on checked build. Cause: Checked driver asserts because the newly introduced registry subkey is normally absent on current platforms. Fix: Separate the subkey handling and remove the assert for those optional subkeys. 2. Problem: CQ# 39854 OEM reports bugcheck 10D on reboot stress test. Cause: Driver sometimes would not turn on off interrupt during shutdown. Fixed: Changed the driver to correctly disable interrupt. Version 5.0.5 (Apr 30, 2009) Enhancement: ------------ 1. Request: CQ#40683 iSCSI Jumbo Frame will be a supported feature in T5.0 release and the consensus is to have each feature (TOE/iSCSI/FCOE) configure the MTU individually. The request is for VBD to add the new registry key 'MTU' for the iSCSI device. 2. Request: Optimized DPC importance in win2k8 and win7 OS's. Bug fix: -------- 1. Problem: Assert at bxvbda!defer_kcqe+0x43 Fix: Fix a bug introduced the previous release to correctly merge tx complete kcqe. 5706/08 firmware 5.0.5 ============================= ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ40751 Win7 Build 7077:5706 lost network connectivity while running cnic stress Fix: (RV2P) In a rare coincidence, RV2P is unaware of the context has been overwritten. RBDC halt when used info from wrong context. 5709 firmware 5.0.5 ============================= ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ40751 Win7 Build 7077:5706 lost network connectivity while running cnic stress Fix: (RV2P) In a rare coincidence, RV2P is unaware of the context has been overwritten. RBDC halt when used info from wrong context. Version 5.0.4 (Apr 21, 2009) Bug Fixes: ---------- 1. Problem: CQ#39501 Issue Description: Auto MDIX mode doesn't work in forced speed while two 5716 connected back-to-back Fix: Enable auto mdix for copper phy. 2. Problem: CQ#39895 System asks to reboot when disabling iSCSI or NDIS miniports that is not used to boot. Fix: Changed the driver to veto query remove correctly. 3. Problem: Assert at bxvbda!defer_kcqe+0x43 Fix: Changed the driver to merge tx complete kcqe if possible correctly. 5706/08 firmware 5.0.4 ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40554 OEM test tool throughput is reduced to more than 50% (80MBps vs 200MBps) Fix: (COM) A bug was introduced in last release for piggy back delay ack. 2. Problem: CQ40511 VBD:5709:bxvbda!verify_con_state+175; Assert occurred passing sockdie ipv6 traffic to SLB team with 2 vlans Fix: (COM) In some cases, OOO FIN is dropped (partially) as soon as it's received. COM is unaware of it and thought FIN has been received 5709 firmware 5.0.4 ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40554 OEM test tool throughput is reduced to more than 50% (80MBps vs 200MBps) Fix: (COM) A bug was introduced in last release for piggy back delay ack. 2. Problem: CQ40511 VBD:5709:bxvbda!verify_con_state+175; Assert occurred passing sockdie ipv6 traffic to SLB team with 2 vlans Fix: (COM) In some cases, OOO FIN is dropped (partially) as soon as it's received. COM is unaware of it and thought FIN has been received. Version 5.0.3 (Apr 07, 2009) 5706/08 firmware 5.0.3 ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40366 Firmware still try to submit a reload request when the tcp_state has transitioned to CLOSED. (Regression Bug) Fix: (COM) COM should cancel the reload request if the tcp_state is at CLOSED. 2. Problem: CQ40375 The fix for pending reload request is not complete and will cause TXP to stall under stress scenario. Fix: (TXP) Merged in the txp change from T4.8 branch that will prevent TXP to get into this situation. 3. Problem: CQ40397 Win7 Build 7068:5708:Lockup running Offloadstress Fix: (RXP) The difference in RXP FIO between 5708 and 5709 was overlooked, that caused TCP header offset was read at the wrong location 5709 firmware 5.0.3 ============================= ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40366 Firmware still try to submit a reload request when the tcp_state has transitioned to CLOSED. (Regression Bug) Fix: (COM) COM should cancel the reload request if the tcp_state is at CLOSED. 2. Problem: CQ40375 The fix for pending reload request is not complete and will cause TXP to stall under stress scenario. Fix: (TXP) Merged in the txp change from T4.8 branch that will prevent TXP to get into this situation. Version 5.0.2 (Mar 31, 2009) Fixes: ----- BCM5706/08 Firmware v5.0.2 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40150 Xinan win2k8 Sparta: TCP_ChimneyOffload failure of tests T9,T10, T12-16,T18-T22. Fix: (COM) Premature window update timeout introduce in change-list 59772. BCM5709 Firmware v5.0.2 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ40150 Xinan win2k8 Sparta: TCP_ChimneyOffload failure of tests T9,T10, T12-16,T18-T22. Fix: (COM) Premature window update timeout introduce in change-list 59772. 2. Problem: Connection upload stalled when running sockdie test in win7 due to pending reload request completion. The pending reload request completion causing vbd to postpone firmware upload request indefinitely. Fix: (COM) Make sure to complete the pending reload request in the scenario. Version 5.0.1 (Mar 30, 2009) Fixes: ------ 1. CQ#40124 - change copyright year to 2009 Enhancement: ------------ 1. Cont00039527 Issue Description: Add an end user configurable option to the advanced driver properties that would allow for setting the INT-coalecing parameter. 2. Cont00039629 Issue Description: For NX2/NX2_EV MSI-x capable devices we will allow an option in the advanced driver properties that will allow the user to change the amount of RSS queues Version 5.0.0 (Mar 24, 2009) Enhancement: ------------ 1. CQ#39526 add min/max/default option for Tx + Rx buffers 2. CQ#39838 - iSCSI boot over HBA should work with BACS "iSCSI Offload Engine" option unchecked. 3. Integrated firmware 5.0.1 into the bus driver. Integrated bug fix 1 - 6 from 4.6b branch Bug Fixes: ---------- 1. Problem: cq#39856 iSCSI device disappears from the system after a reboot. Cause: The driver only enumerates the iSCSI device if the iSCSI license is present. For OEMs that uses the universal license, the number of iSCSI connection allowed should be assumed to be the maximum. 2. Problem: cq#39795 System crash when upgrading the driver after having it installed via the F6 mechanism. Cause: During the F6 install, the system creates another service name that is different than the service name used for normal driver install. This causes the driver to load twice. The second load corrupts the driver list. A crash may occur when a device in the list is removed. Fix: During driver load, we will not initialize the driver list since by default it is already initialized. 3. Problem: CQ#39414 System may NMI on driver repeated driver load/unload when NCSI is enabled. Cause: The driver starts rv2p too early before the L2 receive context is fully initialized. When NCSI is enabled, EMAC is enabled immediately after a reset which opens the gate for packet reception. Since the context has not been initialized, rv2p will start placing packets using invalid context. Fix: the driver is modified to start rv2p only after the context is initialized. 4. Problem: CQ#39614 - PCIE error when chimeny enabled OID is used during shutdown. Cause: After the system has called us to handle a shutdown request and has put our device to low power state, NDIS may issue an OID to change offload parameters. This causes us to touch the hardware while it is in D3hot state which leads to NMI. Fix: The driver will not process the set OID request if system has called us to handle shutdown. A registry key is also introduced to stop the PCIe device from reporting non-fatal error reporting to system in case the device is being accessed at d3hot state. 5. Problem: CQ#39459-NDIS5.2:5709S: With remote phy enabled, setting speed/duplex to 1gb full auto, 5709s links at 10HD Cause: The driver is testing the wrong bits for auto negotiation settings hence the firmware is not notified to enable auto negotiation when setting link speed to 1 Gbps on systems with remote phy. Fix: Fix the driver to test the auto negotiation bits correctly for systems with remote phy. 6. Problem: CQ#39600: System does not enumerate iscsi device with token key Cause: The driver doesn't setup max number of iscsi connections if it has not configured. The VBD will not enumerate the iSCSI device if the max number of iscsi connections is not set. Fix: Change the driver to setup max number of iSCSI connections to the value that is in the license key. 7. Problem: CQ#40094:iSCSI boot -BSOD seen after upgrade to 5709c boot code v5.0.0 cause: Driver pulse is not getting properly registered to the shmem. Fix: Make sure driver is using the correct offset when registering the driver pulse to shmem via the grc_window. 8. Problem: CQ#29705:5708C performance issue: TOE's throughput drops at IO size 1MB cause: Teton requires smaller breakup of application buffer to support full line rate for large IO size. Fix: Fine-tune application buffer breakdown size for Teton. Version 4.8.2 (Feb 13, 2009) ============================ Bug Fixes: ---------- 1. Problem: CQ#34349 5709: Bidirectional UDP performance testing is lower than 5708. Cause: The interrupt coalescing parameters for 5709 is bit conservative and thus caused the lower throughput. 2. Problem: CQ#38313 iSCSI boot over the offload path is causing BSOD when iSCSI HBA is disabled by default. Cause: The bus driver does not enumerate the iSCSI device when the enum bit in the nvram has iSCSI disabled. Fix: Changed the bus driver to always enumerate the iSCSI device regardless of the enum configuration in the nvram when there is an iSCSI license and iSCSI boot occurs over the HBA. 3. Problem: CQ#39008 System may NMI during system shutdown. Cause: After the system has called us to handle a shutdown request and has put our device to low power state, NDIS may issue an OID to clear the multicast address. This causes us to touch the hardware while it is in D3hot state which leads to NMI. Fix: The driver will not process the set OID request if system has called us to handle shutdown. 4. Problem: CQ#39414 System may NMI on driver repeated driver load/unload when NCSI is enabled. Cause: The driver starts rv2p too early before the L2 receive context is fully initialized. When NCSI is enabled, EMAC is enabled immediately after a reset which opens the gate for packet reception. Since the context has not been initialized, rv2p will start placing packets using invalid context. Fix: the driver is modified to start rv2p only after the context is initialized. Enhancement: ------------ 1. cq#37418 - Add support for selective autoneg for 2.5gb. 2. Increase default number of TX/RX descriptors to improve performance on some test configurations. Version 4.8.1 (Dec 23, 2008) ============================ Bug Fixes: ---------- 1. Problem: CQ#38477 Windows xp should not enumerate iscsi device. Cause: There should be check for OS_TYPE before iSCSi enumeration. 2. Problem: CQ#38895 NMI is seen during system shutdown when there is an iSCSI connection running over TOE. Cause: After the system puts our device into D3Hot, the Microsoft iSCSI initiator posts a transmit buffer. As a result our device reports a non-fatal error back to the bridge which then issues a NMI. Fix: Changed the driver to fail the transmit buffer post if the device's shutdown routine has been called. BCM5706/08 Firmware v4.8.2 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: (win-7 sparta) TCP_ackfrequency and tcp_receive indication test failed in WIN-7 sparta test. Fix: (COM) TOE stack should not shrink the receive window when a hole is filled and OOO data is placed in generic buffer. It should wait till the data to get copied to posted buffer before sending out the ACKs to remote. 2. Problem: (win-7 sparta) WIN-7 TCP_Chimneyoffload test failed in IPV6 mode. Fix: (TXP) TOE stack should honor the hop limit value passed down from the host stack when building ipv6 header. 3. Problem: (win-7 sparta) In a corner case, the TOE stack can still increase the receive window size even though the host has made a receive window reduction request. Fix: (COM) Check host request for window reduction first before proceed to update receive window in one of the code path. 4. Problem: (win-7 sparta) Apparently the TOE rx path is sending challenge ACK to remote even a portion of data in the packet lies within the receive window. Fix: (RXP) TOE stack should only send challenge ACK to remote when the packet is invalid (ie. the data lies outside of receive window). 5. Problem: (win-7 sparta) TOE stack still attempt to send out window update while delay ack is active. Fix: (COM) window update should be piggy back to delay ack if possible. BCM5709 Firmware v4.8.2 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: (win-7 sparta) TCP_ackfrequency and tcp_receive indication test failed in WIN-7 sparta test. Fix: (COM) TOE stack should not shrink the receive window when a hole is filled and OOO data is placed in generic buffer. It should wait till the data to get copied to posted buffer before sending out the ACKs to remote. 2. Problem: (win-7 sparta) WIN-7 TCP_Chimneyoffload test failed in IPV6 mode. Fix: (TXP) TOE stack should honor the hop limit value passed down from the host stack when building ipv6 header. 3. Problem: (win-7 sparta) In a corner case, the TOE stack can still increase the receive window size even though the host has made a receive window reduction request. Fix: (COM) Check host request for window reduction first before proceed to update receive window in one of the code path. 4. Problem: (win-7 sparta) Apparently the TOE rx path is sending challenge ACK to remote even a portion of data in the packet lies within the receive window. Fix: (RXP) TOE stack should only send challenge ACK to remote when the packet is invalid (ie. the data lies outside of receive window). 5. Problem: (win-7 sparta) TOE stack still attempt to send out window update while delay ack is active. Fix: (COM) window update should be piggy back to delay ack if possible. Version 4.8.0 (Dec 10, 2008) ============================ Bug Fixes: ---------- 1. Problem: CQ#38338 iSCSI device gets enumerated when the iSCSI offload hardware key is not present. Cause: The driver incorrectly computes the number of iSCSI connection from the hardware license key. 2. Problem: Driver may crash in hyper-v environment with Chimney enabled. Cause: The driver indicates a buffered data to the stack which partially accepted the data. If the stack decides to post a zero-length receive buffer, the driver will crash because it is not expecting such a request. 3. Problem: CQ#38727 BSOD on an OEM 5706 LOM due to timers in VBD don't get cancel properly during driver unload. Fix: Added extra delay to wait for timers to expired and make sure we don't re-arm timers when driver state is not DRIVER_STATE_RUNNING. Enhancement: ------------ 1. Request: CQ#38399 Cap the maximum number of iSCSI pending task to 128. 2. Request: Add support for BCM5716S. BCM5706/08 Firmware v4.8.1 -------------------------- ***** TCP offload/L2 ***** 1. Problem: In 5706/08, there is a possible race condition in RV2P when too many L4 buffer post requests are en-queued in Mailbox Queue (MQ) Fix: (COM, CP) A fix is put in such that all L4 buffer post MQ are re-routed via Cmd Scheduler and Cmd Processor. Enhancement: ------------ 1. Request: (COM, CP) Incorporate changes to support Sparta tests for Win7 was released on 11/3 BCM5706/08 Firmware v4.8.0 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037913 Got connection timeout after running OEM application for about 30 minutes Fix: (COM) In change-list 56320, a bug was introduced that flow control state was not updated consistently. 2. Problem: TCP_ChimneyOffload T16 sparta failure in W2K8. Fix: (COM) Connection abort kcqe was sent out prematurely. This causes the driver to complete the receive request as ABORT instead of RESET. 3. Problem: IPv4 checksum clearing for LSO is done incorrectly. Fix: (TPAT) Offset to the IPv4 checksum is fixed. 4. Problem: Poor IOMeter performance for small packet size. Fix: (COM) Optimized Tx completion algorithm. Enhancement: ------------ 1. Request: (RXP) Taking account for SORT_VEC_2 setting when forward multi-cast/ broadcast packet to iSCSi L2 ring (LINUX only feature). 2. Request: (RXP) Pass t39 of TCP_ChimneyOffload sparta test: TOE must be able to handle IP options by forwarding the segment to stack for processing 3. Request: (CP, RXP, RV2P, COM) In Linux, driver can issue a Flush BD chain KWQE that will reset the BD chain (i.e. for L2 ISCSI). 4. Request: (COM, CP) Pass t65 and t66 of TCP_ChimneyOffload sparta test: Fast recovery/fast retransmit parameters must be preserved connection is offloaded before/after entering fast recovery. ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ37753 Windows iSCSI Offload: Limit on iSCSI offload connections set to 10 Fix: (CP) iSCSI context allocation has been fixed. 2. Problem: CQ iSCSI Offload: Data corruption was discovered on the IOMonkey test bench. Fix: (CP, RXP, COM) The destroy handling has a bug where the sgl cache didn't get flushed. The complete destroy path has been revamped. 3. Problem: CQ38461 The TCP checksum is found to be corrupted when tagged VLAN AND header/data digest is enabled. Fix: (TPAT) The TCP checksum patching routines were modified. 4. Problem: CQ38348 Async msg with Sense data was not supported. Fix: (RXP) Added support for iSCSI async message with Sense data. BCM5709 Firmware v4.8.1 ----------------------- Enhancement: ------------ 1. Request: (COM, CP) Incorporate changes to support Sparta tests for Win7 was released on 11/3. BCM5709 Firmware v4.8.0 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037913 Got connection timeout after running test application for about 30 minutes Fix: (COM) In change-list 56320, a bug was introduced that tcp flow state was not updated consistently. 2. Problem: Cont00037887 5709 subsequent Sparta tests fail after running TCP_SendAndDisconnect Fix: (CP) In change-list 49525, a bug was introduced when integrating 5706/5709 FW. CTX window was accessed before CTX window CID was initialized. 3. Problem: TCP_ChimneyOffload T16 sparta failure in W2K8. Fix: (COM) Connection abort kcqe was sent out prematurely. This causes the driver to complete the receive request as ABORT instead of RESET. 4. Problem: IPv4 checksum clearing for LSO is done incorrectly. Fix: (TPAT) Take out IPv4 checksum clearing since it's not needed for 5709. 5. Problem: Poor IOMeter performance for small packet size. Fix: (COM) Optimized Tx completion algorithm. Enhancement: ------------ 1. Request: (RXP) Taking account for SORT_VEC_2 setting when forward multi-cast/ broadcast packet to iSCSi L2 ring (LINUX only feature). 2. Request: (COM) Added capability to route L2 iSCSI status block updates to any per processor status block based on the status block number specified in L2 iSCSi context (LINUX only feature). 3. Request: (RXP) Pass t39 of TCP_ChimneyOffload sparta test: TOE must be able to handle IP options by forwarding the segment to stack for processing 4. Request: (RXP) Added more Perfect match and RULE checker resources for NCSI management firmware. 5. Request: (CP, RXP, RV2P, COM) In Linux, driver can issue a Flush BD chain KWQE that will reset the BD chain (i.e. for L2 ISCSI). 6. Request: (COM) Pass t65 and t66 of TCP_ChimneyOffload sparta test: Fast recovery/fast retransmit parameters must be preserved connection is offloaded before/after entering fast recovery. ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: iSCSI Offload: Data corruption was discovered on the IOMonkey test bench. Fix: (CP, RXP, COM) The destroy handling has a bug where the sgl cache didn't get flushed. The complete destroy path has been revamped. 2. Problem: CQ38348 Async msg with Sense data was not supported. Fix: (RXP) Added support for iSCSI async message with Sense data. Version 4.6.17 (Nov 4, 2008) ============================ BCM5706/08 Firmware v4.6.11 --------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: TCP_ChimneyOffload T16 sparta failure in W2K8. Fix: (COM) Connection abort kcqe was sent out prematurely. This causes the driver to complete the receive request as ABORT instead of RESET. 2. Problem: IPv4 checksum clearing for LSO is done incorrectly. Fix: (TPAT) Offset to the IPv4 checksum is fixed. 3. Problem: Poor IOMeter performance for small packet size. Fix: (COM) Optimized Tx completion algorithm. BCM5709 Firmware v4.6.12 ------------------------ ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: TCP_ChimneyOffload T16 sparta failure in W2K8. Fix: (COM) Connection abort kcqe was sent out prematurely. This causes the driver to complete the receive request as ABORT instead of RESET. 2. Problem: IPv4 checksum clearing for LSO is done incorrectly. Fix: (TPAT) Take out IPv4 checksum clearing since it's not needed for 5709. 3. Problem: Poor IOMeter performance for small packet size. Fix: (COM) Optimized Tx completion algorithm. Version 4.6.16 (Oct 27, 2008) ============================= BCM5709 Firmware v4.6.11 ------------------------ ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: iSCSI Offload: Cont00038138 iLab Retransmit timer expiration failure observed. Fix: (COM) The destroy handler contains a bug which corrupted the cid when the connection gets destroyed. Version 4.6.15 (Oct 24, 2008) ============================= 1. Problem: Checked Windows assert on a call to cancel timers. Cause: Uninitialized timers are being cancelled. BCM5706/08 Firmware v4.6.10 --------------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: Application (iomonkey) does not run to completion. Fix: (CP, RXP, COM) The destroy handling has a bug where the sgl cache didn't get flushed. The complete destroy path has been revamped. BCM5709 Firmware v4.6.10 ------------------------ ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: Application (iomonkey) does not run to completion. Fix: (CP, RXP, COM) The destroy handling has a bug where the sgl cache didn't get flushed. The complete destroy path has been revamped. Version 4.6.14 (Oct 21, 2008) ============================= Bug Fixes: ---------- 1. Problem: CQ#37592 Unable to pass traffic after coming out of S4. Cause: The device stops generating interrupts because there is a pending interrupt that never go acknowledged. Fix: Kick start the interrupt by acknowledging the pending interrupt. Version 4.6.13 (Oct 17, 2008) ============================= Bug Fixes: ---------- 1. Problem: CQ#37730 Link polarity is reverted in 5709s Mezz card when remote phy is enable. Fix: The GRC window1 is not mapped into the PCI address space properly. Therefore, driver could not read the link status information correctly. 2. Problem: Driver verifier assert when VBD use spin lock during chip core dump. Fix: Remove use of spin lock during chip core dump since there is no need for it. 3. Problem: CQ#37867 NDIS test 2c_holdpackets test fails on Windows XP. Cause: The VBD did not wait for all the rx packets to return before completing miniport unbind. 4. problem: CQ#37962 System hangs when trying to load/unload the vbd when msi-x is enabled on the device. Cause: The grc_window1 and grc_window2 setting weren't getting preserved during vbd driver unload. Therefore, win2k8 OS won't be able to write the correct MSI-X vectors/data to the chip during next driver load. Enhancement: ------------ 1. Request: Track diag isr counter during MSI/MSI-X interrupt so interrupt diagnostic test can be ran with BACS when MSI/MSI-X is enabled. 2. Request: Add support for L2_IOC_GET_HW_INFO. BCM5706/08 Firmware v4.6.9 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037913 Got connection timeout after running test application for about 30 minutes Fix: (COM) In change-list 56320, a bug was introduced that tcp flow state was not updated consistently. ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ37753 Windows iSCSI Offload: Limit on iSCSI offload connections set to 10 Fix: (CP) iSCSI context allocation has been fixed. BCM5709 Firmware v4.6.9 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037913 Got connection timeout after running test application for about 30 minutes Fix: (COM) In change-list 56320, a bug was introduced that tcp flow state was not updated consistently. 2. Problem: Cont00037887 5709 subsequent Sparta tests fail after running TCP_SendAndDisconnect Fix: (CP) In change-list 49525, a bug was introduced when integrating 5706/5709 FW. CTX window was accessed before CTX window CID was initialized. Enhancement: 1. Request: (RXP) Added additional RULE CHECKER and perfect match filter resources for NCSI management firmware. Version 4.6.12 (Oct 6, 2008) ============================ Enhancement: ------------ 1. Request : Added iSCSI boot support for UEFI environment. (CQ#35085) Change : Implemented iBFT logic to search for iBFT in both ACPI table as well as low memory region. Version 4.6.11 (Oct 2, 2008) ============================ Enhancement: ------------ 1. Added single ISR/multiple DPC support in MSIX mode for fallback purpose. BCM5706/08 Firmware v4.6.8 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037612 5709: connection timed out when running a bi-dir sockdie stress and offloadstress test Fix: (COM) When RV2P drop a packet partially or completely, COM would misinterpret the packet as OOO. We don't need to be alarmed by that. 2. Problem: Cont00037652 Xinan TOE: Failure in TCP_Sack (Sparta) test Fix: (COM) Need to schedule tx whenever send window is updated. BCM5709 Firmware v4.6.8 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037612 5709: connection timed out when running a bi-dir sockdie stress and offloadstress test Fix: (COM) When RV2P drop a packet partially or completely, COM would misinterpret the packet as OOO. We don't need to be alarmed by that. 2. Problem: Cont00037652 Xinan TOE: Failure in TCP_Sack (Sparta) test Fix: (COM) Need to schedule tx whenever send window is updated. Version 4.6.10 (Sept 29, 2008) ============================== Bug Fixes: ---------- 1. Problem: cq#37487 Checked driver broke in bxvbda!l4_abort+0x2a8 during vbd enable/ disable test while passing traffic. Cause: The driver checks to make sure all the generic buffers are returned before disabling the bus driver. Fix: The bus driver needs to wait for all the generic buffers to be returned before completing the unbind operation. Enhancement: ------------ 1. Added MSIX/MSI support for 5709 chip. BCM5706/08 Firmware v4.6.7 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037389 5709: TXP is hitting an ASSERT due to data after FIN Fix: (TXP) Won't assert data after FIN in the tx side, drop it on the rx side instead. Enhancement: ------------ 1. Request: (TXP, CP and COM) Support New LH ChimneyOffload sparta test t64 and t79 when peer advertises sub-MSS window. BCM5709 Firmware v4.6.7 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037389 5709: TXP is hitting an ASSERT due to data after FIN Fix: (TXP) Won't assert data after FIN in the tx side, drop it on the rx side instead. Enhancement: ------------ 1. Request: (TXP, CP and COM) Support New LH ChimneyOffload sparta test t64 and t79 when peer advertises sub-MSS window. Version 4.6.9 (Sept 17, 2008) ============================= Bug Fixes: ---------- 1. Problem: cq#37300 Installing the VBD causes the system to reboot. Cause: The driver is calling KeAcquireSpinLockAtDpcLevel from the wrong IRQL. Enhancement: ------------ 1. Flow Control: Adjusted flow control trip points as according to the MTU size selected. BCM5706/08 Firmware v4.6.6 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037344 Win2k3 Sparta failure occurs on tcp_statenonconformance_CLOSE_WAIT and tcp_statenonconformance_LAST_ACK Fix: (RXP) In the two sparta failures, A SYN is transmitted after FIN. A check has been added recently in the FW to drop any packet after FIN. To fix this, we will allow any 0 length packet after FIN. Enhancement: ------------ 1. Request: (CP and COM) Support New LH ChimneyOffload sparta test t52, t57, t58, t72 and t73. BCM5709 Firmware v4.6.6 ----------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: CQ36780 iSCSI Offload: Invalid error opcode for the max tcp retx iSCSI kcqe Fix (COM): Fixed the opcode Version 4.6.8 (Sept 10, 2008) ============================= BCM5706/08 Firmware v4.6.4 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: A change was checked in by mistake in last release Fix: (COM) Undo change-list 55291 BCM5709 Firmware v4.6.4 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: A change was checked in by mistake in last release Fix: (COM) Undo change-list 55291 Version 4.6.7 (Sept 8, 2008) ============================ Fixes: ------ 1. Problem: cq#36907 iSCSI device was enumerated even when the iSCSI license was not present. Cause: The driver did not taken into account the iSCSI license information when enumerating the iSCSI PDO. Enhancement: ------------ 1. CQ#36727: Disable WOL advertisement if VAUX is not present. BCM5706/08 Firmware v4.6.3 -------------------------- 1. Problem: iSCSI NOP-Out response contains garbage data bits in the header byte Fix: (TXP) Fixed by masking out the unused bits before sending the data to the line. ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037145 Occasionally, 5709 fails Sparta TCP_Nagle test. Fix: (CP, TXP) Changed the TDBC cache line threshold dynamically to prevent tcp nagle algorithm to exit prematurely. 2. Problem: Cont00036794 and 37051 When OOO FIN is detected, tcp state is not updated correctly. Fix: (RXP, COM) OOO FIN state was not properly reset when OOO FIN is processed, that caused incorrect tcp state transition. 3. Problem: Cont00036993 Occasionally, we are seeing data completion after FIN and that got misinterpreted as lack of Generic buffer. Fix: (RXP, COM) The problem is caused by rx data completion after FIN. There are several reasons for that. 1. The recent OOO FIN feature has a bug that cause incorrect state transition could lead to premature Remote Disconnect kcqe 2. We have observed the tx side is transmitting data after FIN. For now, we work around it by dropping all data after FIN 3. On the rx side, we will not send remote disconnect until the whole FIN packet is placed. BCM5709 Firmware v4.6.3 ----------------------- ***** iSCSI offload ***** Bug Fixes: ---------- 1. Problem: iSCSI NOP-Out response contains garbage data bits in the header byte Fix: (TXP) Fixed by masking out the unused bits before sending the data to the line. ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: Cont00037145 Occasionally, 5709 fails Sparta TCP_Nagle test. Fix: (CP, TXP) Changed the TDBC cache line threshold dynamically to prevent tcp nagle algorithm to exit prematurely. 2. Problem: Cont00036794 and 37051 When OOO FIN is detected, tcp state is not updated correctly. Fix: (RXP, COM) OOO FIN state was not properly reset when OOO FIN is processed, that caused incorrect tcp state transition. 3. Problem: Cont00036993 Occasionally, we are seeing data completion after FIN and that got misinterpreted as lack of Generic buffer. Fix: (RXP, COM) The problem is caused by rx data completion after FIN. There are several reasons for that. 1. The recent OOO FIN feature has a bug that cause incorrect state transition could lead to premature Remote Disconnect kcqe 2. We have observed the tx side is transmitting data after FIN. For now, we work around it by dropping all data after FIN 3. On the rx side, we will not send remote disconnect until the whole FIN packet is placed. Version 4.6.6 (Aug 20, 2008) ============================ BCM5706/08 Firmware v4.6.2 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: TOE stack doesn't process valid ack in OOO segments that are within the window per RFC 793. Fix: (RXP, COM) If the sequence number of the OOO segment is within the window and ACK sequence number is valid, TOE stack will process the new ACK sequence number. 2. Problem: FW needs to keep track of Max RT and Total RT to pass new Retransmit Sparta tests. Fix: (CP, COM) Keep track of max and total RT in FW and pass total RT to host upon upload. 3. Problem: For LSO, we were clearing IP header checksum based on a hardcoded offset in a frame. In case of VLAN/SNAP, the offset could be different. Fix: (TPAT) Clearing IP header checksum relative to the end of L2 header. 4. Problem: Per MSFT LH sparta requirement, we should stop nagle if there is only one send_request in the send queue. This is a slight deviation from RFC 896. This deviation is causing failure in the new SillyWindow Sparta test. Fix: (TXP) It appears this deviation has been taken out in latest Sparta tests. We are taking that out too in FW. 5. Problem: Cont00036938 Some instructions were taken out in COM to conserve code memory, later found out 5706 won't allow it. Most changes were undone but missed one of the kcqe message (i.e. SEQ_UPDATE). Fix: (COM) Undo code optimization change. BCM5709 Firmware v4.6.2 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: TOE stack doesn't process valid ack in OOO segments that are within the window per RFC 793. Fix: (RXP, COM) If the sequence number of the OOO segment is within the window and ACK sequence number is valid, TOE stack will process the new ACK sequence number. 2. Problem: FW needs to keep track of Max RT and Total RT to pass new Retransmit Sparta tests. Fix: (CP, COM) Keep track of max and total RT in FW and pass total RT to host upon upload. 3. Problem: For LSO, we were clearing IP header checksum based on a hardcoded offset in a frame. In case of VLAN/SNAP, the offset could be different. Fix: (TPAT) Clearing IP header checksum relative to the end of L2 header. 4. Problem: Per MSFT LH sparta requirement, we should stop nagle if there is only one send_request in the send queue. This is a slight deviation from RFC 896. This deviation is causing failure in the new SillyWindow Sparta test. Fix: (TXP) It appears this deviation has been taken out in latest Sparta tests. We are taking that out too in FW. Enhancement: ------------ 1. Request: (COM) VLAN tag needs to be forwarded to MCP when NCSI is active and hardware is setting up to strip VLAN. Otherwise, NCSI can't insert the VLAN tag back to the packet as it passes on the packets to BMC. Version 4.6.5 (Aug 3, 2008) =========================== Fixes: ------ 1. Problem: CQ#35540, #35792, #35793 Running BACS diagnostic test overnight could cause system with remote phy enabled to hang. Cause: There is a locking issue that was introduced in vbd v4.4.4. The macro REG_RD_IND cannot be called from the ISR because it could lead to a deadlock situation. Fix: Modified the call to REG_RD_IND in the ISR to use directly register access. 2. Problem: CQ#35777 Enabling/disabling the iSCSI device while the NDIS device is active could cause the driver to break. Cause: There is a bug in s_list_add_tail routine where if one of the list is empty, the add operation will lead to inconsistent list state. 3. Problem: BSOD while updating miniport. Cause: There are cases that reference count of the client block is decremented even though the client block pointer is not initialized. 4. Problem: Chariot reported Error 245 when running it with large transmit I/O's (greater than 1MB) and sockdie stress at the same time. TOE toggling must also be running in the background. Cause: A transmit I/O could be completed with 0 bytes transferred even though it is partially completed. For this condition to occur a portion of the transmit I/O is completed with success and immediately afterward the connection gets uploaded (as a result of TOE toggling). This conditional is very rare. 5. Problem: Chariot reported Error 245 when running it with large receive I/O's (greater than 10MB) and sockdie stress at the same time. TOE toggling must also be running in the background. Cause: A receive I/O could be completed with 0 bytes transferred even though it is partially completed. 6. Problem: High interrupt count is observed on BCM5709 when RSS is enabled. Cause: The driver may intermittently not acknowledge interrupts associated with the RSS receive queue. BCM5706/08 Firmware v4.6.1 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Sparta issues: TCP_Urgent_TOE Fix: (RXP, COM) Per input from Qasim of MS, if both SYN and URG bit is present, Sparta test expects us to upload the connection and then indicate the urgent packet to the stack via non-offload path for the stack to deal with it. Thus, we need to ignore tcp SYN. 2. Problem: In-order packet may be placed in generic buffer even there is posted buffer available in single island mode. Fix: (RV2P) Scenario example: Before MQ update: gen_start_seq =hostseq = 0x1000, io_seq = 0x1100, hole_seq = 0x1200, end_seq = 0x1300 After After MQ update of 0x200 bytes: gen_start_seq =0x1100, hostseq = 0x1200, io_seq = 0x1100, hole_seq = 0x1200, end_seq = 0x1300 Any packets with seq between 0x1100 and 0x1200 will be placed in generic buffer instead of posted buffer instead. gen_start_seq should have been updated to 0x1200 instead because seq between 0x1100 is not a valid gen_start_seq. 3. Problem: Upon send window update, we don't schedule transmission all the time. Fix: (COM) Always schedule tx pipeline when activate retransmission in send window update. BCM5709 Firmware v4.6.1 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Sparta issues: TCP_Urgent_TOE Fix: (RXP, COM) Per input from Qasim of MS, if both SYN and URG bit is present, Sparta test expects us to upload the connection and then indicate the urgent packet to the stack via non-offload path for the stack to deal with it. Thus, we need to ignore tcp SYN. 2. Problem: In-order packet may be placed in generic buffer even there is posted buffer available in single island mode. Fix: (RV2P) Scenario example: Before MQ update: gen_start_seq =hostseq = 0x1000, io_seq = 0x1100, hole_seq = 0x1200, end_seq = 0x1300 After After MQ update of 0x200 bytes: gen_start_seq =0x1100, hostseq = 0x1200, io_seq = 0x1100, hole_seq = 0x1200, end_seq = 0x1300 Any packets with seq between 0x1100 and 0x1200 will be placed in generic buffer instead of posted buffer instead. gen_start_seq should have been updated to 0x1200 instead because seq between 0x1100 is not a valid gen_start_seq. 3. Problem: Upon send window update, we don't schedule transmission all the time. Fix: (COM) Always schedule tx pipeline when activate retransmission in send window update. Version 4.6.4 (Jun 3, 2008) ============================ Fixes: ------ 1. Problem: When 5706/5708/5709 adapters are disabled in the system and a bug check happens due to error of other components, the vbd chip crash dump caused another bug check during system memory dump process. Cause: Even the adapters are disabled in the system, the vbd driver still get loaded to the memory and its bug check callback is registered to the OS. When a bug check happens, the callback get calls and device handle is NULL. Fix: If device handle is NULL, chip crash dump should not be allowed to continue. Enhancement: ------------ 1. CQ#35563: Add support for BCM5716. BCM5706/08 Firmware v4.4.17 --------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: CQ34909 VBD break bxvbda!get_packets_rcvd running Iometer, Chariot and Sockdie Stress Fix: (RV2P) When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) mode in rbdc, rx BD got overwritten some of the time. RV2P needs to keep track of transition between the two modes and acts accordingly. P1 also needs to wait for P2 to finished the NOP cmd. BCM5709 Firmware v4.4.21 ------------------------ ***** TCP offload/L2 ***** Bug Fixes: ---------- 1. Problem: CQ35612 system breaks at bxvbda!rx_indicate_gen when running C-NIC stress test. Fix: (RV2P) L4 FLUSH is actually shared between L4 and iSCSI. RV2P need to check CTX type before engaging fix for CQ35094. Or erroneous L4 commands with iSCSI CID may be passed down to COM. Version 4.6.2 (May 20, 2008) ============================ Fixes: ------ 1. Problem: CQ#33827, #35308 Error Event ID 56 appears in the System Event Log in some machines during driver installation on W2K8. Cause: The device capabilities of the child device has the UniqueID set to TRUE which result in the same PnP device ID for the two BCM5709 ports. UniqueID is propagated from the parent device and it set by the PCI bus driver. Fix: Always set the UniqueID to FALSE in the child's device capabilities. Version 4.6.1 (May 13, 2008) ============================ Fixes: ------ 1. Problem: During tcp connection upload, driver is not updating the total_rt parameter of the tcp delegated state variables. Cause: Driver totally ignore the total_rt parameter. Fix: Driver should derive the total_rt parameter value based on the retx_num srtt, rttvar, and retx timeout delta. Enhancement: 1. CQ#34894 - Incorporate the ability to search for iBFT in low memory to determine if the device is an iSCSI boot device. 2. After a path update, driver should also issue tcp updates to all offloaded connections that reference to this path in case MSS value is updated during the path update. 3. CQ#33620 - Move to the latest WDK (6001.18000). 4. Use the latest WDF Co-installer (WDF 1.7). BCM5706/08 Firmware v4.6.0 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: CQ34767 linux bnx2 NCSI traffic plus jumbo frames on SUT cause kernel panic Fix: (RV2P) One register for reading context was not properly initialized in jumbo frame mode. Thus, wrong context was read in when more than one CIDs are used. 2. Problem: CQ34909 VBD break bxvbda!get_packets_rcvd running Iometer, Chariot and Sockdie Stress Fix: (RV2P) When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) mode in rbdc, rx BD got overwritten some of the time. RV2P needs to keep track of transition between the two modes and acts accordingly. P1 also needs to wait for P2 to finished the NOP cmd. 3. Problem: CQ34889 5709: connection timed out when running multiple adapter stress test (RBDC hang) Fix: (RV2P) Since hostbdidx locates at a lower address than hostbseq, there is a small time window that if RV2P read hostbdidx and hostbseq while Mailbox updates them. Hostbdidx can have a stale value and it will be behind hostbseq. As a workaround, we can reload hostbdidx from context. It might already be way ahead of hostbseq, but that's okay. Enhancement: 1. Request: (COM, RV2P for LH sparta test) During TCP reassembly when some OOO data are in generic buffer, TOE stack should wait till the data in generic buffer are copied to posted buffer before sending out the ACK when hole is filled providing that posted buffer is available at that time. This avoids sending a ACK with reduce window then immediately follows with a window update after all the generic buffer data are copied to post buffer. BCM5709 Firmware v4.6.0 ------------------------ ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: CQ34889 5709: connection timed out when running multiple adapter stress test (RBDC hang) Fix: (RV2P) Since hostbdidx locates at a lower address than hostbseq, there is a small time window that if RV2P read hostbdidx and hostbseq while Mailbox updates them. Hostbdidx can have a stale value and it will be behind hostbseq. As a workaround, we can reload hostbdidx from context. It might already be way ahead of hostbseq, but that's okay. 2. Problem: CQ34909 VBD break bxvbda!get_packets_rcvd running Iometer, Chariot and Sockdie Stress Fix: (RV2P) When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) mode in rbdc, rx BD got overwritten some of the time. RV2P needs to keep track of transition between the two modes and acts accordingly. P1 also needs to wait for P2 to finished the NOP cmd. Enhancement: 1. Request: (COM, RV2P for LH sparta test) During TCP reassembly when some OOO data are in generic buffer, TOE stack should wait till the data in generic buffer are copied to posted buffer before sending out the ACK when hole is filled providing that posted buffer is available at that time. This avoids sending a ACK with reduce window then immediately follows with a window update after all the generic buffer data are copied to post buffer. 2. Request: (CP) Reduce the timer ctx polling period to 500us instead of core freq rate. Slower polling period reduce un-necessary PCI-E traffic across the bus. Version 4.6.0 (Apr 30, 2008) ============================ Fixes: ------ 1. Problem: CQ#34975 The device shows the link is disconnected even when the cable is plugged in. Cause: The problem occurs when management firmware is enabled. There is a bug in the driver where it does not respond to the firmware knock-knock event. Because of this the firmware thinks it is running in an OS absent mode. In this mode it owns the PHY. Version 4.4.12 (Apr 24, 2008) ============================= BCM5706/08 Firmware v4.4.14 --------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: CQ34483, CQ34825. When RSS and BMC(management) are enabled, adapter could loss network connectivity when receiving multi-cast/broadcast packets to both host ip and BMC ip simultaneously. Fix: (RXP) In RSS multi-cast/broadcast path, RXP must set indication to COM so it forwards the management traffic to MCP. Otherwise, these packets are not getting free up and resulted in mbuf leak. BCM5709 Firmware v4.4.14 ------------------------ ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: CQ34483, CQ34825 When RSS and BMC(management) are enabled, adapter could loss network connectivity when receiving multi-cast/broadcast packets to both host ip and BMC ip simultaneously. Fix: (RXP) In RSS multi-cast/broadcast path, RXP must set indication to COM so it forwards the management traffic to MCP. Otherwise, these packets are not getting free up and resulted in mbuf leak. Version 4.4.11 (Apr 20, 2008) ============================= Fixes: ------ 1. Problem: CQ#34012 Packet size is 12 bytes too long with RFC 1323 timestamp enabled. Cause: After driver is taking account for the timestamp tcp option when derive the MSS value from the path MTU, it then comparing this MSS value with remote_MSS value. If remote_MSS value is less, then calculated MSS value is overwritten by remote_MSS. The correct thing to do is to compare with the remote_MSS value first, then take account for tcp option size. Enhancement: 1. Don't invoke VBD chip crash dump feature when iSCSi boot is present. BCM5706/08 Firmware v4.4.13 --------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: CQ34123 LH: xinan times out when running bi-dir sockdie stress and offloadstress due to TDMA stall. Fixes: (CP) When completing the upload, we should send out a delist command to TSCH to make sure the CID is delist in TSCH task memory. Otherwise, it could erroneous start the connection while the ctx is being initialized for new connection with the same old cid. BCM5709 Firmware v4.4.13 ------------------------ ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: RV2P code hangs on when running on 5709 A1. Fixes (RV2P): In last release, the fix for Cont00033290 should only apply to 5706 and 5709 B/C parts. The fix uses a register that is needed by 5709 A1 code. Compiler switch is needed for this fix. 2. Problem: L2 CRC error when running loopback test in Xdiag. Fixes (TXP): Set ONE_CHANNEL bit rbdc_control reg at init. 3. Problem: CQ34123 LH: xinan times out when running bi-dir sockdie stress and offloadstress due to TDMA stall. Fixes: (CP) When completing the upload, we should send out a delist command to TSCH to make sure the CID is delist in TSCH task memory. Otherwise, it could erroneous start the connection while the ctx is being initialized for new connection with the same old cid. Version 4.4.10 (Apr 15, 2008) ============================= BCM5706/08 Firmware v4.4.12 --------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00033290 IPv6 Offload: connection timed out when running a bi-dir offloadstress test. Fixes (RV2P): In last release, the fix didn't work correctly because HW requires at least one instruction after switch bank for local context before reading it. BCM5709 Firmware v4.4.12 ------------------------ ***** iSCSI offload ***** Bug Fixes: 1. Problem: Cont00034768 able to connect more iscsi targets than reserved in BACS in function 1. Fix: shmem pointer now calculated according to the Xinan function number (0/1) ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00033290 IPv6 Offload: connection timed out when running a bi-dir offloadstress test. Fixes (RV2P): In last release, the fix didn't work correctly because HW requires at least one instruction after switch bank for local context before reading it. Version 4.4.9 (Apr 11, 2008) ============================ Enhancements: ============ 1. Ensure the number of connections offloaded and offload pending does not exceed the maximum offload capacity. W2K3 does not seem to honor maximum offload capacity that we report to NDIS. BCM5706/08 Firmware v4.4.11 --------------------------- ***** iSCSi/TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00034590, 34575, 34664, 34578 5709: Received invalid tcp_rcv_win_seq when running sockdie suite & iSCSI Iometer traffic. system breaks while runing sockdie-data verify for TOE and iomonkey for iscsi in ipv6 environment. Lost network connectivity over one port while running Sockdie Suite and iSCSI traffic iSCSI digest error observed in xdiag setup. 5708: System assert running while running sockdie suite and iSCSI traffic through Iometer. Fixes (RV2P): A bug was introduced iSCSI RV2P FW in FW 4.4.6. It causes RDMA ftq message corruption in stressful conditions. 2. Problem: Cont00033290 IPv6 Offload: connection timed out when running a bi-dir offloadstress test. Fixes (RV2P): L4 Post MQ message occasionally arrives to RV2P after the L4 Place message. Firmware fix is put in to do an actual read instead of pre-read to avoid P1 from preempting P2 in reading BD of the same CID. BCM5709 Firmware v4.4.11 ------------------------ ***** iSCSi/TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00034590, 34575, 34664, 34578 5709: Received invalid tcp_rcv_win_seq when running sockdie suite & iSCSI Iometer traffic. system breaks while runing sockdie-data verify for TOE and iomonkey for iscsi in ipv6 environment. Lost network connectivity over one port while running Sockdie Suite and iSCSI traffic iSCSI digest error observed in xdiag setup. 5708: System assert running while running sockdie suite and iSCSI traffic through Iometer. Fixes (RV2P): A bug was introduced iSCSI RV2P FW in FW 4.4.6. It causes RDMA ftq message corruption in stressful conditions. 2. Problem: Cont00033290 IPv6 Offload: connection timed out when running a bi-dir offloadstress test. Fixes (RV2P): L4 Post MQ message occasionally arrives to RV2P after the L4 Place message. Firmware fix is put in to do an actual read instead of pre-read to avoid P1 from preempting P2 in reading BD of the same CID. Version 4.4.8 (Arp 9, 2008) =========================== Fixes: ------ 1. Problem: CQ#34553 User can disable the iSCSI device which is also used as the boot device. Cause: The bus driver always sets the NDIS PDO to NotDisableable when the iSCSI and NDIS devices are present regardless of which device is the boot device. 2. Problem: CQ#34581 The driver could hit an assertion in reload_tx_bseq. Cause: The driver did not post all the send_unack data when the connection gets offload. All the send_unack data must be present in the bd chain. 3. Problem: CQ#34625 VBD 4.4.7 Driver Installation Error and BSOD occurs for NXII device in W2K. Cause: Some of the Kernel API functions used in the new chip crash dump feature are not available for W2K. 4. Problem: CQ#34671 Remote PHY flow control options are not consistent with the NDIS miniport flow control options. Fix: Change the VBD inf so the remote phy flow control options are consistent with the NDIS miniport. BCM5706/08 Firmware v4.4.10 --------------------------- ***** iSCSI offload ***** Bug Fixes: 1. Problem: RV2P hangs in iSCSi path because it has no more BD to place all the data. Fix: Flush the SGL from the RBDC in case of middle of PDU when destroy connection. ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00034554 System breaks at bxvbdx!disconnect_comp+0x1df when running sockdie stress and offloadstress. There is a small window period between upload init and upload request where TOE stack didn't send tx completions. Fixes (COM): Allowed sending of TX completions in the period between upload init and upload request. 2. Problem: OOO FIN broke due to a change for Sparta in 4.4.5. Fixes (RXP): Set L4_OPAQUE_FLAGS_REQ_UPLOAD bit in vp.opaque_flags for OOO FIN. 3. Problem: KeepAlive Ack detection code is mistakenly get optimized out due to changes 4.4.9 and cause KA timer not getting reset properly. Fixes: (RXP) Put back the keepalive ack detection mechanism. Enhancement: 1. Request: RXP code space is getting too low. changes: (RXP) Optimize rss_workaround routine to conserve space. BCM5709 Firmware v4.4.10 ------------------------ ***** iSCSI offload ***** Bug Fixes: 1. Problem: RV2P hangs in iSCSi path because it have no more BD to place all the data. Fix: Flush the SGL from the RBDC in case of middle of PDU in destroy connection. 2. Problem: TXP dead loops when processing ftq with iSCSi CID. Fix: (CP) Initialized TXP and TPAT num_of_ccells according to _cp_hsi and not according to KQWE. ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00034554 System breaks at bxvbdx!disconnect_comp+0x1df when running sockdie stress and offloadstress. There is a small window period between upload init and upload request where TOE stack didn't send tx completions. Fixes (COM): Allowed sending of TX completions in the period between upload init and upload request. 2. Problem: OOO FIN broke due to a change for Sparta in 4.4.5. Fixes: (RXP) Set L4_OPAQUE_FLAGS_REQ_UPLOAD bit in vp.opaque_flags for OOO FIN. 3. Problem: TOE clears DF bit in each TX packet and could lead to fragmentation in VPN channel. Fixes: (TXP) Sets DF bit in every TOE packets. Enhancement: 1. Request: RXP code space is getting low. Changes: (RXP) Optimize rss_workaround routine to conserve space. 2. Request: Expose iSCSi context and pg context map to host via CP HSI so Linux bnx2 driver can use them. Changes: (cp) Added variables iscsi_ctx_map and pg_ctx_map to support this. Version 4.4.7 (Mar 27, 2008) ============================ Fixes: ------ 1. Problem: CQ#34289 The driver could break when coming out of S4. Cause: The break occurs because the tx completion index in the status block is bigger than the producer index written by the driver. Coming out of S4, the driver issues a chip reset but some of the L2 context fields do not get re-initialized to zero's. As a result some of the fields in the command cell are stale. Fix: On a chip reset, the driver will zero out the backing store in host memory. Enhancements: 1. Added preliminary support of chip crash dump feature. BCM5706/08 Firmware v4.4.9 -------------------------- ***** iSCSI offload ***** Bug fixes: 1. Problem: CQ34284 Windows iSCSI Offload: Xinan - BSOD occurs while running iSCSI scripts test6_4.pl (Data digest error test) Fixes: Fixed race between COM and RXP, both changing the conn_flags_state context variable. ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00034460 Win2k3 Sparta TCP_StateConformance test fails Fixes: (RXP) It was supposed to be resolved in 4.4.8. A pair of parentheses were missing to enforce C precedence. Enhancement: 1. Request: Make TCP URGENT handling comply to latest LH SPARTA requirement. Changes: (RXP, COM) Re-spin TCP URGENT handling mechanism. BCM5709 Firmware v4.4.9 ----------------------- ***** iSCSI offload ***** Bug fixes: 1. Problem: CQ34284 Windows iSCSI Offload: Xinan - BSOD occurs while running iSCSI scripts test6_4.pl (Data digest error test) Fixes: Fixed race between COM and RXP, both changing the conn_flags_state context variable. ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: Cont00034460 Win2k3 Sparta TCP_StateConformance test fails Fixes: (RXP) It was supposed to be resolved in 4.4.8. A pair of parentheses were missing to enforce C precedence. Enhancement: 1. Request: Make TCP URGENT handling comply to latest LH SPARTA requirement. Changes: (RXP, COM) Re-spin TCP URGENT handling mechanism. Version 4.4.6 (Mar 24, 2008) ============================ Fixes: ------ 1. Problem: CQ#34154 Shutdown causes a crash on W2K. Cause: When iSCSI PDO is enumerated, the driver will call WdfDeviceInitSetPowerNotPageable. This call will cause W2K to crash. There could be an issue with KMDF library running on W2K. Fix: Since iSCSI is not supported on W2K, the bus driver will not enumerate the iSCSI PDO. Enhancements: 1. CQ#34206 - Add support for additional devices in the inf file. 2. Log bind failure to the event viewer. BCM5706/08 Firmware v4.4.8 -------------------------- ***** iSCSI offload ***** Enhancement: 1. Request: Initialize Firmware KWQ consumer index during driver KWQ initialization Bug fixes: 1. Problem: Cont00033830 - Xinan - Chariot 0245 Error running HPThroughput and Iometer to iSCSI luns simultaneously Cont00033881 - Xinan: System becomes unresponsive running Iometer, Chariot HPTput & SockdieStress Cont00033866 - Xinan: NIC stops responding after running Sockdie Stress and Chariot HP Throughput Fixes: (RV2P) When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) mode in rbdc, rx BD got overwritten some of the time. RV2P needs to keep track of transition between the two modes and acts accordingly. ***** TCP offload/L2 ***** Bug fixes: 1. Problem: Minor bug in comparing Seq Num. Fixes: (COM) Change < to SEQ_LT() in congestion ctrl code. 2. Problem: TOE stack receives a segment with TCP timestamp option and TsValue of 0. It then receives a segment with TsValue of 0x80000000 and accepts the second segment by ACKing it even though 0x80000000 < 0. Fixes: (RXP) Removed erroneus TsValue of 0x80000000 check rule. 3. Problem: W2K3 Sparta failed in StateNonConformance and ZeroWindow at ver 4.4.7. Fixes: (RXP) Selectively perform the change introduced in version 4.4.7. BCM5709 Firmware v4.4.8 ----------------------- ***** iSCSI offload ***** Enhancement: 1. Request: Initialize Firmware KWQ consumer index during driver KWQ initialization. Bug Fixes: 1. Problem: HW bug prevents the use of CIDs 0x3800 - 0x3C00 in iSCSI and TOE connections. Fixes: (CP) Reduced allowed iSCSI CID range to 0x2100 - 0x3800 to skip the problem range. 2. Problem: Cont00033830 - Xinan - Chariot 0245 Error running HPThroughput and Iometer to iSCSI luns simultaneously Cont00033881 - Xinan: System becomes unresponsive running Iometer, Chariot HPTput & SockdieStress Cont00033866 - Xinan: NIC stops responding after running Sockdie Stress and Chariot HP Throughput Fixes: (RV2P) When transitioning between PTE (i.e.iSCSI) to BD Index (i.e. L4/L2) mode in rbdc, rx BD got overwritten some of the time. RV2P needs to keep track of transition between the two modes and acts accordingly. ***** TCP offload/L2 ***** Bug fixes: 1. Problem: Cont00034261 - 5709 fails Sparta TCP_OutOfOrder test script Fixes: (COM) Took out a check for UPLOAD REQUEST for OOO in last release. Need to put it back in. 2. Problem: Minor bug in comparing Seq Num. Fixes: (COM) Change < to SEQ_LT() in congestion_ctrl code. 3. Problem: TOE stack receives a segment with TCP timestamp option and TsValue of 0. It then receives a segment with TsValue of 0x80000000 and accepts the second segment by ACKing it even though 0x80000000 < 0 Fixes: (RXP) Removed errenous TsValue of 0x80000000 check rule. 4. Problem: W2K3 Sparta failed in StateNonConformance and ZeroWindow at version 4.4.7. Fixes: (RXP) Selectively perform the change introduced in version 4.4.7. 5. Problem: When L4 buffer is posted immediately before requesting upload, the upload request reached RV2P before the mail event. That causes RV2P to drop the L4 buffer post. Fixes: (CP) According to LSI, that is indeed possible for 5709. The firmware need to compare the hostbseq in the context to the one specified in wqe. We need to reject the upload request if it does not match. Version 4.4.5 (Mar 9, 2008) =========================== Fixes: ------ 1. Problem: CQ#33835, #33794 Chariot reports Error 202 when running the High Performance Throughput test script configured to transfer large buffers (1MB or larger). Problem is seen when TOE is being toggled. Cause: When a connection is uploaded, the driver may not set the correct completion status on a buffer if only part of it is present in the BD chain. The completion status should be UPLOAD_IN_PROGRESS instead of SUCCESS. BCM5706/08 Firmware v4.4.7 -------------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: CQ34142 w2k8 x64: system break when running bidirectional offload stress test on both Xinan ports. Fixes: (RXP, COM) When transition to CLOSING state, TOE stack shouldn't request upload until it reaches TIME_WAIT state. When receive a disc request and an abort request back to back, COM should complete the disc request with status SC_CONNECTION_ABORT. BCM5709 Firmware v4.4.7 ----------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: CQ34142 w2k8 x64: system break when running bidirectional offload stress test on both Xinan ports. Fixes: (RXP, COM) When transition to CLOSING state, TOE stack shouldn't request upload until it reaches TIME_WAIT state. When receive a disc request and an abort request back to back, COM should complete the disc request with status SC_CONNECTION_ABORT. BCM5706/08 Firmware v4.4.6 -------------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: CQ34123 TDMA stalled when running bi-dir sockdie stress and offload stress test. Apparently, TXP is writing a ftq message with TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT bit set to TDMA even when host didn't post any bytes to send. This bit will cause TDMA to stall when fetching BD since BD is not in the cache or in the host. Fix:(TXP) Reset TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT in ftq message when host_bseq is 0. Enhancement: 1. Request: Support OOO FIN. Changes: (RXP, RV2P, COM) OOO FIN algorithm added and it is compliance to LH sparta from initial testing. This feature is currently defaulted to off until more stress testing are done. 2. Request: CQ#31456 Change "Jumbo MTU" to "Jumbo Packet" for the description of the jumbo frame configuration. BCM5709 Firmware v4.4.6 ----------------------- ***** iSCSI offloa ***** Enhancement: 1. Added BACS and licensing support to enforce max iSCSI and TOE connections 2. Increased max number of iSCSI connections from 64 to 128 ***** TCP offload/L2 ***** Bug fixes: 1. Problem: CQ34123 TDMA stalled when running bi-dir sockdie stress and offload stress test. Apparently, TXP is writing a ftq message with TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT bit set to TDMA even when host didn't post any bytes to send. This bit will cause TDMA to stall when fetching BD since BD is not in the cache or in the host. Fix:(TXP) Reset TXPF_TDMAQ_FLAGS_FLAGS_LAST_PKT in ftq message when host_bseq is 0. Enhancement: 1. Added BACS and licensing support 2. Request: Support OOO FIN. Changes: (RXP, RV2P, COM) OOO FIN algorithm added and it is compliance to LH sparta from initial testing. This feature is currently defaulted to off until more stress testing are done. Version 4.4.4 (Mar 4, 2008) =========================== Fixes: ------ 1. Problem: CQ#32753 PCI-e slot power does not turn off after NDIS driver is stopped. Cause: The bus driver is reporting to the device manager that the child devices are Eject Supported and Removable in the device capabilities structure. Fix: The bus driver needs to report that the child device is not EjectSupported and Removable. 2. Problem: CQ#33978 Checked driver breaks when running sockdie on Xinan. Cause: There is an assertion in the driver that checks for valid lm_tcp_buffer_t flag on completion. This assertion is not always valid. Fix: Removed the assertion. 3. Problem: CQ33831 Low Network Performance when Running Chariot HPT Test Script with Socket I/O Size of 1MB and Greater. Cause: With Large I/O size, it takes up too many RX BDs in the RX BD chain and causes very slow AppScan performance by RDBC which means very slow throughput during receive. Fix: Restrict l4_rx_bd_page_cnt to 1 page( 255 BDs) for RX BD chain. In addition, l4_tx_bd_page_cnt is restricted to 1 as well to conserve runtime memory. BCM5706/08 Firmware v4.4.5 -------------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: CQ34032 There is a racing condition where COM and TXP could update the tcp_state in the context at the same time and cause VBD to assert due to inconsistent tcp state value during upload. Fix: (COM) Added context lock protection so both COM and TXP can access the context atomically. 2. Problem: CQ34031 A bug was introduced few versions ago when trying to optimize the RV2P P1 code. In some occasions, the RV2PTQ is not popped properly. Fix: (RV2P) Undo that optimization change. BCM5706/08 Firmware v4.4.4 -------------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: When remote acknowledged the FIN, TOE stack didn't complete the pending disconnect request with SC_SUCCESS status in a corner case where TOE stack is requesting upload at the same time and causing VBD to assert. Fix: (COM) Complete the pending disconnect request with SC_SUCCESS in this corner case. Enhancement: 1. Request: Relax TCP nagle algorithm when a single BD with start and end bit holds more than MSS bytes. Changes: (TXP) Added detection of BD size during BD scan. If a BD with start and end bit holds more than MSS bytes. TCP Nagle algorithm will get large BD indication so it can decide whether to apply Nagle accordingly. 2. Request: Support VBD tx partial buffer posting when a large socket I/O size occupy more than the entire TX BD chain. Change: (TXP) Added support of tracking host tx buffer post based on TX_BD_FLAGS_SW_END bit instead of TX_BD_FLAGS_END bit in BD flag. 3. Request: Firmware must fail ipv6 offload attempt since 5706/8 doesn't support ipv6 offload. Change: (CP) Added ipv6 offload detection and firmware won't allow connection to be offloaded if detected ipv6. BCM5709 Firmware v4.4.5 ----------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: CQ34032 There is a racing condition where COM and TXP could update the tcp_state in the context at the same time and cause VBD to break due to inconsistent tcp state during upload. Fix: (COM) Added context lock protection so both COM and TXP can access the context atomically. 2. Problem: CQ34031 A bug was introduced few versions ago when trying to optimize the RV2P P1 code. In some occasions, the RV2PTQ is not popped properly. Fix: (RV2P) Undo that optimization change. BCM5709 Firmware v4.4.4 ----------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: When remote acknowledged the FIN, TOE stack didn't complete the pending disconnect request with SC_SUCCESS status in a corner case where TOE stack is requesting upload at the same time and causing VBD to assert. Fix: (COM) Complete the pending disconnect request with SC_SUCCESS in this corner case. Enhancement: 1. Request: Relax TCP nagle algorithm when a single BD with start and end bit holds more than MSS bytes. Changes: (TXP) Added detection of BD size during BD scan. If a BD with start and end bit holds more than MSS bytes. TCP Nagle algorithm will get large BD indication so it can decide whether to apply Nagle accordingly. 2. Request: Support VBD tx partial buffer posting when a large socket I/O size occupy more than the entire TX BD chain. Change: (TXP) Added support of tracking host tx buffer post based on TX_BD_FLAGS_SW_END bit instead of TX_BD_FLAGS_END bit in BD flag. Version 4.4.3 (Feb 18, 2008) ============================ Fixes: ------ 1. Problem: CQ#33688, #33844 Break in the driver verifier on the call to ObReferenceObjectByHandle. Cause: The break occurs because the thread handle passed to this call maybe invalid since the scope of the handle is only valid within the same process. The thread that calls ObReferenceObjectByHandle belongs to a different process than the thread that created the handle. Fix: Once a thread handle is created, ObReferenceObjectByHandle is called immediately on the same thread to create the object handle. 2. Problem: CQ#33086, #33676 Intermittent and explained failures could occur during driver load/unload test. Cause: Indirect register access is not protected with a spinlock. So reads and writes to the offset/data register pair are not atomic. This could lead to explained behavior. 3. Problem: CQ#33834 Check driver asserts when receiving larger I/Os on an offloaded connection. Cause: The assertion in the driver is not valid when tcp buffers are aborted when we receive a TCP FIN or a RESET. BCM5706/08 Firmware v4.4.3 -------------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: During retx, TOE appears to retransmit un-necessary ACKed packets. Fix: (COM) TOE stack should always rewind to the latest snd_una if snd_una > snd_nxt to avoid retx ACKed packets as the snd_una get updated from each new ACK arrives from the remote during retransmission. 2. Problem: CQ33290: IPv6 offload: connection timed out when running bi-dir offloadstress. Read data on one RBDC channel is passing read data on the other channel, which causes the Valid flags in the RBDC cache to become incorrect, and this leads to a stale BD being passed to RV2P. Fix: (RV2P) Firmware fix is put in RV2P P1 to avoid preempting P2 in reading BD of the same CID. RV2P version updated to be 2.4.0 3. Problem: TOE stack is not completing the pending disconnect request during connection upload in some cases causing MSFT LH stack to assert. Fix: (COM) Added disconnect request check prior to writing upload completion kcqes. TOE stack will complete any pending disconnect request with proper status code according to current TCP state. 4. Problem: When TOE stack updates the snd_una after remote ACKed the FIN, it didn't reset the DupAckCount if it is not 0. This causes LH MSFT stack to assert since it expects the DupAckCount to 0. Fix: (COM) Reset DupAckCount when TOE stack updates the snd_una after remote ACKed the FIN. BCM5709 Firmware v4.4.3 ----------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Problem: During retx, TOE appears to retransmit un-necessary ACKed packets. Fix: (COM) TOE stack should always rewind to the latest snd_una if snd_una > snd_nxt to avoid retx ACKed packets as the snd_una get updated from each new ACK arrives from the remote during retransmission. 2. Problem: CQ33290: IPv6 offload: connection timed out when running bi-dir offloadstress. Read data on one RBDC channel is passing read data on the other channel, which causes the Valid flags in the RBDC cache to become incorrect, and this leads to a stale BD being passed to RV2P. Fix: (RV2P) Firmware fix is put in RV2P P1 to avoid preempting P2 in reading BD of the same CID. RV2P version updated to be 2.4.0 3. Problem: TOE stack is not completing the pending disconnect request during connection upload in some cases causing MSFT LH stack to assert. Fix: (COM) Added disconnect request check prior to writing upload completion kcqes. TOE stack will complete any pending disconnect request with proper status code according to current TCP state. 4. Problem: When TOE stack updates the snd_una after remote ACKed the FIN, it didn't reset the DupAckCount if it is not 0. This causes LH MSFT stack to assert since it expects the DupAckCount to 0. Fix: (COM) Reset DupAckCount when TOE stack updates the snd_una after remote ACKed the FIN. Version 4.4.2 (Feb 8, 2008) =========================== Fixes: ------ 1. Problem: CQ#33560 Utilization bounces between <1% - 25% resulting in poor performance when running a single UDP stream. Cause: tx_comp_trig is too high for one direction tx traffic. 2. Problem: TCP delegated state variable dup_ack_count was not passed to the firmware when a connection offloads and the firmware does not pass the value back to the driver when a connection uploads. 3. Problem: Extremely large receive request could cause the chip to stall. Cause: Rv2p requires an entire receive request to be in BD chain. In other words the BD chain must have the END bit set otherwise it will stall. Fix: The driver will break the larger request install smaller requests. 4. Problem: CQ#33216 iSCSI stack does not have mechanism for handling STOP request. Fix: The bus driver will fail STOP_QUERY on the iSCSI PDO. Enhancement: 1. Reduce per-connection memory footprint for BD chain by 20k. 2. Call ObReferenceObjectByHandle to create thread object immediately after creating the thread handle in the call to PsCreateSystemThread. Currently we are calling ObReferenceObjectByHandle when the driver unloads which could pose problems related to driver verifier. BCM5706/08 Firmware v4.4.2 -------------------------- ***** iSCSi Offload ***** Fixes: Changed option2 RST flow in firmware to avoid a possible race and to send the driver a completion only after all the connection resources have been flushed from the chip. This change does not affect the HSI and is internal to firmware. ***** TCP offload/L2 ***** Bug fixes: 1. Problem: RV2P could drop in-order L4 packets even generic buffer is not completely used up. Fix: (RV2P) Implemented correct logic to do generic buffer comparison in RV2P. 2. Problem: CQ33744 - When RSS is enable, duplicate broadcast/multi-cast packets are seen when using software sniffer. Fix: (RXP) During RX, route broadcast/multi-cast packets to RSS rings only when RSS is enable and do not route packet to L2 ring. 3. Problem: CQ33727- Formatting a iSCSI target at 512 partition size will hang if TOE is enabled on SUT. With 32 block of 512 bytes IO size, host will post a buffer of 16384 bytes and this translated to 11 1460-byte packets and 1 324-bytes packet. Due to delay ack and tcp nagle mechanism, TOE stack will coalesce the 324-bytes packet until delay ack timeout. This greatly impacted the formatting speed. Fix: (TXP) Only apply tcp nagle algorithm to small buffer that is less than MSS. This is consistent with MSFT host stack behavior. 4. Problem: MSFT Stack will assert if TOE stack completed a pending disconnect request with ABORT status without indicate tcp abort afterward. Fix: (COM) TOE stack will complete the pending disconnect request with SUCCESS status while the connection is being uploaded. 5. Problem: RV2P hangs in Jumbo frame mode in BSD. Fix: (RV2P) Need to support BD page pointer at the end of BD page. Enhancement: 1. Request: Support estimation of TCP round trip delay time using tcp time stamp values when tcp time stamp option is enabled. Change: (RXP/COM) TOE receive path and tcp retransmission timeout. 2. Request: Re-implement previous change(see CQ#33580)that place the OOO packet to the generic buffer until generic buffer is totally used up. Change: (RV2P) TOE receive mode when host doesn't post enough receive buffer. 3. Request: Support different BD page size other than 4K only. Change: (RV2P) Allow Host to modify BD page size by passing parameters in RV2P code memory. 4. Request: Support processing of tcp delegate variable DupAckCount. Change: (CP/COM) At offload, TOE stack now accepts DupAckCount value from host. At upload, TOE stack pass up its own DupAckCount value back to host. BCM5709 Firmware v4.4.2 ----------------------- ***** iSCSi Offload ***** Fixes: 1. Fixed option 2 RST send: chip now doesn't write 3 redundant KCQEs (upload completion)as a reply to option 2 RST send request. ***** TCP offload/L2 ***** Bug fixes: 1. Problem: RV2P could drop in-order L4 packets even generic buffer is not completely used up. Fix: (RV2P) Implemented correct logic to do generic buffer comparison in RV2P. 2. Problem: CQ33744 - When RSS is enable, duplicate broadcast/multi-cast packets are seen when using software sniffer. Fix: (RXP) During RX, route broadcast/multi-cast packets to RSS rings only when RSS is enable and do not route packet to L2 ring. 3. Problem: CQ33727- Formatting a iSCSI target at 512 partition size will hang if TOE is enabled on SUT. With 32 block of 512 bytes IO size, host will post a buffer of 16384 bytes and this translated to 11 1460-byte packets and 1 324-bytes packet. Due to delay ack and tcp nagle mechanism, TOE stack will coalesce the 324-bytes packet until delay ack timeout. This greatly impacted the formatting speed. Fix: (TXP) Only apply tcp nagle algorithm to small buffer that is less than MSS. This is consistent with MSFT host stack behavior. 4. Problem: MSFT Stack will assert if TOE stack completed a pending disconnect request with ABORT status without indicate tcp abort afterward. Fix: (COM) TOE stack will complete the pending disconnect request with SUCCESS status while the connection is being uploaded. 5. Problem: RV2P hangs in Jumbo frame mode in BSD. Fix: (RV2P) Need to support BD page pointer at the end of BD page. Enhancement: 1. Request: Support estimation of TCP round trip delay time using tcp time stamp values when tcp time stamp option is enabled. Change: (RXP/COM) TOE receive path and tcp retransmission timeout. 2. Request: Re-implement previous change(see CQ#33580)that place the OOO packet to the generic buffer until generic buffer is totally used up. Change: (RV2P) TOE receive mode when host doesn't post enough receive buffer. 3. Request: Support different BD page size other than 4K only. Change: (RV2P) Allow Host to modify BD page size by passing parameters in RV2P code memory. 4. Request: Support processing of tcp delegate variable DupAckCount. Change: (CP/COM) At offload, TOE stack now accepts DupAckCount value from host. At upload, TOE stack pass up its own DupAckCount value back to host. Version 4.4.1 (Jan 23, 2008) ============================ Fixes: ------ 1. Problem: CQ#33545 Some OEM names are present in release.txt. Fix: Removed references to OEM names. 2. Problem: CQ#33570 The assertion that valid the new receive index in the status block is not complete correct. Fix: The code was modified to break if the difference between the stale and the current receive index is greater than 0x8000. Enhancement: 1. CQ#32971: Automate the F6 INF for VBD with each driver release. BCM5706/08 Firmware v4.4.1 -------------------------- ***** TCP offload/L2 ***** 1. Problem: CQ#33580 - While continuously toggling TOE, SUT encounters BSOD (0xD1) for DRIVER_IRQL_NOT_LESS_OR_EQUAL, when running bi-directional Chariot traffic to both ports simultaneously. Cause: The RV2P changes related to generic buffer placement involving OOO packet in previous release is not bullet proof. Changes: undo this change and further investigate a proper fix. Impact: RV2P/TOE receive path. LH sparta test tcp_windowscaling will be impacted as the result of undoing this change. ***** iSCSi Offload ***** Fixes: 1. Problem: CQ#33548 - VBD became non-responsive when iSCSi OIS driver is loaded. Cause: The iSCSi firmware in CP is still writing to the TPAT HSI area with hard code offset that didn't take account for the recent 1k code space move in TPAT. Changes: The offset value is now adjusted to take account for the 1k move. Impact: CP processor and iSCSi firmware command path. BCM5709 Firmware v4.4.1 ----------------------- ***** TCP offload/L2 ***** 1. Problem: CQ#33580 - While continuously toggling TOE, SUT encounters BSOD (0xD1) for DRIVER_IRQL_NOT_LESS_OR_EQUAL, when running bi-directional Chariot traffic to both ports simultaneously. Cause: The RV2P changes related to generic buffer placement involving OOO packet in previous release is not bullet proof. Changes: undo this change and further investigate a proper fix. Impact: RV2P/TOE receiv path. LH sparta test tcp_windowscaling will be impacted as the result of undoing this change. ***** iSCSi Offload ***** Fixes: 1. Problem: CQ#33548 - VBD became non-reponsive when iSCSi OIS driver is loaded. Cause: The iSCSi firmware in CP is still writing to the TPAT HSI area with hard code offset that didn't take account for the recent 1k code space move in TPAT. Changes: The offset value is now adjusted to take account for the 1k move. Impact: CP processor and iSCSi firmware command path. Version 4.4.0 (Jan 20, 2008) ============================ Fixes: ------ 1. Problem: CQ#33101 WUDFUpdate_01005.dll Accompanies Teton VBD Driver but is Not Referenced in Driver INF Fix: Not copy WUDFUpdate_01005.dll 2. Problem: CQ#32944 BCM5709B0: Traffic generation fails when resuming from S4 if UMP is enabled. Cause: The register indirect access was not enabled when the chip comes back from S3/S4. Fix: Enable the register indirect access when going to D0 before submitting WAIT0 to boot code. 3. Problem: CQ#33470 High CPU utilization when RSS is enabled. Cause: Interrupt moderation was not enabled for the 8 per-processor status blocks. These status block updates are independent of the default status block and any one of them could generate an interrupt. Fix: Enable interrupt moderation on the 8 per-processor status blocks. BCM5706/08 Firmware v4.4.0 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: The very first out of order packet could get dropped when the receive window is larger than 512k and host didn't immediately post receive buffer during RX. Cause: Due to L4 context variable limitation, RV2P is only able to recognize generic buffer up to 512k. When it received an OOO packet with sequence number that is on the right side of the receive window that is greater than 512k and host hasn't post any receive buffer, RV2P will drop the packet because it thinks that there is no enough room in generic buffer even though no data is being to place in generic buffer yet. Changes: RV2P now continue to place the OOO packet to the generic buffer until the generic buffer is totally used up. Impact: RV2P/TOE receive path. Enhancement: 1. Request: need more code space in TPAT for on-going firmware development. Changes: Take back 1K of code space from iSCSi boot persist information area in TPAT. TPAT datapath firmware will start at spad offset at 0x400 instead of at 0x800. Impact: VBD need to change since starting address of HSI variables for TPAT processor gets move up by 0x400. BCM5709 Firmware v4.4.0 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Problem: The very first out of order packet could get dropped when the receive window is larger than 512k and host didn't immediately post receive buffer during RX. Cause: Due to L4 context variable limitation, RV2P is only able to recognize generic buffer up to 512k. When it received an OOO packet with sequence number that is on the right side of the receive window that is greater than 512k and host hasn't post any receive buffer, RV2P will drop the packet because it thinks that there is no enough room in generic buffer even though no data is being to place in generic buffer yet. Changes: RV2P now continue to place the OOO packet to the generic buffer until the generic buffer is totally used up. Impact: RV2P/TOE receive path. Enhancement: 1. Request: need more code space in TPAT for on-going firmware development. Changes: Take back 1K of code space from iSCSi boot persist information area in TPAT. TPAT datapath firmware will start at spad offset at 0x400 instead of at 0x800. Impact: VBD need to change since starting address of HSI variables for TPAT processor gets move up by 0x400. Version 4.1.3 (Jan 10, 2008) ============================ Enhancement: 1. Embed digital signature with the binary. BCM5706/08 Firmware v4.1.1 -------------------------- ***** iSCSI offload ***** HSI change: iSCSI init offload now expects 5 KWQEs for IPv4 offload connection - same as TOE Enhancements: Changed timer4 resolution from 1 second to 100ms. Shortened Keepalive timeout to 15 mins. ***** TCP offload/L2 ***** Bug fixes: 1. Fixed up FIN_WAIT2 timer mechanism so tcp connection gets aborted after staying idle in FIN_WAIT2 state for 120 seconds (LH sparta requirement). 2. During handling update tcp kwqe, firmware must detect whether tcp_timestamp flag is set for the first time. If it is, firmware must increase the tcp_hlen to accomodate the tcp time stamp option since there is no space in update tcp kwqe to pass down the updated tcp_hlen from host. Enhancement (LH sparta requirement): 1. Modified the TCP urgent flag handling so TOE stack will do some limited TCP urgent processing instead of blindly upload the connection to host stack. BCM5709 Firmware v4.1.1 ----------------------- ***** iSCSI offload ****** HSI changes: 1. iSCSI init offload now accepts 5 KWQEs for IPv4 and 6 KWQEs for IPv6 - same as TOE. Enhancement: 1. Changed timer4 resolution from 1 second to 100ms ***** TCP offload/L2 ***** Bug Fixes: 1. Fixed up FIN_WAIT2 timer mechanism so tcp connection gets aborted after staying idle in FIN_WAIT2 state for 120 seconds. 2. During handling update tcp kwqe, firmware must detect whether tcp_timestamp flag is set for the first time. If it is, firmware must increase the tcp_hlen to accomodate the tcp time stamp option since there is no space in update tcp kwqe to pass down the updated tcp_hlen from host. Enhancement: 1. Modified the TCP urgent flag handling so TOE stack will do some limited TCP urgent processing instead of blindly upload the connection to host stack. Version 4.1.2 (Jan 4, 2008) =========================== Fixes: ------ 1. Problem: CQ#33219 NDIS6 miniport checked driver could assert because the bus driver could indicate transmit completion with packet descriptors from different miniport transmit queues. Fix: In the call to l2_indicate_tx, the bus driver ensure all the packets are coming from the same descriptor queue. 2. Fix: CQ#33241 Changed "Windows Server 2003" to "Windows Server 2000, 2003 and 2008". Version 4.1.1 (Jan 2, 2008) =========================== BCM5706/08 Firmware v4.1.0 -------------------------- ***** TCP offload/L2 ***** Enhancement: 1. Don't allow header split during Linux jumbo packet place when the packet header len is greater than skb_buf_size. ***** iSCSI offload ***** Bug Fixes: 1. CQ#32815: Ignore out-of-order OFFLOAD_CONN2 2. CQ#32816,CQ#33191: fixed cam_inuse leak when an iSCSI connection is created and destroyed without tcp_upload BCM5709 Firmware v4.1.0 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. CQ#30942 - Fixed a problem where CAM entry is not getting invalidate in IPV6 mode. Enhancement: 1. Don't allow header split during Linux jumbo packet place when the packet header len is greater than skb_buf_size. ***** iSCSI offload ****** Bug fixes 1. CQ#32815, CQ#32816: Replaced cam_inuse global variable with GRC field free_count. Ignore out-of-order OFFLOAD_CONN2. Version 4.1.0 (Dec 19, 2007) ============================ 1. Problem: CQ#33049 System will blue screen if an intermmediate driver submits an offload request even though the driver does not advertise TOE capability. Cause: The driver does not expect an offload request if it does not advertise TOE capability. In this case, certain device structure is not initialized which resulted in a NULL pointer reference. Fix: Modified the driver to gracefully fail the offload request. Enhancement: 1. Enable support of location string. Version 4.0.7 (Dec 11, 2007) ============================ Fixes: ------ 1. Problem: CQ#32871 BSOD BAD_POOL_CALLER (C2) when loading VBD 4.0.6 Fix: Not use a static buffer for the location string. Enhancement: 1. The support of location string is disable for this version. 2. cq#33007 - Enable flow control by default. Version 4.0.6 (Dec 7, 2007) =========================== Fixes: ------ 1. Problem: Workaround for CQ#28189 needs to take affect for BCM5709Bx. Currently it is only applied to Ax silicon. 2. Problem: CQ#30504 BCM5706S may not get a link down event. Fix: Added a workaround to detect and force a link down event. Enhancement: 1. Include BCM5706/08 rv2p v1.8.0. 2. Include BCM5709Ax rv2p v1.10.0. 3. Include BCM5709Bx rv2p v1.3.0. 4. Support location string. BCM5706/08 Firmware v4.0.5 -------------------------- ***** iSCSI offload ***** Enhancement: 1. Added R2T queue fairness 2. Removed the FF_PHASE redundant init (rxp/cp race) 3. Removed old EVENT_COALESCING flag and added new ISCSI_EC_COLASECE_NOW compilation flag BCM5709 Firmware v4.0.5 ----------------------- ***** iSCSI offload ****** Bug Fixes: 1. Recalculate cache_key to be unique per connection per task. Enhancement: 1. Added R2T queue fairness. 2. Removed the FF_PHASE redundant init (rxp/cp race) 3. Removed old EVENT_COALESCING flag and added new ISCSI_EC_COLASECE_NOW compilation flag. Version 4.0.5 (Dec 4, 2007) =========================== Fixes: ------ 1. Problem: CQ#32797 A crash may occur on BCM5709 when resuming from S3/S4. Cause: The per-processor status block does not get cleared during a driver reset. 2. Problem: CQ#32871 A kernel event that is referenced by a thread is initialized after the thread is created. This could cause the thread to reference an uninitialized event structure. Fix: Initialize the kernel event before creating a thread. Enhancement: 1. Include BCM5706/08 rv2p v1.6.0. BCM5706/08 Firmware v4.0.4 -------------------------- ***** iSCSI offload ***** Bug fixes: 1. Set task_cache_key to be unique per connection per task to solve data corruption problem caused by same cache_key per connection. BCM5709 Firmware v4.0.4 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. cq#32833 - Fixed problem with RSS when the indirection table size is 0x80. RSS is supposed to fail if indirection table is greater than 0x80 not equal to 0x80. 2. cq#32812 - Fixed TPAT assertion due to lack of LSO context space to support all 8 tx rings when RSS is enabled. ***** iSCSI offload ****** Enhancement: 1. Added IPV6 support. Version 4.0.4 (Nov 28, 2007) ============================ Fixes: ------ 1. Problem: CQ#32684 Cannot re-establish iSCSI connection after coming out of S3/S4 sleep state. Cause: Workitem thread does not get restarted after coming out S3/S4 state. 2. Problem: CQ#32676, #32559 System hangs going into standby during 2m_wolmagicpacket test. Cause: A wrong parameter was passed to ObReferenceObjectByHandle in the kill_system_thread routine. Enhancement: 1. Add support for BCM5709 IPv6 RSS. BCM5706/08 Firmware v4.0.3 -------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Fixed the division function in com_tcp.c so it won't multiply the final result by 2 and causes the cwin calculation during congestion avoidance(LH sparta test) to be incorrect. 2. Fixed a bug where l4ctx_smss_mul is not being calculated properly in CP. ***** iSCSI offload ***** Bug fixes: 1. Changed status block updates to avoid spurious status block generations. BCM5709 Firmware v4.0.3 ----------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Fixed the division function in com_tcp.c so it won't multiply the final result by 2 and causes the cwin calculation during congestion avoidance(LH sparta test) to be incorrect. 2. Added status block update in CP when processing KWQE to support MSI-X. Enhancement: 1. Added hardware and IPV6 RSS support. Version 4.0.3 (Nov 23, 2007) ============================= Enhancement: 1. Changed product version to 12.0. 2. Add support for BCM5709 IPv4 RSS. BCM5706/08 Firmware v4.0.2 -------------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Subtract the extra 2 padding bytes inserted by the hardware when writing the data offset to RV2PQ during Linux jumbo place. Enhancement: 1. Default RXP flood field in RXP HSI to only enable L2 normal receive ring. Host driver will enable iSCSi and RDMA L2 ring enable bits as needed. BCM5706/08 Firmware v4.0.1 --------------------- ***** TCP offload/L2 ***** Bug fixes: 1. CQ32038 - Make sure to update the rcv_win_seq first before updating rcv_next to avoid RXP assertion where rcv_next seq could get ahead of rcv_win_seq. Enhancement: 1. Added handling of Hole_Filling/Hole_Filled bits support in COM with the new RV2P support. In addition, removed the hole filling detection mechanism from COM since the RV2P handles it now. 2. Removed the OOO push pkt drop workaround since RV2P handles it properly now. 3. Officially added the Linux jumbo packet support in RXP and COM in conjunction with the new RV2P. Enhancement: 1. Added Linux Jumbo packet support. ***** iSCSI offload ***** Bug fixes: 1. Update the SGL flush command by forwarding a shift value of the task cache key into the RV2P. BCM5709 Firmware v4.0.2 --------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. CQ32585 - Merged in RXP changes from v3.7.1 so IPMI can be properly supported. 2. Subtract the extra 2 padding bytes inserted by the hardware when writing the data offset to RV2PQ during Linux jumbo place. Enhancement: 1. Added RSS support when handling l2_complete in COM. Version 4.0.2 (Nov 20, 2007) ============================= Fixes: ------ 1. Problem: CQ#32629 Driver asserts during the loading of the iSCSI offload driver. Cause: The context passed to l4sc_get_dma_adapter is fdo_extension_t instead pdo_extension_t. Version 4.0.1 (Nov 20, 2007) ============================= Fixes: ------ 1. Problem: CQ#32503 The driver crashes on unload. Cause: A system thread is not properly terminated when the driver unloads. 1. Problem: CQ#32572 Unable to pass traffic on BCM5709Ax. Cause: The RV2P microcode was not complete downloaded to the chip during initialization. Enhancement: 1. Include BCM5706/08 rv2p v1.5.0. This version includes Linux Jumbo Packet support, Out-Of-Order Push packets, and the Hole_Filling/Hole_Filled bits. 2. Include BCM5709Ax rv2p v1.8.0. This version includes Linux Jumbo Packet support, Out-Of-Order Push packets, and the Hole_Filling/Hole_Filled bits. 3. Include BCM5709Bx rv2p v1.1.0. This version includes Linux Jumbo Packet support, Out-Of-Order Push packets, and the Hole_Filling/Hole_Filled bits. 4. Disable iSCSI PDO enumeration on BCM5709A0/A1. Also disable WSD PDO enumeration on all the devices for now. 5. Reduce the default number of receive descriptors from 400 to 200 per receive queue. BCM5709 Firmware v4.0.1 --------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Make sure to initialize TOE ctx variable last_ack_sent in order for TOE tcp time stamp to work properly. Enhancement: 1. Added TSS CID support. 2. Added handling of Hole_Filling/Hole_Filled bits support in COM with the new RV2P support. In addition, removed the hole filling detection mechanism from COM since the RV2P handles it now. 3. Removed the OOO push pkt drop workaround since RV2P handles it properly now. 4. Added Linux Jumbo Packet support. ***** iSCSI offload ****** Bug fixes: 1. Update the SGL flush command by forwarding a shift value of the task cache key into the RV2P. Enhancement: 1. Added msi-x support(SB number). 2. Initialize the RQ flush message handler to be "nop_complete". Version 4.0.0 (Nov 12, 2007) ============================= Fixes: ------ 1. Problem: CQ#32166 5708 WOL: AUT will show link when in sleep state for first time after reboot, when "Allow this device to wake comp" is unchecked. Cause: This happens on Vista and not on w2k3. In Vista, VBD's wol is set by OID_PNP_ENABLE_WAKE_UP from NDIS even wol is disable. Fix: Use another information to enable wol. Enhancement: 1. Support two different version of BCM5709 Rv2p. One version is for BCM5709Ax and other is BCM5709Bx. 2. Added support for context structure changes for BCM5709. BCM5706/08 Firmware v4.0.0 --------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Keep Alive Timer should only be started if the packet received is valid. 2. During connection offload, make sure the cwin is at least one MSS. Otherwise, TOE small pkt coalescing algorithm will stall the tx since it expects the pkt to be at least 1 mss size if it is not end of application buffer. Enhancement: 1. CQ30149 - Add Support for Routing Received Frames to Multiple RX Chains Based on the MAC Address. ***** iSCSI offload ***** Bug fixes: 1. Change the calculation of CQE_SEQ in CQE_VALIDTE function. 2. Report an error in case sense data is longer than 256 bytes. 3. TBDC deadlock. 4. Identifying we are in the middle of receiving a PDU while cleanup request arrive. 5. Handle the case where local completion CQE should be written as part of retransmission process. 6. Update the RQ consumer correctly when RQ placement is split over several TCP segments. Enhancement: 1. Event coalescing - Determine if feature is enabled in RT and omit the use of aqm_cq. 2. Change the retransmit timeout interval to 250 msec. BCM5706/08 Firmware v3.7.20 ---------------------- ***** TCP offload/L2 ***** Bug fixes: 1. During connection offload, make sure the offloaded cwin is at least one MSS. Otherwise, TOE small pkt coalescing algorithm will stall the tx since it expects the pkt to be at least 1 mss size if it is not end of application buffer. BCM5709 Firmware v4.0.0 --------------------- ***** TCP offload/L2 ***** Initial integration of the TOE with iSCSi firmware with all BCM5706/08 up to date changes. Enhancement: Add Support for Routing Received Frames to Multiple RX Chains Based on the MAC Address (CQ30149). Version 3.7.23 (Oct 17, 2007) ============================= Fixes: ------ 1. Problem: F6 installation with Offload iSCSI hangs during system shutdown. Cause: Some code was paged out. Fix: Changing all paged code to non-paged code in VBD. Version 3.7.22 (Oct 16, 2007) ============================= Fixes: ------ 1. Problem: CQ#31687 Running BACS diagnostics on BCM5709 at 2.5 Gbps results in link to go down to 1.0 Gbps Fix: Enable autoneg_enable when setting up phy loopback. 2. Problem: CQ#31864 5708s-B2, L4, Toggling TOE: Running Chariot FileSendShort test script Results in TCP Socket Connection TimeOut on Tx Side. Cause: TCP offload variable snd_wl1 is mistakenly converted to OS tick. Fix: Leave snd_wl1 value unchanged during connection upload. Version 3.7.21 (Oct 10, 2007) ============================= BCM5706/08 Firmware v3.7.19 ---------------------- ***** TCP offload/L2 ***** Bug fixes: 1. Don't allow update of rcv_next from any L4 completion, L4 place or L4 generic buffer add operations in COM if the rcv_next in each of these records are less than the current rcv_next in TOE ctx. ***** iSCSI offload ***** Bug fixes: 1. Added nop() to every DMA read stop to prevent iSCSi wqe corruption. Version 3.7.20 (Oct 8, 2007) ============================ BCM5706/08 Firmware v3.7.18 ---------------------- ***** TCP offload/L2 ***** Bug_fixes: 1. Added a workaround to avoid out of order opaque record process that causes TOE stack intermittently not acking the FIN during connection tearing down. ***** iSCSI offload ***** Bug fixes: 1. Updating ExpStatSn in the correct location when processing unsolicited PDUs. 2. Handle the a case where CLEANUP request arrive in a middle of a Data-In PDU processing on the same task (due to target violation). Version 3.7.19 (Oct 4, 2007) ============================ BCM5706/08 Firmware v3.7.17 ---------------------- ***** TCP offload/L2 ***** Bug fixes: 1. TOE stack must drop out of order packet with lower timestamp value. 2. Fixed a corner case such that TCP nagle algorithm should not prevent a FIN packet with data size less than MSS to send out promptly. 3. Added a workaround so RV2P won't drop out of order packet with PUSH flag set. The real fix will need to come from RV2P firmware itself later on. BCM5706/08 Firmware v3.7.16 ---------------------- ***** iSCSI offload ***** Bug Fixes: 1. Update the CQ wraparound according to both CQ size and number of CQEs per page. 2. RST response is now passed to driver correctly. Version 3.7.18 (Sept 28, 2007) ============================== BCM5706/08 Firmware v3.7.15 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Make com_no_buffer counter more robust so it won't miss count L2 packet drops. 2. Make sure to subtract the gen buff space from gen_buff_accum for each gen add operation so the TOE stack won't think the window is open up and fire out a window update prematurely. ***** iSCSI offload ***** Bug Fixes: 1. Set the maximum iSCSI/TOE offloaded connections to zero if indicates license/BACS failure. Enhancement: 1. Omit the INLINE_5708 from some iSCSI functions in order to fit code space in Windows_5708 compilation mode. BCM5709 Firmware v3.7.4 --------------------- Bug Fixes: 1. Fixed com_no_buffer counter so it counts L2 packets drops properly. Version 3.7.17 (Sept 24, 2007) ============================== Fixes: ------ 1. Problem: CQ#31289, #31257, #28882 Blue screen when booting to iscsi boot w2k3 image with BCM5709 when using iscsi initiator v2.0.5 Cause: The OS is scanning the PCI configure space which will cause an indirect MQ read when register 0x94 is read. The MQ read is invalid and this will cause the chip to stall. Fix: Configure the chip to not stall on an invalid MQ read. 2. Problem: CQ#31501 Blue screen could occur on shutdown when RSS is enabled. Cause: The driver is making calls to WdfInterruptSynchronize when the interrupt object is no longer valid during shutdown. 3. CQ#28610: Performance issue: Higher ints/sec contribute to lower PE in some tests involving 4 5708s Fix: Adjust coalescent and driver setting to improve interrupt/sec and performance. After adjustment, the ints/sec is less than Intel's NIC and performance get significant improvements. Enhancements: ------------- 1. Add workaround for BCM5709 A1 "Interrupt Lost" issue. BCM5706/08 Firmware v3.7.14 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. CQ31494 - Fixed low L4 teaming throughput problem by restricting the sending of immediate window update only when tx is idle. 2. Fixed LH sparta regression problem where it expects TOE stack to send ack to remote if the sequence number is less than snd_una and packet len is not zero instead of silently dropping the packet. Enhancement: 1. As for each copy generic request, the TOE stack keeps track of the size of the generic buffer that gets free up and add it back to the rcv_win_seq so the rcv win size is being accurately accounted for in the timely manner. ***** iSCSI offload ***** Bug Fixes: 1. Fix persist probes transmission mechanism. 2. Send indication to COM on exit fast retransmition when receiving RETRANS indication from TSCH. 3. Fix RQ flush structure. 4. Fix the initialization of the iSCSI number of pending tasks for TXP and TPAT. Version 3.7.16 (Sept 17, 2007) ============================== Fixes: ------ 1. Problem: CQ#31129 Running network stress on BCM5709 in a teaming environment may cause Longhorn to assert due to the DPC watchdog timer. Cause: The watchdog timer ensures the CPU does not stay at Dispatch IRQL for more than 30 seconds. Under stress this could happen. Fix: Periodically prevent the driver's DPC from running for a short time if the CPU utilization is at 100%. This fix does not completely address the problem. It could still occur if there are multiple devices in the system under stress. 2. Problem: CQ#31362 Windows iSCSI Offload bugchecked 0x7B when choose to remote boot with offload path. Cause: The start type was set to SERVICE_DEMAND_START. Reverted back to SERVICE_BOOT_START. 3. Problem: CQ#31367 Connections don't get offloaded on the second port on BCM5709. Cause: The driver was reporting the device as having 0 TOE connections. 4. Problem: CQ#31345 System crash occurs when the system wakes up from S3. Cause: The driver calls WdfInterruptAcquireLock/WdfInterruptReleaseLock before the interrupt is enabled by the KMDF framework. BCM5706/08 Firmware v3.7.13 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. CQ31208 - Make sure TOE stack to send window update immediately and ignore delay ack if the rcv window is opening up more than one MSS. Enhancement (LH sparta requirement): 1. TOE stack now supports host window update properly (ie. TOE stack honors user's request to either increase or decrease socket receive buffer size). ***** iSCSI offload ***** 1. Added updated BACS/License enforcement. Version 3.7.15 (Sept 7, 2007) ============================= Fixes: ------ 1. Problem: CQ#30834 IPv6 transmit traffic stutters periodically when RSS is enabled. Cause: The hash table for RSS does not work for ipv6. Fix: Adjust a parameter in VBD which was for lowering the CPU utilization when RSS was enable. And non-RSS rxqs only be served on the isr's proc DPC to improve cpu parallelism. 2. Problem: CQ#31197 Unable to create a crash dump with MPIO. Cause: The crash dump driver queries the VBD for the base register pointer. On x64, the VBD only returns the lower 32-bit value of the pointer. 3. Problem: CQ#31256 Running network stress test could cause the system to freeze. Cause: In certain rare condition, the driver may not claim an interrupt. There is a race condition between the ISR masking an interrupt and the DPC unmasking it. Fix: Synchronize the DPC code for unmasking the interrupt with the ISR. Enhancements: ------------- 1. CQ#30791 - Add a remote phy option for "1Gb Full Auto". 2. Include BCM5709 rv2p v1.6.0. BCM5706/08 Firmware v3.7.12 ---------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Fixed a bug where TOE stack could request a reload with a sequence number that has already been completed during closing state when fast recovery is still active. 2. CQ31211 - w2k3 SPARTA expects TOE stack to send ACK instead of RST-ACK when receive in-order SYN from remote. If host OS is LH, TOE stack will still do RST-ACK. 3. CQ31210 - w2k3 SPARTA expects TOE stack to strict follow TCP Nagle per RFC 896. If host OS is LH, TOE stack will deviate from TCP Nagle if there is only one outstanding send request per LH sparta requirement. 4. CQ31209 - w2k3 SPARTA expects TOE stack to send DupACK if receive packet on the right hand side of the window. If host OS is LH, TOE stack will silently drop the packet per LH sparta requirement. 5. CQ30559 - Fixed intermittent failures in bad header handling reported by w2k3 SPARTA. Enhancement: 1. Make TOE stack ignore the delay ack mechanism as the hole in the receive buffer is being filled (ie. it must sends out the ack immediately upon each packet received while the hole is being filled). ***** iSCSI offload ***** Bug Fixes: 1. Fixed the silent drop processing in case of RQ full. 2. Fixed the error processing after reveal a wrong opcode. 3. Fixed a bug in message from TDMA to COM by reset the L5 bit in case of sending FORCE_RESET indication in option#2. 4. Fixed a bug were RQ placement data was stored in RBDC and was not flushed even after the connection has been closed. Now it is flushed after each RQ placement completed. Enhancement: 1. Change the behave of processing a bad ACK sequence in the 3-way handshake phase in option#2. Instead of sending a reset after receiving a bad ACK sequence, FW will redirect the packet to L2. 2. Add the licensing / resource allocation features. Version 3.7.14 (Aug 27, 2007) ============================= Fixes: ------ 1. Problem: CQ#30663 Device manager shows a yellow bang on the wdf0100 driver. Cause: The following line in the INF file is incorrect. KmdfService = bxvbdx, bxvbdx_wdfsect The KmdfService name should be b06bdrv. 2. Problem: CQ#31029 iSCSI does not work if the device does not have TOE license. Cause: The driver rejects all TOE requests if there is no TOE license. The problem occurs if iSCSI is enabled on the device and TOE license is not present. Fix: The driver needs to allow processing of connection offload requests even when there is no TOE license. 3. Problem: CQ#31073 System failure during connect and logoff stress. Cause: This is a side effect of fixing cq#31029. Entries in the kernel queue could be skipped without processed by the bus driver or the iSCSI miniport. Version 3.7.13 (Aug 15, 2007) ============================= Fixes: ------ 1. Problem: TCP connection does not get offloaded if the license key is not present. This problem is seen on FPGA setups and adapters that do not use Broadcom licensing scheme. Cause: TOE capability is disabled when license key is not present. Fix: Always advertise TOE capability on FPGAs and adapters that don't use Broadcom licensing scheme. BCM5706/08 Firmware v3.7.12.a0 ------------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. Fixed a bug where TOE stack could request a reload with a sequence number that has already been completed during closing state when fast recovery is still active. Version 3.7.12 (Aug 14, 2007) ============================= BCM5706/08 Firmware v3.7.11 ---------------------- ***** TCP offload/L2 ***** Enhancemant(MSFT LongHorn server requirement) 1. Added TCP NewReno per RFC 2582. ***** iSCSI offload ***** 1. Support ACK processing in OOO packets. Version 3.7.11 (Aug 10, 2007) ============================= Fixes: ------ 1. Problem: CQ#30889, #30920 Adapter is grayed out in BACS after Microsoft Initiator is installed. Cause: The driver does not respond to BACS request when it is in STOP_PENDING or REMOVE_PENDING state. Fix: Allow the driver to process ioctls when it is in one of these states. 2. Problem: CQ#30954 Network adapters grayed out in BACS after running driver verifier. Cause: During driver initialization, the call to WdfFdoQueryForInterface returns a status code of 4. The driver did not use the NT_SUCCESS macro to check for the success of the call. As a result it erroneously treated the return code as failure and failed driver initialization. Fix: use the NT_SUCCESS macro to check the return code. 3. Problem: CQ#30617 The OS may reset a SMB connection when TOE is continuously enabled/disabled during a SMB data transfer. This problem would not be seen with all network applications, and was only seen with an application that was transferring data using SMB. Cause: Disabling TOE while TCP connections are offloaded will result in the offloaded connections being "uploaded" back to the OS. In some rare cases the OS may have only partially accepted a prior receive buffer indication before the disable TOE event occurs. This would only happen if the application was not pre-posting receive buffers. In this rare scenario of a partially accepted receive indication, the driver needs to remain in the receive indication mode and complete the remainder of the receive indication data before proceeding with the connection upload event. If the driver did not accurately complete the remaining portion of a previous partially accepted receive indication, then upper layer SW could reset the SMB connection after the upload event. Enhancements: ------------- 1. Don't allow the pdo to be disabled if it is iSCSI boot device. BCM5706/08 Firmware v3.7.10 ---------------------- ***** TCP offload/L2 ***** Bug Fixes(MSFT LongHorn Requirement): 1. Fixed zero window probe detection so TOE stack can respond with zero window ACK properly. 2. Make sure TOE stack set the FORCE_ACK bit in Protocol flags and activate the tx scheduler when it received a disconnect request and the snd wnd is zero. Otherwise, the tx scheduler won't schedule the connection and resulted in TOE stack unable to send out the FIN properly. 3. Make sure TOE stack generates a dup ack when receives a packet that lies on right side of recv window. 4. Fixed a keeplive bug where TXP could disable the keepalive timer permanently and TOE failed to send out keepalive probes when the connection is idle. Enhancement(MSFT LongHorn Requirement): 1. TOE stack should ignore the delay ack timer and sends out a ack immediately when a hole is filled in the receive buffer. 2. The silly window rule is now based on minimum of mss and 1/2 of max_snd_win instead of just the mss. TOE stack can still send out a packet smaller than MSS if 1/2 of max_snd_win is less than mss. 3. Added more support for TCP timestamp feature. - TOE stack must accept valid timestamp for already acked data. - TOE stack must check for time stamp wrapping before accepting the timestamp. - TOE stack must reject in-order packet with a lower timestamp. 4. Added RTT support per RFC2988. Version 3.7.10 (July 31, 2007) ============================== Fixes: ------ 1. Problem: CQ#30782 5708B2 Fails WOL with WLK 1.0c Cause: This is only happened on LH/VISTA. And it is caused by IRP_MN_WAIT_WAKE is not used. Fix: Not rely on IRP_MN_WAIT_WAKE. BCM5706/08 Firmware v3.7.9 --------------------- ***** TCP offload/L2 ***** Bug Fixes(MSFT LongHorn Requirement): 1. Make sure TOE stack in TXP reads the tcp_state directly from ctx memory instead of from burst buffer when handling disc request during pre-scan. This prevents improper decision from the TOE stack since value in burst buffer is not real time. 2. When upload a connection due to unexpected SYN received, update the upload reason to L4CTX_TCP_UPLOAD_REASON_SYN and don't set tx/rx completion bit to avoid VBD assert. 3. TOE stack should filter out packets with the seq number + len < rcv_next to avoid RV2P hang. 4. Added support to copy the ts.recent value to l4ctx from host during connection offload. It prevents TOE stack to send out a bogus ts echo value. ***** iSCSI offload ***** 1. Bug fix - on fw_doorbell, kcq_shadow_context will reset com_hc_prod_idx, so we won't get false kcq processing after l5_core reload. 2. Bug fix:Per task iSCSI statistics fix - num of data_outs and r2ts reported correctly 3. Licensing scheme support for Linux. Version 3.7.9 (July 27, 2007) ============================ Fixes: ------ 1. Problem: The fix for CQ#30307 does not work. Fix: Remove the workaround for CQ#29454. 2. Problem: CQ#29526 CQ#29526 - Remove VLAN support in our driver for iSCSI boot. BCM5706/08 Firmware v3.7.8 --------------------- ***** TCP offload/L2 ***** Enhancement: Added support for black hole detection. TOE will upload the connection after a segment retx cnt reaches doubt reach-ability threshold so the host stack can activate the black hole detection per RFC 2923. ***** iSCSI offload ***** 1. Changing the behavior of FIN reception in option#1: Remove the FIN delivering to FTSK. Change the TCP state to CLOSE_WAIT. BCM5706/08 Firmware v3.7.7 --------------------- ***** TCP offload/L2 ***** Bug Fixes(MSFT LongHorn Requirement): 1. Fix a bug where TOE stack doesn't generate the delayed ack properly when generic buffer is in use. 2. Only allow TXP process the host disconnect request when TOE stack is in ESTB state to avoid generating un-necessary ACKs. 3. Make sure TOE stack to send out a ACK before progress from fin_wait1 state to closing state. Enhancement(MSFT LongHorn Requirement): 1. When received a SYN during ESTB/close_wait/fin_wait1/fin_wait/ last_ack state, TOE stack should upload the connection and have MSFT host stack to send out RST. 2. Make rcv window update to be fully compliant to RFC 793 and RFC 1122. ***** iSCSI offload ***** 1. Separating FW for Windows and Linux (TOE and option 2 logic can be conditionally out). 2. Fixing performance drawback from previous version 3. Bug fix: RST ramrod completion on TX flushed. 4. Readiness for resource reservation (implementing resource reservation algorithm + FCFS) 5. HSI change (for Linux) – task_stats is now a union field defined for write task and for read task. 6. Bug fix for violation error/warning mechanism. Packets are processed ok on warning. 7. Specific FW patches that were done to support warning feature are out now 8. Bug fix: CQ# 30694 – TXP will not pass last on force ack where payload is send. 9. Bug fix: Redirect in 5706 - Handle correctly receiving piggybacked FIN on iSCSI packet. 10. Added an iSCSI specific number of retransmission into the COM HSI structure. 11. Insert some volatile keyword into the KCQ context pointer. BCM5709 Firmware v3.7.3 --------------------- 1. Added a workaround for cp grc timeout. 2. Added a workaround for kcq corruption. Version 3.7.8 (July 16, 2007) ============================ Fixes: ------ 1. Problem: BCM5706/08 firmware v3.7.6 was built with an incorrect file. Fix: Included the re-release of the v3.7.6 of the BCM5706/08 firmware. Version 3.7.7 (July 16, 2007) ============================ Fixes: ------ 1. Problem: CQ#30307 Bacs: Bogus counters on 5708 under statistics tab Cause: This is a side effect of the workaround(CQ#29454). 2. Problem: CQ#30558 5709S: Fiber: OS does not detect link loss with latest VBD/NDIS52 v3.7.6 Cause: check the wrong bit in emac status reg for link down detection. Fix: Change from checking EMAC_STATUS_LINK_CHANGE to checking EMAC_STATUS_LINK in emac status reg for link down detection. Enhancements: ------------- 1. Enable special files support. 2. Include BCM5706/08 rv2p v1.5.0_proc1 and v1.4.0_proc2. 3. Include BCM5709 rv2p v1.4.0_proc1 and v1.3.0_proc2. 4. CQ#29875 - Changed "Remote PHY..." to "Chassis PHY..." in the INF file. BCM5706/08 Firmware v3.7.6 --------------------- ***** iSCSI offload ***** Bug Fixes: 1. Change the CQ sequence location in the CQE structure in order to fit BCM5709's DMA limitation. 2. Command requests arrive from driver which are not identify as write, will be treated as read. Enhancement (Mostly BETA features): 1. Added the error/warning bit map feature by producing additional iSCSI INIT KWQE. 2. Added the delayed ACK /Keep alive configuration capability feature. 3. Added TCP limitation of retransmissions. 4. Halt the TX pipeline in case of upload command receiving from driver in option#1. 5. Halt the TX pipeline after sending RST in option#2. 6. Statistics support. TX and RX for iSCSI MAC in option#1 and per task statistics. BCM5709 Firmware v3.7.2 --------------------- Bug Fixes: 1. CQ#29744 - Added mechanism to support host max_adv_win update so we won't have window size discrepancy after connection upload. 2. Fixed delay ack and push timer programming error. 3. Fixed delay ack count tracking error. The delay ack count only gets incremented for each completed packet not each completed segment since each packet can be split into multiple segments as it get copied to the host. 4. Allow update of remote adverstied window size during close_wait state. Enhancement: 1. Added IPV6 TCP chimney support. 2. Added MSFT chimney compatible TCP KeepAlive Support. Version 3.7.6 (July 3, 2007) ============================ Fixes: ------ 1. Problem: bus_mode was not set to BUS_MODE_PCIE for 5709. Cause: bus_mode was set by info from pcicfg misc_status which was not correct for 5709. Fix: bus_mode always set to BUS_MODE_PCIE for 5709. Enhancements: ------------- 1. Include BCM5709 rv2p v1.4.0. BCM5706/08 Firmware v3.7.5 --------------------- ***** TCP offload/L2 ***** Bug Fixes: The following are LongHorn sparta test related fixes: 1. Fixed a bug in duplicate ACKs detection in certain corner cases. 2. TOE should reject incoming packet with ack sequence number equal to snd_max+1 when it is not in FIN_WAIT1, FIN_WAIT2 and LAST_ACK state. 3. Fixed a bug in TOE stack where it didn't allow window update in close_wait state. Enhancement(MSFT LongHorn in-box Requirements): 1. Added TCP limited transmit per RFC 3042. 2. Changed limit of increase in TCP ABC algorithm (L factor) to 4 from 2. Version 3.7.5 (June 25, 2007) ============================= Fixes: ------ 1. Problem: CQ#29986 BACS diagnostic reports failures on mac and phy loopback test on a system with remote phy enabled. Cause: When remote phy is enabled, the driver does not honor the request to put the device into mac or phy loopback mode. Fix: Disable remote phy when the diagnostic driver binds to the vbd. 2. Problem: CQ#29647 Configured remotePHY speed and duplex settings not sticky across reboots. Fix: Both boot code(ver 3.5.5) and VBD have some changes to fix it. On VBD, only gigabit speed is adv for serdes and should inform boot code if the setting is for remote phy when submitting the DRV_MSG_CODE_CMD_SET_LINK command. 3. Problem: bus_type reported by B06_IOC_GET_DEVICE_INFO is not correct if it is pcie. Fix: Add the code to report pcie bus_type. 4. Problem: CQ#30143 The bus driver does not return a status code indicating a pattern is already present and the Miniport does not report back the correct status as expected by NDIS test v6.5. Fix: If the pattern is already present the bus driver will return LM_STATUS_EXISTING_OBJECT and NDIS miniport will return NDIS_STATUS_INVALID_DATA. Enhancements: ------------- 1. Include rv2p v1.3.0. BCM5706/08 Firmware v3.7.4 --------------------- ***** TCP offload/L2 ***** Bug Fixes: The following are LongHorn sparta test related fixes: 1. Fixed the double RST problem where TOE and host stack send out RST during tcp connection timeout. Only host stack should send out the RST per MSFT chimney spec. 2. Fixed the tcp RTO calculation bug where sm_rtt and rttvar didn't get converted from ticks to ms and resulted in erroneous RTO value. The erroneous RTO value causes TOE to retransmit prematurely and resulted in lower performance in certain conditions. It also fixed CQ#28740 where TOE retransmit prematurely and abort connections due to premature retransmissions. 3. Fixed a bug where TOE didn't send out FIN during a graceful disconnect in certain corner cases. Enhancement: 1. Added basic timestamp support based on RFC 1323. Version 3.7.4 (June 13, 2007) ============================= Fixes: ------ 1. Problem: CQ#29809 BCM5709S could hit an assert below when forcing 1Gb speed. Cause: The link speed read from the MII register was not properly decoded. 2. Problem: CQ#29725 Windows iSCSI Ofload: Network icon consistently does not link up after restart Cause: If iSCSI client is loaded first and the link is stable, NDIS miniport driver will not get link indication callback from VBD. 3. Problem: CQ#29891, CQ#29801, CQ#29799 Remote phy fails to negotiate link @ 10 and 100 full duplex forced. RemotePhy Ethernet@Wirespeed not functional via VBD/NDIS52 v3.5.2. RemotePhy Flow Control Feature not Functional. Cause: Some of the information passed to remote phy firmware is not correct. Enhancements: 1. Add support for Chimney TcpReceiveNoPush. BCM5706/08 Firmware v3.7.3 --------------------- ***** TCP offload/L2 ***** Bug Fixes: The following are LongHorn sparta test related fixes: 1. Fixed timer programming error of delay ack timer and push timer. 2. Fixed delay ack count tracking error. The delay ack count only gets increment for each completed packet not each completed segment since each packet can be split into multiple segments as it get copied to the host. 3. Fixed a bug where connection didn't enter slow start after a retx timeout. 4. Fixed a bug where TOE stack un-necessary send out a ACK when handling graceful disconnect from host. 5. Fixed a bug where TOE stack could un-necessary send out a ACK when even there are pending tx data upon detecting remote disconnect request. In this case, TOE stack should only send out ACK with data instead a ACK. Enhancement: The following enhancements are added per MSFT LongHorn Sparta test criteria. 1. Added ABC algorithm for TOE slow start per RFC3465. 2. Changed ssthreshold calculation to be based on cwnd instead of in-flight data. This allows offloaded connection switch from slow start to congestion avoidance the same way as the MSFT TCP stack. 3. Changed cwnd calculation scheme to be based on cwnd += mss^2/cwnd. 4. Added max_adv_win host update mechanism. ***** iSCSi offload ***** Bug fixes 1. Using volatile variables when accessing all fio->rv2ppq related registers in RxP. May solve CQ#29628 (should be verified) 2. Fixed iSCSi option 1 offload problem (firmware now makes sure to commit the iSCSi option 1 offload after 5 kwqes and regardless whether there is a 6th kwqe or not since VBD will generate 6 kwqes for both iSCSi and TOE during offload). 3. Removed check for TTT=0xFFFFFFFF on Data_In so we can interoperate with the Cisco target in the PQA lab. Version 3.7.3 (May 31, 2007) ============================ Enhancement: 1. Build a special version of the driver for Longhorn inbox driver submission which will temporarily disable Chimney support on BCM5709. Version 3.7.2 (May 30, 2007) ============================ Fixes: ------ 1. Problem: CQ#29545 5708B2 fails to pass traffic after running Lan Device Traffic in HCT12.1.01 Cause: The driver is still in sleep state after the tests. Fix: wake up the driver in d0_entry function if disarm function is not called. 2. Problem: CQ#29685 WOL does not work after running ACPI Stress or LAN Device Wake test Fix: Set WakeDoNotAllowUserControl in wake_setting to prevent WOL function from being disable. 3. Problem: CQ#29647 Uncheck the Allow this device to bring the computer out of standby check box, The system is still wake up Cause: Windows does not inform NDIS driver when the box is unchecked Fix: Workaround this problem by intercepting the WDM power irp which normally should not need to be handled by KMDF driver to get the information. 4. Problem: CQ#29712 5709S links at 2.5G when 2.5G support is disabled and/or no license is installed in NVRAM. Fix: Disable PHY 2.5G adv if 2.5G support is disable in NVRAM. BCM5706/08 Firmware v3.7.2 --------------------- ***** TCP offload/L2 ***** Bug Fixes: Enhancement: 1. Added MSFT TCP chimney compatible keep-alive Support in TOE stack. ***** iSCSi offload ***** Bug Fixes: 1. Fixed bug with opt2 connection establishment where target sent SYN-ACK with PUSH flag. 2. CQ#29415 - local completion flag is not exposed to the network anymore 3. CQ#29571 - cam_index is updated correctly during connection offload 4. CQ#29366 - wrong handling for EOP TCP option field. Now can connect to EMC target 5. Bug fix with window scale handling for received out of order packets BCM5709 Firmware v3.7.1 --------------------- Enhancement: 1. Pass the entire RXP status field to MCP as required by IPMI. Version 3.7.1 (May 18, 2007) ============================ Fixes: ------ 1. Problem: CQ#29545 Plug and Play Driver Test Surprise Removal causes fatal system exception Cause: pdev is used to check drv_state when doing final clean up after it is free. BCM5706/08 Firmware v3.7.1 --------------------- ***** TCP offload/L2 ***** Bug Fixes: 1. CQ#28522 - Fixed RSS table size problem. 2. CQ#29331 - Slightly increase the min RTO to ~210ms to avoid unnecessary retx during SPARTA nagle test due to late ack from remote MSFT stack. 3. CQ#29356 - There is a race condition when host send us a graceful disconnect kcqe and an abort kcqe at the same time, and causes L4CTX_OUBITS_ACTIVATE get reset which prevents COM to send tx completion before sending disc completion with status SUCCESS. This situation will cause host to assert. The safest thing to do is for COM to send disc completion with status ABORT. 4. CQ#29580 - In handling disconnect request in CP, make sure to update all kwqes info to L4 ctx first prior to setting the disc_bd flag. Without doing this, the txp could make wrong decision on when doing disconnect because it is reading the l4ctx_tcp_padding from the ctx without locking it. 4. Fixed generic buffer tracking mechanism in COM. Enhancement: 1. Added small packet coalesce mechanism. (ie. don't send out a packet that is less than MSS size if it is not at the end of application buffer) ***** iSCSi offload ***** Bug Fixes: 1. Multiconnection read mixed buffers bug fixed 2. Write and low performance bug fixed 3. Windows specific bug fixed 4. Fixing error reporting mechanism. Now TCP errors have their own KCQE opcode. Same is for iSCSI errors. Enhancement 1. TCP: a. Implementation of the handling of RST /SYN / FIN in option#1. b. Implementation of the Keep-Alive and Persist mechanisms. c. Fixed the implementation of the delayed acknowledge mechanism. d. Additional changes in order to comply to the TCP standard. 2. Improvement of the RxP performance. 3. Removing all the warnings related to the DBG_TRACE macro in release compilation mode. 4. Support for specific KCQE for IP fragments. 5. Support for Window scale option 6. Support for connection upload and termination in option 1 BCM5709 Firmware v3.7.0 --------------------- 1. CQ#29356 - There is a race condition when host send us a graceful disconnect kcqe and an abort kcqe at the same time, and causes L4CTX_OUBITS_ACTIVATE get reset which prevents COM to send tx completion before sending disc completion with status SUCCESS. This situation will cause host to assert. The safest thing to do is for COM to send disc completion with status ABORT. 2. CQ#29580 - In handling disconnect request in CP, make sure to update all kwqes info to L4 ctx first prior to setting the disc_bd flag. Without doing this, the txp could make wrong decision on when doing disconnect because it is reading the l4ctx_tcp_padding from the ctx without locking it. 3. Fixed generic buffer tracking mechanism in COM. 5. Enable TPBUFF workaround for A1 silicon for both L2 and L4 path. Version 3.7.0 (Apr 27, 2007) ============================ Fixes: ------ 1. Problem: CQ#28728 5708S B2 fails to negotiate link and driver becomes disabled during driver load/unload Cause: Pass u32_t type buf_len to WdfRequestRetrieveOutputBuffer() caused BSOD for IA64 system if the driver was free build. Fix: Change out_buf_len and in_buf_len type from u32_t to size_t for WdfRequestRetrieveOutputBuffer() and WdfRequestRetrieveInputBuffer(). 2. Problem: CQ#29159 WOL enabled in NVRAM causes BACS to report iSCSI boot "On" after running BACS diagnostics. Cause: The diag firmware cputest can mess up the iscsi boot signature area. Fix: Restore the signature after the diag tests to work around this problem. BCM5706/08 Firmware v3.7.0 --------------------- Enhancement: 1. Initial integration of iSCSI firmware with TOE produciton firmware. 2. Update Makefiles/linker script so gcc3.4.6 is used for official build. 3. Conditional out RDMA related code to save space. iSCSI offload supported features: - All iSCSI (fast path) command support (Read and Write) with/without immediate data, unsolicited data, header and data digest. - All iSCSI middle path support (Login, Logout, TMF, Text, Nop-In, Nop-Out of all types). - Support for cleanup WQE (used after TMF). - Support for all types of unsolicited PDUs (Reject, Async event). - Support for non-aligned traffic. - Support for option 1 connection offload. - Support for option 1 connection termination (upload) both graceful and abortive(partially tested). - Support for option 2 connection termination (both graceful and abortive). - Support for slow start and fast retransmit. - Correct TCP window management. - Support for delayed ACK. - Support for keep-alive and persist (implemented, not fully tested yet). Current FW performance (approximate): 512 byte Read stress - ~84k IOPS 512 byte Write stress - ~80k IOPS Support for multiple driver load/unload. Support for error reporting Known feature: currently incoming unsolicited Nop-Ins without payload and request to send a Nop-Out do not generate CQE. Unsupported / untested features: - Option 1 connection upload and connection termination not fully tested. - Event coalescing support (implemented and partially tested with xDiag. Not released though). - Correct context management (TOE / iSCSI context partitioning). - License enforcement and BACS integration. - iSCSI statistics support for Windows and Linux. - iSCSI L2 ring management (not checked with xDiag, but should be ok with Win/Linux). Known bugs (very rare to happen and should not affect PQA at this stage): - Sometimes data digest is reported by RV2P and forwarded to host. - Sometimes DMA got stuck (probably due to invalid host memory access). Version 3.4.3 (Apr 10, 2007) ============================ Fixes: ------ 1. Problem: CQ#28974 Yellow bang on vbd driver in W2K Cause: RtlGetVersion is not available on W2K Fix: Check and don't call it if it is W2K. 2. Problem: CQ#29042 Check driver asserts during mac loop back test. Cause: The driver tries to process RSS update kcqe as a TCP kcqe which is invalid. Fix: Ignore the RSS update kcqe. 3. Problem: CQ#29017 Changing Setting on iSCSI Boot device causes BSOD. Cause: Not return failed status for pdo remove query if boot option is on. Fix: Return failed status for pdo remove query if boot option is on. BCM5706/08 Firmware v3.4.5 --------------------- 1. CQ#29038 - Fixed a problem in broadcast/multicast L2 path where we queue duplicated packets to MCP resulted in MCP to double free the packet from the RX mbuff, and caused the RX mbuf link list to be corrupted. This causes traffic to both host and MCP to cease. 2. Fixed a false assertion in TXP reported by Microsoft during Longhorn testing where we didn't take account for the extra byte during TCP connection tear down. BCM5709 Firmware v3.4.7 --------------------- 1. CQ#29047 - Fixed a problem where TOE connections will not tear down properly when socket application is terminated. TXP may not process the tear down request when protocol flag has both L4CTX_TCP_TX_PROTOCOL_FLAGS_TIMER_DELAY_ACK and L4CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK flag set since the prior condition can causes TXP break out of its processing loop. The fix is to make TXP to process force ack request before doing the timer delay ack processing. 2. Fixed a false assertion in TXP reported by Microsoft during Longhorn testing where we didn't take account for the extra byte during TCP connection tear down. Enhancement: 1. Merged in the promiscuous mode fix when management firmware is active from BCM5706/08 production firmware to rxp.c. Version 3.4.1 (Mar 30, 2007) ============================ Fixes: ------ 1. Problem: CQ#28943 pinging will timeout on Vista x32/64. Cause: The driver will disable support for TCP offload if it is running on Vista x32/64. When TCP offload is disabled, transmit chain #1 is configured for catchup frames. Normal traffic cannot be sent on this chain, but the driver is using chain to passing normal traffic. Fix: Configure transmit chain #4 or cid 30/31 for catchup frames regardless of TCP offload support. 2. Problem: CQ#28971 LH: system break when trying to do a system restart with two 5708 adapters. Cause: The status block is not allocated if no client is enable. Clean up it will cause system break. Fix: Don't need to clean up it if no client is enable. BCM5709 Firmware v3.4.6 --------------------- 1. CQ#28467 - Added TPBUFF workaround to L4 tx data path to prevent tx buffer wraps around overwriting un-transmitted data. This fixes the chariot data corruption issue on tx side. 2. Update rxp_tcp.c to be the same as BCM5706/08 production firmware. Version 3.4.0 (Mar 27, 2007) ============================ Fixes: ------ 1. Problem: CQ#28564 Updating the driver from v3.0.x to v3.1.x results in two instances of "Speed & Duplex" in the NDIS miniport's device property page. Cause: The link speed configuration was changed recently from "req_medium" to "*SpeedDuplex". On a driver update, the old registry key was not deleted. Fix: The INF was modified to delete the old registry key. 2. Problem: ia64 system crash when shutting down. Cause: The driver doesn't release the hardware when the system doesn't support Sx wakeup. Fix: Use EvtDeviceD0Exit() to release the hardware when the system doesn't support Sx wakeup. 3. Problem: The driver needs shutdown type and Sx state to handle some cases when going to D3 but kmdf interface doesn't provide them. Fix: get the shutdown type and Sx state by using WdfDeviceInitAssignWdmIrpPreprocessCallback() to get power management irp which has these information. 4. Problem: CQ#28759 BCM5709S cannot link to 2.5Gb with a BCM5708S link partner. Cause: BCM5706/082 auto negotiation mode was not enabled. 5. Problem: CQ#28887 Continuous ACPI S4 test will cause the check driver to break into the debugger. Cause: The break occurs in the start_device routine, because the generic buffer list is inconsistent. The inconsistency occurs because the driver state is set to RUNNING too early. This is done while the generic buffers are being queued to the generic chain. Since the interrupt is shared, setting the driver state to RUNNING means the DPC will also run if other device sharing the interrupt line generates an interrupt. The DPC could also queue the generic buffers which will cause the inconsistency in the list since it is also being modified in the start_device. Fix: The driver state is set to RUNNING at the end of the start_device routine. BCM5709 Firmware v3.4.5 --------------------- 1. CQ#28669 - Added cs16 workaround in CP during dma operation to void kwqe corruption. 2. CQ#28532 - Restrict number of TCP offload connection to 32 due to limited CAM memory on FPGA. 3. Merged in the CLEAR_HQ_CACHE workaround code from BCM5706/08 to make sure we run into cache problem in TPAT. 4. Update COM_TCP.c code to be the same as BCM5706/08 production firmware. Enhancements: ------------- 1. Request: Add support for remote phy. 2. Request: CQ#28488 Change product version to 10.4. 3. Request: CQ#26642 VLAN support with iSCSI boot. Version 3.1.6 (Mar 9, 2007) =========================== Fixes: ------ 1. Problem: CQ#28699 F6-install causes system to crash after the final reboot of Windows installation. Cause: During F6-isntall, the VBD is supposed to modify the create_pdo_flag in the registry so the iSCSI pdo is always enumerated. The recent change for CQ#27436 has a side effect which will prevent the VBD from correctly modifying the create_pdo_flag. 2. Problem: CQ#28286 Chariot times out when running the FileSendShort script with chimney enable/disable toggling. Cause: Before a connection upload completes, the chip may receive a TCP FIN segment which will cause the driver to indicate a disconnect event immediately to the host. If there are buffered data (indicated to the stack as part of upload completion request), the stack will get the disconnect event before the data which is a problem. Fix: Upon completing an upload request, the disconnect event will not be indicated to the stack if there is buffered data. Instead the disconnect event is reflected in the TCP connection state. 3. Problem: CQ#26082 The device does not link with a 100 hub when the system goes to lower power state. Cause: 10mb and 100mb half duplex speeds were not advertised. BCM5706/08 Firmware v3.4.4 --------------------- 1. Enlarge the maximum hdr size to 64 words to avoid overflow during lso capture which resulted in TPAT assertion. 2. CQ#28734 - Make sure the firmware to honor the RSS disable request in CP. BCM5709 Firmware v3.4.4 --------------------- 1. CQ#28734 - Make sure the firmware to honor host request to disable RSS in CP. Enhancements: ------------- 1. Update BCM5709 rv2p_p2.h which has the recent changes made to the BCM5706/08 version. Version 3.1.5 (Mar 2, 2007) =========================== Fixes: ------ 1. Problem: CQ#28490 VBD: Cannot login to iSCSI target using MS iSCSI over TOE in x64 environment Cause: The cpu number from KeGetCurrentProcessorNumber() in isr is not correct because the high 8-bit value of the 16-bit data is not zero. Fix: Only use low 8-bit value for cpu number. 2. Problem: CQ#28563 WSD driver breaks with KMDF vbd because PDO name is invalid Cause: The driver doesn't provide pdo name. Fix: Provide a name for pdo. 3. Problem: CQ#28489 The power management tab allows for WOL configuration on a 5708S adapter even when the nvram configuration is set to disable WOL. Cause: The wol_cap parameter was read from the nvram during initialization but it was overwritten by the value in the registry. Fix: Overwrite the value in the registry with the setting in the nvram. Enhancements: ------------- 1. Add support for BCM5709 IPv6 TCP/UDP checksum offload. 2. Add support for BCM5709 IPv6 LSO. 3. Provide iSCSI boot signature info to B06_IOC_GET_DRIVER_INFO ioctl. 4. Fail any stop or remove actions if the device has iSCSI boot signature. BCM5706/08 Firmware v3.4.3 --------------------- 1. Fixed the com_no_buffer counter so it also tracks multi-cast and broadcast packet loss properly. Before the fix, it only tracks the uni-cast packet loss. 2. CQ#28520 - Fixed a problem where broadcast and multi-cast traffic didn't get route to L2/RDMA/ISCSI path when RSS is enable. BCM5709 Firmware v3.4.3 --------------------- 1. Added IPV6 LSO support. 2. Fixed a code merging bug in rxp.c where l2_interface_update_statistics wasn't getting call anywhere. 3. Changed the behavior of the com_no_buffer counters so it also tracks the broadcast and multi-cast L2 packets loss. In addition, restrict this counter to only track packet loss for both L2 and RSS path. BCM5709 Firmware v3.4.2 --------------------- 1. Remove reset cs16_vld bit workaround when cid indicates catchup packets. RV2P microcode will include this workaroud. 2. When checking for broadcast packets during statistic update, it should be enough for the firmware to check first dword of the MAC DA. Version 3.1.4 (Feb 14, 2007) ============================ Enhancements: ------------- 1. Request: CQ#27806 Add support for the following counters: unicast_bytes_rcvd, multicast_bytes_rcvd, broadcast_bytes_rcvd, unicast_bytes_xmit, multicast_bytes_xmit, broadcast_bytes_xmit. BCM5706/08 Firmware v3.4.2 --------------------- 1. CQ#28454 - Fixed LH NDIS6 checksum offload failure by passing the RXP bit status field to host so host driver can make the correct decision. 2. CQ#28482 - Fixed Offloadstress +TOE toggling on 5708B2 causing break in dbg. The host is looking for ms retx time stamp and an assertion to check the maximum retx time out. However, firmware is using 100us base time for retx timeout and passing up a large value without converting to ms base to host and cause the assertion. Now the firmware is changed to use ms timer base so this problem won't happen. 3. Implemented extra statistics counters so BCM5706/08 can pass LH NDIS6 certification. BCM5709 Firmware v3.4.1 --------------------- 1. Added zero packet workaround in TPAT so TDMA won't generate bad checksum when it encounters a series of zero dma length in ftqs back to back. This workaround is only active for a0 silicon. 2. Added workaround to reset cs16_vld bit when cid indicates catchup packets in ftq entry from RXP to RV2P so it prevents the RDMA block to lockup. 3. Added TPBUFF workaround in TXP for A0 silicon. 4. CQ#28482 - Fixed LH NDIS6 checksum offload failure. 5. Implemented extra statistics counters so BCM5706/08 can pass LH NDIS6 certification. Version 3.1.3 (Feb 8, 2007) =========================== Fixes: ------ 1. Problem: CQ#28437 Enabling the driver verifier on the VBD causes NDIS device node to disappear. Cause: The call to WdfFdoQueryForInterface may return a success status code that is different than STATUS_SUCCESS. Fix: Need to use the NT_SUCCESS macro to determine if the call is successful. Firmware v3.4.1 --------------- 1. Change minimum RTO from 1 second to 200ms so it is consistent with Linux and MSFT TCP stack. 2. Make sure TOE stack to do force ack so it sends out window update when received TCP zero window probe request from remote (ie. remote sends ack minus one). 3. Take out the 100us delay before flushing the rx/tx pipline (see CQ#25939 below) during TCP connection upload, instead RXP will drop the packet if the l4 context associated with the packet has been freed. The avoid us to slow down the CP and improve the sockdie performance. Version 3.1.2 (Feb 5, 2007) =========================== Fixes: ------ 1. Problem: CQ#28337 system break when running driver unload/load on two adapters continuously. Cause: using the interrupt handle in pdev after pdev was freed. Fix: using the interrupt handle in pdev before pdev was freed. 2. Problem: CQ#28382 BCM5709 - NDIS x64 driver is banged out with VBD v3.1.1 Cause: VBD did not provide BUS_INTERFACE_STANDARD interface to NDIS miniport driver. Fix: Add BUS_INTERFACE_STANDARD interface in VBD. Version 3.1.1 (Jan 30, 2007) ============================ Fixes: ------ 1. Problem: CQ#28189 Unable to pass traffic at 10mb. Cause: The Early DAC Wakeup Enable bit allows the transmitter to be shutdown in 10BT mode except for sending out link pulses. This allows for a low power operation in 10BT mode which is useful in WOL application. The default value of this register bit gets loaded from a strap value on the GPHY provided by the chip that instantiates the PHY. In BCM5709 this strap value is 1, meaning that the early DAC Wakeup Enable bit is set by default Fix: As a workaround for A0, the driver needs to clear this bit when bringing the PHY out of reset. 2. Problem: CQ#28246 BCM5709: system breaks in to debugger on Shutdown. Cause: The WdfInterruptSynchronize call in timer callback routines sometimes caused BSOD because the interrupt handler was invalid. Fix: Hookup to the interrupt enable/disable callback routines and use the system interrupt status to determine if the interrupt handle is valid. Also there are some other fixes for MSFT PNP tests. 3. Problem: CQ#28293 BCM5709 - Break exception when loading latest VBD on 5709C Cause: Failed the loading if WdfDeviceAssignSxWakeSettings() is failed. Fix: Change the assumption which assume the wake up setup have to success because in some systems it is not true. 4. Problem: CQ#28250 BCM5709 - BSOD when loading NDIS device on second BCM5709 AUT. Cause: When irq was shared, the interrupt was coming before setup completed. Fix: Don't serve the interrupt if the setup is not completed. Version 3.1.0 (Jan 23, 2007) ============================ Fixes: ------ 1. Problem: CQ#27436 F6-install does not work on systems with multiple devices. Cause: The current implementation of F6-install will load multiple instances of the bus driver on systems with multiple devices. During F6-install, the remove PnP irps are sent to the bus driver directly by passing ftsk on the second instance. This will cause the driver to crash since ftsk is still bound to it. Fix: Only allow one instance of the bus driver running during text mode setup. Enhancements: ------------- 1. Request: Add support for BCM5709. 2. Request: CQ#27230 Convert to a KMDF driver. Firmware v3.4.0 --------------- 1. CQ#27911 - Added RSS support for Multicast MAC DA. 2. CQ#28095 - Set DF bit in every TOE packets to avoid fragmentation in VPN tunnels. Version 3.0.7 (Jan 2, 2007) =========================== Firmware v3.0.2 --------------- 1. CQ#28005 - Fixed L4 performance problem with chariot high performance script by fine tuning the txp_tdbcThrhld to 29. It prevents some tcp connections that are transmitting with less than mss size to exhaust the TDBC when accumulate BDs and slow down the tx pipeline by capping the accumulation to up 3 cache lines such that other connections that transmitting at mss size have more caches to work with. Version 3.0.6 (Dec 29, 2006) ============================ Fixes: ------ 1. Problem: CQ#27970 System looks up while running Windows diag. Cause: The bus driver calls KeSynchronizeExecution on an interrupt object that does not exist. Version 3.0.5 (Dec 22, 2006) ============================ Fixes: ------ 1. Problem: CQ#27889, #27903 System is not able to ping a remote system after installing Microsoft iSCSI boot initiator and rebooting the system. Cause: The driver state was not restored when processing CANCEL_STOP PNP IRP. The routine um_bdrv_abort_stop_device is called to restore the driver state based on the current PNP state. However driver state was used to make this decision which is not correct. Fix: In um_bdrv_abort_stop_device, change GET_DRV_STATE to GET_PNP_STATE. 2. Problem: CQ#27557 System could crash when resuming from S4. Cause: This problem occurs on system with the device sharing interrupt with another device. During initialization a device could be interrupted (by an active device). The ISR then falsely schedule a DPC because the status block has not been reinitialized, resulting in the use of a stale status to determine packet completions. Fix: Reset the status block when the device is being reset. Enhancements: ------------- 1. Request: CQ#27950 Modify the INF file to create a "product_version" key. 2. Request: CQ#27902 Make iSCSI fast response registry configurable. Firmware v3.0.1 --------------- 1. CQ#25939 - When initiating tcp upload, we should invalidate the cam first, then delay 100us before we flush the rx/tx pipeline. This allows the remaining data of this connection in the rx pipeline get processed properly by RXP. Otherwise, there could be situation that context memory of the connection is freed but there is still some data in RXP ftq waiting to be processed as l4 data with reference to the freed context. This will cause RXP to assert. 2. CQ#27886 - Fixed context memory allocation boundary wrapping. The incorrect wrapping could cause firmware to allocate the same physical page to 2 different vcids. Version 3.0.4 (Dec 14, 2006) ============================ Fixes: ------ 1. Problem: CQ#27834 BACS could not determine the medium type if there were no client device bound to the VBD. Cause: The medium type of the device is not returned in the b06_driver_info_t structure if nothing is bound to the VBD. 2. Problem: CQ#27863 Checked version of Windows asserts in MmFreeContiguousMemory when running WSF on the client system. Cause: The call to MmFreeContiguousMemory is at an IRQL dispatch which is illegal. Fix: Changed the default parameter for "use_mblk_pool" to FALSE. This will prevent the driver from dynamically allocating shared memory. Firmware v3.0.0 --------------- 1. CQ#27401 - Added mechanism to toggle between "strict" and "relax" nagle. This prevented a performance hit when using MSFT initiator to format a drive. The root cause is that sometime our TOE stack will generate a odd number of packets for each iSCSI write with last packet size less than mss. With Nagle enable, TOE stack won't send out the last packet since it is trying to coalsce the bytes util it reaches mss or until target acked all the bytes it has received. Target delayed the last ack because it is enforcing the delay ack mechanism (ie. ack every two segments received). Therefore the last ack won't get send out until target delay ack timeout (~200ms). This drastically reduce the performance when formatting a drive. 2. CQ#27725 - Avoid COM assertion by making sure the tcp receive window calculation won't exceed l4ctx_tcp_max_adv_win. Version 3.0.3 (Dec 11, 2006) ============================ Fixes: ------ 1. Problem: CQ#27760 Failures when running the Test Rebalance test of the PnPDTest suite. Cause: There were ref_cnt and logic bugs when handling IRP_MN_START_DEVICE, IRP_MN_SURPRISE_REMOVAL, and IRP_MN_STOP_DEVICE which caused more than one pnp tests failed. 2. Problem: CQ#27775 Driver may crash while running BACS diagnostic. Cause: The txq->hw_con_idx_ptr for the catchup is not initialized because this transmit queue is not needed for diagnostic. But the interrupt service routine requires this pointer to be valid for determine transmit completion. Fix: Initialize txq->hw_con_idx_ptr to a valid pointer even when the diagnostic driver is bound to the VBD. Version 3.0.2 (Dec 6, 2006) =========================== Fixes: ------ 1. Problem: CQ#25647 BACS cable diagnostic does not work. Cause: Cable diag fails because the phy is in power down mode. The boot code puts the PHY in power down mode when all the client devices are unbound from the vbd. The PHY remains in power mode when the diag client device binds to the vbd. Fix: Take the PHY out of power down mode when the diag driver binds to the VBD. 2. Problem: CQ#27493 The host stack could tear down a SMB connection after it is uploaded from the chip. Cause: The TCP delegated value for MaxSndWin is invalid which causes the host stack to drop incoming packets. Eventually, after 10 seconds, the stack will tear down the connection. Firmware v2.8.26 ---------------- 1. CQ#27682 - fixed L5 to work with new CAM (workaround) logic in CP. Version 3.0.1 (Nov 28, 2006) ============================ Firmware v2.8.25 ---------------- 1. CQ#27512 - removed checking of RLUP_STATUS_SUCCESS bit during CAM lookup because the bit is shared with lookup/add/invalidate operations. Removing it prevented a problem where we could end up with two cam entries with the same tuples when RDMA connections are offloaded. Version 3.0.0 (Nov 15, 2006) ============================ Fixes: ------ 1. Problem: CQ#27260 Chariot could fail data validation when running the hi-perf script while TOE enable/disable is being toggled continuously. Cause: When generic buffers span two application buffers with an island to the left, Rv2p could may instruct the driver to copy data from generic buffers to the wrong location in the posted buffer. Fix: Include a new Rv2p microcode. The new microcode will only issue a copy operation up to the left edge of an island. 2. Problem: CQ#26743 BACS Allows Adding iSCSI Boot Device to Team Cause: BACS has No information from drivers for it. Fix: Add L2_IOC_GET_ISCSIBOOT_PAGING_INFO to l2_query_information() which provide iSCSI boot signature and paging path counter information. Also paging path counter is separated from other counters and fixed the PDO paging path counter by saving the InPath flag before sync_send_irp() which will change the Inpath flag. 3. Problem: CQ#27326 IPMI enabled on BCM5706/08 adapter stops traffic on Host OS when Guest OS launched in MS Virtual Server. Cause: When IPMI is enabled, the firmware does not forward traffic to the host even when the receive mask is set to promiscuous mode. Fix: Firmware v2.8.23 fixes this problem. The host driver also needs to set RPM_SORT_USER0_PROM_VLAN in the sort mode register. Firmware v2.8.24 ---------------- 1. CQ#26326, #24334 - Increase interrupt generation on an iSCSI connection. 2. CQ#27370 - fixed TPAT assertion when receiving a packet less than the mss during LSO capture state. 3. CQ#27463 - fixed missing BD problem when TCP nagle is enable. 4. CQ#25618 - fixed tcp invalid ack checking. The ack number must fall between snd_max+1 and snd_una in order to be valid. 5. CQ#25916 - Make sure to forward all traffics to host when host is programmed for promiscuous mode and PM 0 didn't have a match while other PMs have match. Version 2.9.6 (Oct 18, 2006) ============================ Fixes: ------ 1. Problem: CQ#27024 Not able to offload all 1024 connections on x64. Cause: The call to MmAllocateContiguousMemory at IRQL Dispatch is more likely to fail which will lead to the driver failing the connection offload request. Fix: Change the driver to call MmAllocateContiguousMemory at IRQL passive. 2. Problem: Data corruption could occur when a connection is uploaded and the stack continues passing traffic in L2 mode. Cause: When a connection is uploaded a transmit buffer could be partially completed. The stack will then continue transmitting the buffer in L2 mode starting at the location where the offload target had left off. This location is specified by the offload target by advancing the buffer pointer to point to the unsent data. When the buffer is partially completed, the buffer pointer is advanced incorrectly causing the stack to send data in L2 mode from the wrong location. Fix: Fixed the logic for computing the size of the buffer that were sent successfully. Firmware v2.8.22 ---------------- 1. CQ#22527 - Added TCP nagle support with TBD cache FREE_CNT check. Version 2.9.5 (Oct 5, 2006) =========================== Firmware v2.8.21 ---------------- 1. Back out the changes in v2.8.20. 2. CQ#26907 - Added cam workaround. 3. CQ#23436 - l4ctx_gen_bd_max is set to 0xff if TCP receive window is too big. 4. CQ#23467 - TCP receive window may close if the maximum receive window size is smaller than application buffer size. Version 2.9.4 (Sept 18, 2006) ============================= Fixes: ------ 1. Problem: CQ#26659 Slow backup when running EMC networker backup with TOE disabled on the client. Cause: The client could take a long time (up to 500ms) to send TCP ACK back to the server. The long delay is a side effect of the fix for CQ#23327 in VBD v2.8.7 which reduces locking overhead associated with de-queuing receive packets. Fix: When receive packets are not de-queued but the status block is acknowledged, the driver will cause the chip to generate a timer interrupt within 100us. This timer interrupt triggers the driver to process the packets in a timely manner. Enhancements: ------------- 1. Request: CQ#26208 Add a new registry configuration "keep_vlan_tag" for controlling VLAN tag stripping. 2. Request: CQ#26673 Disable the enumeration of the WSD PDO on Windows 2000. Firmware v2.8.19 ---------------- 1. Fixed TPAT to invalidate header queue pre-fetch after processing each FTQ entry. Version 2.9.3 (Aug 15, 2006) ============================ Fixes: ------ 1. Problem: CQ#23060 Web-bench shows lower performance when TCP offload is enabled. Cause: During this particular Web-bench test, connections are offloaded for only a brief period of time. As a result, overhead associated with connection offload is more apparent. Change: 1) Wherever possible, look-aside list is used for memory allocation. 2) Wherever possible, memory allocations are combined. Instead of allocating multiple small blocks, one big block is allocated. 3) Offload connections at IRQL DISPATCH. Version 2.9.2 (Aug 9, 2006) =========================== Fixes: ------ 1. Problem: CQ#26256 A break occurs with the message below when running sockdie maxtput. PANIC!!! if(((gen_buf->buf_virt - (u8_t *) 0) & LM_PAGE_MASK) != (gen_buf->buf_phy.as_u32.low & LM_PAGE_MASK)) Cause: The break occurs because of a change in generic buffer alignment causing an inconsistent virtual and physical address. Version 2.9.1 (Aug 8, 2006) =========================== Fixes: ------ 1. Problem: CQ#26235 A crash will occur after installing the driver on Windows 2000. Cause: The driver imports InterlockedPopEntrySList which is not available in Windows 2000. This routine is called from ExAllocateFromNPagedLookasideList. Change: The sources file needs to have the _WIN2K_COMPAT_SLIST_USAGE define which will force the driver to use W2K compatible version of ExAllocateFromNPagedLookasideList. 2. Problem: CQ#26244 A crash will occur after installing the driver on Windows 2003 x64. Cause: The crash occurs because the NPAGED_LOOKASIDE_LIST structure isn't 16-byte aligned on x64/ia64 system. Change: Ensure the start of the main device structure is 16-byte aligned. Firmware v2.8.18 ---------------- 1. Fixed the TCP statistics double counting issue. Version 2.9.0 (Aug 7, 2006) =========================== Fixes: ------ 1. Problem: CQ#22702 There is no power management tab in the Miniport's device property page. Cause: The S part does not advertise WOL capabilities. Change: Enable WOL capabilities for the S part only if the NVRAM is configured for a LOM device and it is also configured to allow the device to have Gigabit link on vaux. 2. Problem: CQ#25985 System could crash when driver verifier low resource simulation is enabled. Cause: During connection offload, the driver may not be able to allocate memory. The call to allocate memory returns a NULL pointer which the driver references, causing a crash. 3. Problem: CQ#25998 BCM5706S may not be able to pass traffic when the device is configured to do "autoneg with 1Gb fallback" and the switch setting is changed for forced to auto negotiation. Cause: The driver read the wrong phy register to determine if the link partner is sending config words. When the driver detects that the link partner is sending configs, it will restart autonegotation. 4. Problem: CQ#26068 Hit an assert in a checked OS during shutdown. Cause: Timer objects are not initialized if there is no child device bound to the bus driver. During shutdown, the driver tries to cancel the timer objects causing an assert in the OS because these objects are not initialized. Change: Cancel the timer objects only if the current or the previous driver state is RUNNING. 5. Problem: CQ#26127 System intermittently crashes when un-installing the NDIS miniport while BACS is running. Cause: When NDIS miniport is un-bound, the bus driver goes to the SETUP state which will free the statistics block. The crash occurs when BACS queries the bus driver for statistics causing a reference to a memory block that has been freed. Change: The driver is modified to return statistics of zero's when it is in the SETUP state. Enhancements: ------------- 1. Request: CQ#24744 Modify the description of jumbo frame setting to "Jumbo Mtu". 2. Request: CQ#24746 Make WOL capabilities configurable through BACS but don't show this parameter in the Miniport's property page. Version 2.8.15 (July 12, 2006) ============================== Firmware v2.8.17 ---------------- 1. Fixed bug in L5 Tx pipeline code that was preventing retransmission flush from propagating through to COM. Version 2.8.14 (July 8, 2006) ============================= Fixes: ------ 1. Problem: CQ#22974 WSD PDO is not enumerated after using a configuration utility to change the enumeration flag in the registry to enumerate the WSD device. Cause: The driver keeps an internal flag to enumerate the WSD PDO when the NDIS miniport device has successfully started. This flag is never set if the L2ND device has successfully started without WSD PDO enumerated. As a result, a subsequent change to the create_pdo_flag to enumerate the WSD PDO will not cause the driver to enumerate the WSD device. Fix: Remove the use of the internal flag. Instead, use the create_pdo_flag to determine whether or not to create the WSD PDO. Version 2.8.13 (June 30, 2006) ============================== Fixes: ------ 1. Problem: CQ#25526 The driver may hit a driver verifier bugcheck when disabling the NDIS miniport which the WSD device stack active. Cause: The driver calls IoDeleteDevice to remove the WSD PDO in the context of the L2ND IRP_MN_REMOVE_DEVICE irp. This call causes a bugcheck in the driver verifier if the WSD device is active since the device object is still be referenced. Fix: The WSD PDO is deleted in the context of IRP_MN_REMOVE_DEVICE irp if the L2ND PDO has already been deleted. 2. Problem: CQ#22974 WSD PDO is enumerated after using a configuration utility to change the enumeration flag in the registry to not enumerate the WSD device. Cause: The driver keeps an internal flag to enumerate the WSD PDO when the NDIS miniport device has successfully started. This flag does not reset. As a result whenever the NDIS miniport loads successfully, the WSD PDO will always be enumerated. Fix: Qualify the internal flag for enumerating the WSD PDO with the enumeration flag from the registry. Firmware v2.8.16 ---------------- 1. Fixed problems in upload path in L5 TxP. Version 2.8.12 (June 23, 2006) ============================== Fixes: ------ 1. Problem: CQ#25505 Link remains active when the device is disabled. Cause: Boot code does not power down the PHY/SERDES when the driver is disabled. Change: Boot code v1.9.2 defines a new message, DRV_MSG_CODE_UNLOAD_LNK_DN, which allows the driver the option of bringing the link down whenever it unloads. Firmware v2.8.15 ---------------- 1. Fixed race condition in L5 TCP state upload path. Version 2.8.11 (June 15, 2006) ============================== Firmware v2.8.14 ---------------- 1. Added workaround to compiler out of order instruction generations. Version 2.8.9 (June 15, 2006) ============================= Fixes: ------ 1. Problem: CQ#25200 Unable to load the driver in W2K. Cause: The call to KeFlushQueuedDpcs is not available on W2K. Fix: The driver will get the entry point to this routine during initialization. This call will not made when the driver is running on W2K. 2. Problem: CQ#25280 Event viewer does not show events generated by the driver. Cause: The insertion string is too long causing the call to IoAllocateErrorLogEntry to fail. Change: Use the PDO device name as the insertion string. Enhancements: ------------- 1. Request: CQ#24764 Include additional devices in the INF file. 2. Request: CQ#24643 Honor the new NVRAM speed settings. The new setting allows a user to configure the device to do auto negotiation and if auto negotiation fails, the device falls back to 1Gb forced. Firmware v2.8.13 ---------------- 1. Fixed another L4 upload causing assert in VBD. 2. Fixed L5 race condition that could lead to connection hung. Version 2.8.8 (June 5, 2006) ============================ Fixes: ------ 1. Problem: CQ#25000 Disabling the driver causes an assert with the following message: ( um_clnt.c, 494): PANIC!!! if(CLIENT_REFCNT(pdev, do_type)). Cause: Reference count was not decremented when completing forwarding packets. This bug was introduced in v2.8.7 when the fix for CQ#23327 was added. 2. Problem: CQ#25013 Assert in the driver verifier with the following message: WDM DRIVER ERROR: [bxvbdx.sys @ 0xF7A0EB57] A driver has passed an invalid device object to a function that requires a PDO (DevObj = 8C2FE250). Cause: The driver passes the next device object in the call to IoGetDeviceProperty. The driver verifier is expecting the physical device object of the bus driver's FDO. 3. Problem: CQ#25021 BACS interrupt test fails. Cause: The interrupt test monitors for changes in the variable isr_cnt which gets incremented when an interrupt is recognized and the driver schedules a DPC. Due to the fix for CQ#23327, this variable may not be incremented even when an interrupt is recognized by the driver. Change: The fix is to add a new variable intr_recognized_cnt that gets incremented whenever an interrupt is recognized by the driver. The interrupt test will monitor for changes in variable. 4. Problem: CQ#24594 BACS MAC loopback test fails intermittently. Cause: MAC loopback may not work if the EMAC_MODE_HALF_DUPLEX bit is set in the EMAC mode register. This bit is set if the current link is configured for half duplex. Change: The fix is to ensure EMAC_MODE_HALF_DUPLEX bit is not set when the driver is configured for MAC loopback. Firmware v2.8.12 ---------------- 1. Fixed L5 upload causing assert in VBD. 2. Redo the clearing the L4 upload state after upload -- using different scheme to handle L5 upload. 3. Fixed L4 upload causing assert in VBD. Version 2.8.7 (May 17, 2006) ============================ Fixes: ------ 1. Problem: CQ#23327 High CPU utilization when running Web-bench with RSS enabled. Cause: When RSS is enabled, the number of packets received per DPC is much lower than when RSS is disabled. The overhead in entering and exiting the DPC is spread over a smaller number of packets. Change: Batch receive processing so that when RSS is enabled, the number of packets processed during a DPC is higher. 2. Problem: CQ#24647 Network settings in an answer file do not take effect during unattended installation. Cause: Microsoft installer only expects PCI network device when applying network configurations specified in the answer file. Currently the bus driver reports the bus type of all the client devices as Internal when the installer expects PCIbus. Change: In response to IRP_MN_QUERY_BUS_INFORMATION query, the bus driver returns PCI bus type for all the client devices. Firmware v2.8.11 ---------------- 1. Undo the clearing of L4 upload state after upload -- this was causing failures in destroy QP. 2. Fixed L5 retransmit, which was broken in integrated firmware. Version 2.8.6 (May 4, 2006) =========================== Firmware v2.8.9 --------------- 1. Cleared the L4 upload state after upload which is asserted when the same CID is offloaded again in the case of L5. 2. Fixed 2K IO receive issue. Version 2.8.5 (May 3, 2006) =========================== Enhancements: ------------- 1. CQ#22904 - Add support for external loopback at 10Mb and 1Gb. Currently only 100Mb external loopback is supported. Firmware v2.8.8 --------------- 1. Fixed bug in L5 TxP firmware - segd.push_flags was not being initialized in L5 post_scan callout(s), causing FIN from previously closed L4 connections to be set in new L5 segments and causing erroneous behavior in mixed mode (TOE/RDMA) traffic environment. Version 2.8.4 (Apr 27, 2006) ============================ Firmware v2.8.7 with new rxpfw.h -------------------------------- 1. Fixed use of GRC access macros in rxp. Version 2.8.3 (Apr 26, 2006) ============================ Enhancements: ------------- 1. Include a new enhancement to work around the CQ#23945, #23864, and #23123 issues. The new enhancement will handle S1, S2, and driver unload cases. Firmware v2.8.7 changes: ------------------------ 1. L4 context variable rearrangement (tcp_pad<-->l4ctx_timer) to eliminate L5 context corruption at offload (probably a benign bug). 2. Fixed bug in L4 offload portion that was freezing on QP Migration/sockdie. 3. Added use of GRC access macros (PUT_GRC/GET_GRC) in RxP to try to fix lockups seen in PQA with WSD on IVBD/5706. Version 2.8.2 (Apr 19, 2006) ============================ Enhancements: ------------- 1. Request: Include firmware v2.8.5. 2. Request: Update the TCP offload firmware to T2.6b release. Version 2.8.1 (Apr 14, 2006) ============================ Enhancements: ------------- 1. Request: Include firmware v2.8.4. 2. Request: Compress code to fit 5706 SPAD memory footprint. Integrated firmware now supports both 5708 and 5706 targets. Version 2.8.0 (Apr 11, 2006) ============================ New Features: ------------- 1. Full C-NIC feature set (TOE, iSCSI(HBA), RDMA) support integrated in one firmware image. Notes: ------ 1. This version of firmware only supports 5708. 2. This version of firmware is tested / validated for stability with WSD kernel wrapper (bxkw...) version 2.5.60406. Fixes: ------ 1. Problem: CQ#23742 BCM5708S may miss link change event when used with IXIA. Cause: Not reading the correct value from the MII_Status register during servicing of a link-up event. Change: Added code to re-read the MII-Status register. 2. Problem: CQ#24281 On a non-ACPI system, magic packet is able to wake up the system from hibernation even when the NVRAM WOL setting is disabled. Cause: The driver enables magic packet wake-up regardless of the NVRAM setting. Change: Only enable magic packet wake-up if the NVRAM WOL setting is enabled. 3. Problem: CQ: Cont00024204: Memory Deregister Assertion inside SANP when running sockdie test script Cause: Bug in CP firmware for creating QP context was causing corruption of unrelated physical context memory. This was causing random region table entries to be zeroed in context memory, which would manifest as a region already appearing to be deregistered when the memory region deregister command was issued. Fix: Remove extraneous / errant context memory write during QP context initialization on CreateQP in CP firmware. 4. Overall stability of WSD/RDMA data and control paths is greatly improved. All outstanding CQ entries logged against WSD/RDMA should be re-evaluated with a VBD incorporating this firmware version or later. Version 2.6.17 (Apr 21, 2006) ============================= Fixes: ------ 1. Problem: CQ#24445 Continuous loading/unloading of the VBD running on BCM5706 may cause the system to lockup. Cause: Instrumentation added to resolve CQ#24059 revealed a known issue in GRC access. This known issue is fixed in the 5708-B1. Fix: Include firmware v2.6.8 which has the instrumentation removed. Version 2.6.16 (Apr 13, 2006) ============================= Fixes: ------ 1. Problem: CQ#23742 BCM5708S may miss link change event when used with IXIA. Cause: Not reading the correct value from the MII_Status register during servicing of a link-up event. Change: Added code to re-read the MII-Status register. 2. Problem: CQ#24281 On a non-ACPI system, magic packet is able to wake up the system from hibernation even when the NVRAM WOL setting is disabled. Cause: The driver enables magic packet wake-up regardless of the NVRAM setting. Change: Only enable magic packet wake-up if the NVRAM WOL setting is enabled. Version 2.6.15 (Apr 8, 2006) ============================ Fixes: ------ 1. Problem: CQ#24181 A non-ACPI system may crash during hibernation. Cause: In certain scenario, the workaround for CQ#23945, #23864, and #23123 may cause to the chip to DMA a status block to a memory location that has already been freed. Change: Make sure the memory block needed for the workaround is not freed. 1. Problem: CQ#24059 LOM2 hangs during chariot TOE tests. Cause: Receive pipeline stall due to context corruption. The context corruption is caused by a race condition where the write operation to the context page table can be performed out-of-order w.r.t. a context read operation. This race condition is only exposed during stress context access. Change: Include firmware v2.6.7. Version 2.6.14 (Apr 3, 2006) ============================ Fixes: ------ 1. Problem: CQ#23737 BCM5708S cannot wake up from hibernation with a magic packet. Cause: The driver initializes the Serdes for 10/100 Mb which are not valid speeds. Change: Only initialize the PHY for 10/100 Mb if the device is not the S part. 2. Problem: CQ#24062 Failing 2c_OffloadLargeSend NDIS test v4.03.91 running on a system with SNP. Cause: Failure occurs when RSS is enabled on the support card. One of the processors could loop through the status block for too long in servicing a receive queue. The second processor may already have finished servicing the other receive queue. Then new packets arriving in this queue was not being processed and eventually filled up the queue. Change: Changed the default dpc_loop_cnt to 1 when RSS is enabled. 3. Problem: CQ#23417 Send window may unexpectedly close causing all file transfers to stall. Cause: Algorithm for opening the send window was originally implemented according to RFC-793. However there is a deficiency in this algorithm that could cause the send window to unexpected close. Change: Included the new firmware which has a more robust algorithm for updating the send window. Version 2.6.13 (Mar 23, 2006) ============================= Fixes: ------ 1. Problem: L4 connections do not get offloaded due to invalid license key. This problem occurs when running with the latest boot code. Cause: The latest boot code moves the shared memory to a different location but the latest firmware references a fixed location for the shared memory. Change: Include a new firmware that dynamically determine the shared memory location from the shmem header information. 2. Problem: CQ#23945, #23864, #23123 System may lock up or generate IERR when the PCI-E interface of the 5708 attempts to transition into L1 state. Cause: The EPB (PCI-E bridge on the 5708) may miscalculate the number of available flow control credits after a wrap around condition, and this miscalculation can lead to a case where PCI-E protocol is violated and the L1 state is not entered correctly. This in turn could lead to a system hang or IERR. Change: Add a workaround to force flow control credit rollover condition when the system is entering S3, S4, or S5. This condition will prevent us from transitioning to L1. 3. Problem: CQ#23799 Running Chariot 1-byte send script causes the device from passing traffic. Cause: The Nagle fix (CQ#22527) could cause TBDR block to lock up. Change: Include the new firmware which as the Nagle fix removed. 4. Problem: CQ#24000 Chariot times out with an error message "Data received does not validate correctly". Cause: The Nagle fix (CQ#22527) could cause chariot to times out. Incomplete data transfer could occur resulting in data mis-compare. Change: Include the new firmware which as the Nagle fix removed. 5. Problem: CQ#23838 Child device's property page does not show PCI slot number on IA64. Cause: PCI slot number is the UINumber from the DEVICE_CAPABILITIES structure. Currently the UINumber is obtained from the PCI bus driver but on some system this number is obtained from the next lower device which could be a filter driver. Change: The driver is changed to submit the IRP_MN_QUERY_CAPABILITIES to the attached device object. Version 2.6.12 (Mar 9, 2006) ============================ Fixes: ------ 1. Problem: CQ#23378 Traffic stops when passing Chariot, iSCSI, and RSS traffic at the same time. Cause: There is a piece of code that initializes RSS key by writing the value to rlup registers. Because of a BCM5706 bug, accessing rlup when RSS is enabled could cause a GRC lockup. Change: Since firmware is computing the RSS hash value, loading the RSS secret key is not necessary. The piece of code in question is commented out. 2. Problem: Traffic stops after running tests for several days on the DC deployment systems. Cause: COM hits a spurious assertion. Change: Removed the assertion. Enhancements: ------------- 1. Request: CQ#22527 Add support for TCP Nagle algorithm. Version 2.6.11 (Feb 22, 2006) ============================= Fixes: ------ 1. Problem: CQ#23310 Running sockdie -maxconns causes an assert in the driver. Cause: The assert occurs because the driver is not able to allocate memory for a connection offload. Change: Added code to fail the offload gracefully when resource is not available. 2. Problem: CQ#23304 A stall occurs during MSIT DC deployment. Cause: There were a lot of L2 transmit requests pending in the driver because the firmware asserted. The assertion occurs if UDP checksum isn't 0 or 0xffff. Since UDP checksum is filled by the OS, it will never be 0 and mostly won't be 0xffff, thus the assertion is not valid. Change: Modified the firmware to quality the assert with UDP checksum offload. 3. Problem: CQ#23305 Running sockdie -maxconns causes an assert in the driver. Cause: The assert checks to make sure the path state pointer is valid when offload tcp state. The path pointer will not be valid if it had been previously uploaded. Change: Modified the driver to not reference an invalid path state during tcp offload. The firmware will eventual fail the tcp offload. 4. Problem: CQ#23134 Symantec backup software does not work when the connection is offloaded. Cause: When a connection is disconnected, pending buffer posts are completed to the stack with the status ABORTED. This status does not convey enough information to the stack with regard to the type of disconnect. Change: The stack and the driver needs to used the new status code REQUEST_RESET when completing requests due to a connection being abortive closed. 5. Problem: CQ#23395 Running ntttcp continuously and while enabling/disabling the VBD may cause a bugcheck. Cause: The checked driver gets a pointer to a client context and then asserts if the do_type is invalid. This pointer could be NULL if the client is being unbound from the bus driver. Change: Qualify the assertion with a non-NULL client context pointer. Version 2.6.3 (Feb 11, 2006) ============================ Fixes: ------ 1. Problem: CQ#23017 Unable to receive packets on any of the alternate MAC addresses. Cause: The driver fails the request to set alternate MAC addresses if the input buffer is too big. Change: Accept the first four valid MAC addresses disregarding the size of the input buffer. 2. Problem: CQ#23052 Driver may crash when running IIS Stress test. Cause: A previously offload request for a path state had failed and during the offload of a dependent TCP state, the driver references the path state which does not exist. Change: The driver will not reference the path state if it had failed the offload request. 3. Problem: CQ#23075 Ping to one of the MMA's does not work after coming out of standby. Cause: Perfect match filter was not enabled after a chip reset. Change: Enable the appropriate perfect match filters. 4. Problem: CQ#23223 Offloaded connections may get stuck in the LAST_ACK state. Cause: If an application post a buffer that is not entirely filled into the transmit chain, the firmware will not complete the request. The firmware notifies the driver of completions when it sees the descriptor marked by the END bit. Change: Changed the driver to mark a descriptor with the END bit with the descriptor crosses page boundary. 5. Problem: CQ#22998, CQ#23129 Driver crashes during PnPDtest double start test. Cause: The bus driver is not failing the second start IRP. Change: The second start IRP will fail if the first one had process successfully. Version 2.6.2 (Jan 30, 2006) ============================ Fixes: ------ 1. Problem: CQ#22504 Driver may crash going into hibernation. Cause: Driver processes generic buffer list that is invalid. Change: Make sure generic buffer list does not have any entry when TCP offload is not enabled. 2. Problem: Low throughput with ntttcpr. Cause: TCP receive window may not open when data are placed into a pre-posted buffer. Change: Included a new firmware. 3. Problem: Getting spurious interrupts when passing traffic. Cause: The write to mask off the chip's interrupt in the ISR is posted, so the ISR could be called again before the interrupt line de-asserts. Change: The driver will save the status block index when the ISR is called. The second time it is called, if the index is the same the driver will issue a register read to flush the posted write. Enhancements: ------------- 1. Request: Include additional devices in the INF file. 2. Request: Change the maximum iSCSI connections to twelve. Version 2.6.1 (Jan 13, 2006) ============================ Fixes: ------ 1. Problem: CQ#22560 Unable to start Windows diagnostic when iSCSI PDO is enumerated. Cause: The bus driver prevents the diag PDO from being enumerated when the iSCSI PDO is present. Change: This restriction is removed. 2. Problem: Driver may crash if an application post a very large transmit buffer. Cause: The driver submits a disconnect request to the firmware when not all the buffers are posted to the chip. As a result the disconnect TCP sequence number was incorrect. Change: Pend the graceful disconnect request until all the transmit buffers are posted. 3. Problem: Offload stress with many connections offloaded may cause the driver to crash. Cause: When a path offload fails and a TCP offload is in progress, the path reference in the TCP data structure is set to NULL. Then we the TCP state is being offloaded, the driver references the path pointer which is NULL, resulting in a crash. Change: Before reference the path state, check to see if it is NULL and fail the request accordingly. Version 2.6.0 (Dec 21, 2005) ============================ Fixes: ------ 1. Problem: CQ#22447 BACS cannot create a handle to the bus driver if there was PDO enumerated. Cause: VBD device interface was not created when there is no PDO enumerated. Change: The VBD will always create a device interface when it is loaded. 2. Problem: CQ#22126 During driver reset, the driver may think the firmware is not present because it takes too long to respond to a driver command. Cause: Driver thinks the firmware times out on the Wait2 synchronization. This state is obsolete. Change: Removed the Wait2 synchronization. Enhancements: ------------- 1. Request: Clean the VBD interface. 2. Request: CQ#21843 - Add support for dynamic WSD mailbox queue mapping. 3. Request. CQ#22328 - Set PME_Enable bit on hibernation. Version 2.5.21 (Dec 9, 2005) ============================ Fixes: ------ 1. Problem: CQ#22203 Running ntttcp with receive window larger than 64k causes an assertion in the driver. Cause: The driver has a fixed size buffers for storing pointers to buffered data. Currently, this buffer can hold 40 pointers which is not large enough to handle large window size. Change: The size of the buffer used for storing pointers to buffered data is calculated from the initial TCP windows size. 2. Problem: CQ#22281 Hitting an assert in the bus driver when the path and TCP states are offloaded at the same time and the path state fails the offload. Cause: The assert is invalid. Change: The assert is removed. 3. Problem: CQ#22286 Running http stress causes an assert in the driver. The assert ensures the MiniportOffloadContext is properly initialized when a connection is uploaded. Cause: A TCP upload request may be submitted to the hardware out of order if the connection is in the middle of indicating receive data. Change: Added a TCP upload request queue. An upload request will go into this queue if the connection is in the middle of indicating buffered data. All subsequent upload requests will be installed by placing them into this queue. Version 2.5.19 (Nov 22, 2005) ============================= Fixes: ------ 1. Problem: CQ#2081 Running BACS when there is no client device bound to the bus driver causes an assert. Cause: The NVRAM interface is not initialized when the bus driver is in the SETUP state. BACS is accessing NVRAM in this state. Change: Modify the driver to initialize the NVRAM interface during the SETUP state. 2. Problem: CQ#2081 Driver did not program the SERDES pre-emphasis. Cause: The pre-emphasis was not initialized when link is active. This value should be initialized prior to getting link. Change: Driver was changed to setup the pre-emphasis during initialization. Enhancements: ------------- 1. Request: Add support for licensing. Version 2.5.18 (Nov 7, 2005) ============================ Fixes: ------ 1. Problem: WOL test on W2K causes an assert in the driver. The assert checks to make sure a power IRP is completed before processing the next one. Cause: The reference counter that tracks the number of pending power IRPs is decremented after completing a power IRP. This counter is supposed to be decremented before the completion call as the system could submit a new power IRP in the context of the completion. Change: Decrement the reference counter before completing a power IRP. 2. Problem: Low throughput on multi-processor systems with interrupt spreading enabled in the BIOS. Cause: The bus driver enables RSS support by default. So each receive queue is associated to a particular processor at initialization time. Whenever a receive event comes in, a DPC is always scheduled to run on that processor even though an interrupt was generated on a different processor. Normally a DPC is scheduled on the same processor that is running the ISR. Under this situation, the ISR to DPC latency is much short than the case where the DPC is run on a different processor. With this issue, RSS is not supported by the NDIS5.1 driver yet the DPC only ran one processor because the RSS code path is being executed. Change: The driver is modified to take the RSS code path only when RSS is enabled by the NDIS driver. Version 2.5.17 (Oct 24, 2005) ============================= Fixes: ------ 1. Problem: Driver hitting an assert on statistics query. Cause: The NDIS driver could issue an unknown statistics type which causes an assert in the bus driver. Change: The assert is removed. 2. Problem: Unable to ping after when runn HTTP stress. The adapter appears to stop receiving packets. Cause: One of the internal processor is stuck in a debug logging code. Change: Included a new firmware. Version 2.5.16 (Oct 22, 2005) ============================= Fixes: ------ 1. Problem: Running HTTP stress causes an assert in the driver. The assert checks to make sure all the transmit buffers are completed upon getting a disconnect notification. Cause: Firmware is not completing all the transmit buffers before indicating a disconnect completion. Change: Included a new firmware which works around the problem. Version 2.5.15 (Oct 20, 2005) ============================= Fixes: ------ 1. Problem: Chariot times out running filercvs script when RSS and TCP offload are enabled. The problem does not occur when only RSS or TCP offload is enabled. Cause: The stack was resetting connections because packets were indicated with an incorrect RSS hash value. Change: Included a new firmware which works around the problem. Version 2.5.14 (Oct 17, 2005) ============================= Fixes: ------ 1. Problem: May hit an assert in the stack when running sockdie. The assert checks for a valid re-transmit count when a connection is uploaded in a closed state with no disconnect indication. Cause: The stack expects a valid re-transmit count even when there is a TimeoutExpiration indication. Change: Included a new firmware. Version 2.5.13 (Oct 16, 2005) ============================= Fixes: ------ 1. Problem: May hit an assert in the stack when running sockdie. The assert checks for a valid re-transmit timeout delta. Cause: The retransmit timeout delta was negative. The stack expected a positive value. Change: Included a new firmware. Version 2.5.12 (Oct 15, 2005) ============================= Fixes: ------ 1. Problem: iSCSI initiator hangs when connecting to the certain target. Cause: An incorrect MSS value was given to the firmware when time stamp option is enabled. 2. Problem: Running sockdie may cause an assert in the stack which checks to make sure the retransmit timer is running when a connection is uploaded in the closing state. Cause: Retransmit timer was not enabled. Change: Included a new firmware. Version 2.5.11 (Oct 14, 2005) ============================= Fixes: ------ 1. Problem: Running Sparta causes in assert in the driver which checks for a valid checksum value when the status bit indicates the checksum is bad. Cause: The check is invalid because the IP header is invalid and the checksum value happens to be valid. Change: Remove the assert. 2. Problem: Running sockdie causes an assert in the assert which checks for a valid TCP send sequence numbers on a connection being uploaded. Cause: Firmware not providing the driver with the correct sequence number. Change: Included a new firmware. Version 2.5.10 (Oct 12, 2005) ============================= Fixes: ------ 1. Problem: The driver completes transmit requests with status aborted after the peer has issued an graceful disconnect. Cause: There was an unintended semicolon at the end of an if statement. Because of the semicolon, the code inside the if statement gets executed unconditionally. As a result, the connection state was set as if the peer had issued a reset. Change: Remove the semicolon. Version 2.5.9 (Oct 11, 2005) ============================ Fixes: ------ 1. Problem: Running sockdie may cause an assert in the driver during connection offload. The assert is to ensure the buffered data length is correct. Cause: In incorrect start sequence number was passed to get_buffered_data. Change: Pass the last completed sequence number to get_buffered_data when building a list of buffered data during connection upload. Version 2.5.8 (Oct 10, 2005) ============================ Fixes: ------ 1. Problem: Cannot connect to iSCSI target after coming out of hibernation or standby mode. Cause: The driver did not repost generic buffers when coming out of hibernation or standby mode. Change: Post generic buffers when coming out of low power mode. Enhancements: ------------- 1. Request: Include a new firmware which addresses the following Sparta issues: CQ#1916, CQ#1855, CQ#1854, CQ#1853, CQ#1851, CQ#1848, CQ#1845, CQ#1847. Version 2.5.7 (Oct 9, 2005) =========================== Fixes: ------ 1. Problem: Hit the assert below while running sockdie. *** Assertion failed: (CheckTCB->tcb_sendmax - CheckTCB->tcb_senduna) <= (int)Unacked Cause: When a connection is uploaded, partially completed send request are not completed back to the stack. The size of data transferred was set to zero. Change: Initialized the size of the partially completed send request during upload. Enhancements: ------------- 1. Request: Include the latest firmware which has fixes for Sparta issues. Version 2.5.6 (Oct 6, 2005) =========================== Fixes: ------ 1. Problem: CQ#1933 Hit a driver verifier assertion while running an "iSCSI Device Path Exerciser Test". Cause: drv_close routine returns an initialized status code. Change: Return a valid status code. 2. Problem: Hit an assert in the stack complaining send_next != send_una in a TimeWait state. Cause: When the connection was uploaded, the TCP state was CLOSING. As part of the upload process, the driver complete the pending graceful disconnect request with the status success. This causes the stack to transition to TimeWait state when the state should be CLOSING. Change: The pending graceful disconnect request needs to be completed with status UPLOAD_IN_PROGRESS. Version 2.5.5 (Oct 5, 2005) =========================== Fixes: ------ 1. Problem: CQ#1894 10mb wake-up does not work. Cause: The driver only advertises 100mb like speed when going into lower power mode. Change: Modify the driver to advertise 10mb and 100b before going into lower power mode. Enhancements: ------------- 1. Request: Build IA64 drivers as part of the release. Version 2.5.4 (Sept 21, 2005) ============================= Fixes: ------ 1. Problem: CQ#1787 System locks up when ping the iSCSI HBA from the NDIS device stack. Cause: This is a side effect of the fix for CQ#1751. In this fix, the L2 NDIS driver holds a transmit lock while submitting a send request to the bus driver. As a result, the bus driver cannot complete the transmit request in the same context. Do so will result in a spinlock issue. In this case, the bus driver is completing the transmit request in the send context because the packet does not need to be put on the wire. Another potential problem relating the this completion is that some transmit requests could be completing out of order. Change: Unicast frames directed toward a device stack on the same system will also be put on the wire. This will ensure in-order completion of all transmit request. 2. Problem: Break in ftsk when the cable is disconnected after opening a portal. Cause: Ftsk expects all the transmit buffers completed before a TCP disconnect completion, even when the TCP disconnect is completing with an error code. Change: Abort all the pending transmit buffers before indicating a TCP disconnect completion. 3. Problem: CQ#1820 xdiag reported crc error on the upgrade license key in the NVRAM. Cause: When the upgrade license key is written to the NVRAM, the CRC value was written to the wrong location. Change: The bus driver was modified to write the CRC value to the right location in the NVRAM. 4. Problem: CQ#1758 Loopback test fails when LAA is configured. Cause: The chip's MAC address was initialized with LAA instead of the permanent MAC address. Change: When the diag driver binds to the bus driver, initialize the chip with the permanent MAC address. 5. Problem: CQ#1802 System crash during boot up when BCM5706S is forced to 1Gb. Cause: The boot code and the driver are accessing the serdes chip at the same time causing the serdes chip to lock up. The collision occur because the driver is initializing the serdes chip before a core reset when the boot code is running in driver absent mode. Change: Initialize the serdes chip after a core reset. Enhancements: ------------- 1. Request: Include additional devices in the INF file. 2. Problem: CQ#1710 Program the Serdes pre-emphasis with the value in the NVRAM. Version 2.5.3 (Sept 6, 2005) ============================ Fixes: ------ 1. Problem: CQ#1715 Running Windows diag causes a bugcheck. Cause: The driver submitted a l4_kwqe_enable_alt_catchup_t even when L4 offload is enabled. This kwqe is only valid when for L4 offload. Change: Only submit this kwqe when L4 offload is enabled. Version 2.5.2 (Aug 26, 2005) ============================ Fixes: ------ 1. Problem: Running sockdie maxtput causes an assert in an internal CPU. Cause: In the case of a local graceful disconnect, the driver needs to fill the transmit pipe-line by posting a bogus 1 byte buffer. Change: Included a new firmware and made the necessary changes in the driver. Version 2.5.1 (Aug 22, 2005) ============================ Fixes: ------ 1. Problem: Running OffloadStress causes an assert in the driver indicating a hole in the generic buffer list. Cause: When a generic buffer is added to a connection's generic buffer list, the newly added generic buffer becomes the current generic buffer which cannot be removed from the list even if it is contained within another generic buffer. The was not the case and the current generic buffer was removed from the list. Change: Prevent the removal of the newly added generic buffer in the remove_overlapping_gen_bufs routine. Version 2.5.0 (Aug 17, 2005) ============================ Fixes: ------ 1. Problem: CQ#1564 DeviceManager stops responding after disabling the VBD while ping is running in the background. Cause: When the VBD is being disabled, the PnP manager sends a QUERY_REMOVE IRP to the VBD. In response to this IRP, the VBD changes the driver state to PAUSED which causes a pending transmit from being serviced. Since there is a pending request, the DeviceManager will not issue the REMOVE IRP until all the pending transmits complete. Change: Allow processing of the pending transmit queue in PAUSED stated. 2. Problem: Running Windows diag causes the driver to crash. Cause: When the diag driver unbinds, the VBD reclaims all the receive buffers and aborting all the pending transmits by walking the perspective list. These operations are not protected by a spinlock which resulted in list corruption. Change: In um_dgif.c, protect the calls to lm_abort with a lock. 3. Problem: CQ#1566 Occasional blue screen when running Windows diag with TOE enabled. Cause: The call to lm_free_gen_buf was not protected by a lock resulting in a corrupt generic buffer list. Change: Before calling lm_free_gen_buf, the driver needs to acquire the OFLD_LOCK. 4. Problem: CQ#1326 System may crash due to divide by zero error. Cause: The new interrupt moderation scheme may result in a divide by zero when computing CPU utilization. The call to ExGetCurrentProcessorCounts returns usage and idle counts which are used to compute CPU utilization. The formula for calculating CPU utilization needs the previous value for usage and idle counts for the current processor. The problem arise because the previous usage and idle counts are global when they should be saved as a per-processor value. Original assumption is that the CPU running the ISR is fixed, and since the call to the routine to re-adjust interrupt moderation parameters is made from the DPC on the same processor as the one running the ISR, there is no need to keep a per-processor usage and idle counts. This assumption is not true on some systems. Change: Add an array of usage and idle counts for keeping track of the values on a per-processor basis. 5. Problem: CQ#1141 Chariot reports client closed TCP connection unexpectedly when running the filesnds and filercvs scripts. Cause: The driver is posting generic_return kwqe to the chip after submitting an upload request causing context corruption. Change: Modify the driver so that it does not post any kwqe after an upload request has already been submitted to the chip. 6. Problem: CQ#1658 Running diagnostic causes the system to bugcheck. Cause: lm_post_gen_bufs is being called when the generic buffer chain was not set up yet. This code path should not be executed in diagnostic mode. Change: Call the above routine only when TOE is enabled. In diagnostic mode, TOE is disabled. Enhancements: ------------- 1. Request: Add support for TCP/IP statistics on offloaded connections. 2. Request: Include additional devices in the INF file. Version 2.1.7 (Aug 2, 2005) =========================== Fixes: ------ 1. Problem: When there are connections offloaded, disabling the bus driver causes an assert indicating there are still connections offloaded. Cause: The assert occurs in the context of IRP_MN_QUERY_STOP_DEVICE processing which causes the driver to abort all pending requests. The driver expects all connections to be upload by the stack at this point. Change: Aborting all pending requests should be done later in the context of IRP_MN_STOP_DEVICE. By this time, the stack should have uploaded all the connections and unload the NDIS device stack. Enhancements: ------------- 1. Request: Extend the b06_device_info_t to include PCI-E information for BCM5708 device. This change will break the compatibility with older BMAPI and will required BMAPI v7.3.5 or newer. 2. Request: Fail driver initialization if shared memory signature is not present. 3. Request: Retrieve create_pdo_flag from shared memory. If the value is valid, read it from the registry. 4. Request: Add a new selection under "req_medium" for "hardware default". This new selection is only applicable for Serdes device. This selection causes the driver to retrieve link configuration from the devices NVRAM. This selection is set as the default in the INF file for all Serdes device. Version 2.1.6 (July 12, 2005) ============================= Fixes: ------ 1. Problem: Running Chariot filesnds script may cause the device to stop sending packets. Cause: The chip is locked up due to tpat crash. Change: Incorporated a new tpat firmware. 2. Problem: CQ#1486 High bit error rate on BCM5708A0. Cause: Tx peak-to-peak amplitude was measured as low as 765mV whereas 800mV is considered passing. Change: Added a workaround as described in Errata 1.75. Version 2.1.5 (July 6, 2005) ============================ Fixes: ------ 1. Problem: CQ#1246 System is not able to wake up with magic packet on shutdown after waking up from hibernation. Cause: After coming out of hibernation, the PME_Enable bit is cleared (by the operating system). On shutdown, this bit remains cleared. Change: On shutdown, PME_Enable is enabled if the port has WOL enabled in the NVM configuration. 2. Problem: CQ#1363 Running sockdie/nettack may cause the driver to assert or crash. Cause: While processing a neighbor update request, a dependent path may still be in the processing of being offloaded or uploaded. A path-neighbor update cannot occur until all the dependent path states are offloaded. A similar problem could also occur in processing an invalidate request. Change: Only process an update/invalidate request if all the dependent states have been offloaded. The upper layer driver will ensure this is the case before submitting the request to the driver. While processing an update/invalidate request, if a dependent state is being uploaded, the request is ignored. 3. Problem: CQ#1476 System crash when coming out of low power mode when all the VBD's child devices are disabled. Cause: The bus driver was referencing a NULL status block pointer. The status block is NULL when there is no child device bound. Change: Only reference the status when the VBD state before entering low power mode is RUNNING. 4. Problem: Running Chariot filesnds script may cause the device to stop sending packets. Cause: The chip is locked up due to tpat crash. Change: Incorporated a new tpat firmware. Version 2.1.4 (June 20, 2005) ============================= Fixes: ------ 1. Problem: CQ#1432 There is no link (as indicated by the link LED) when coming out of standby. Cause: When coming out low power mode, the driver sets the device to D0, initializes the PHY, and then issues a core reset. A core reset occurs on the transition from D3 to D0 which causes the boot code to reset and initialize the PHY while the driver is also doing the same thing. Change: Driver will now initialize the PHY after issuing a core reset. 2. Problem: CQ#1449 Continuously enabling and disabling the NDIS driver could case the bus driver to crash or assert. Cause: When the NDIS driver binds to the VBD, a work item is scheduled to allocate generic buffers. If the disable driver is quickly disabled, the work item is not cancelled and could execute after the NDIS driver has unbound from the bus driver. Sometimes, this could crash the system since the bus driver is in the wrong state. Change: The change is to only process the work item task when the bus driver is in the running state. Also on the unbind process, wait for all the work items to finish before returning. 3. Problem: Running sockdie causes an assert in the TCP offload code path. The assert is for offloading a TCP state that has a NULL path state. Cause: The path offload failed and was removed from the list. When the TCP state is being offloaded, the search to locate the path state returns a NULL pointer. Change: When the path state cannot be located, the driver will fail the TCP offload request. Enhancements: ------------- 1. Request: Add support for multiple transmit chain. Version 2.1.3 (June 6, 2005) ============================ Fixes: ------ 1. Problem: CQ#1326 System bugchecks after installing the driver using HotPlug. Cause: The driver is referencing a device structure that is NULL when the system is being restarted. Normally the device structure is never NULL, but in this case, it is NULL because no child device had been created. Change: On processing system shutdown IRP, the driver will not reference the device structure if it is NULL. 2. Problem: CQ#1394 Running sockdie with the maxtput option causes an assert in the driver. The assert is for indicating buffered data but there isn't enough buffered data in the generic buffer list. Cause: In the remove_overlapping_gen_bufs, the current generic buffer could be removed. Change: Before removing a generic buffer from the list, check to see if it is the current generic buffer. Enhancements: ------------- 1. Request: Enable the new interrupt moderation algorithm by default. 2. Request: Use the PCI memory base that is passed to the driver in IRP_MN_START_DEVICE for mapping the device registers to system address space. 3. Request: Use the checksum status flag in the L2 frame header to if the checksum is good or bad instead of looking at the checksum value. Version 2.1.2 (May 5, 2005) =========================== Enhancements: ------------- 1. Request: Sync up with the latest firmware. Version 2.1.1 (May 3, 2005) =========================== Fixes: ------ 1. Problem: When connecting two BCM5708S devices back to back with the local side sets to auto and the remote side sets to 1Gb, the local side will link up to 2.5Gb. Cause: When forcing link speed, the driver still enables 2.5Gb capability. Change: Disable 2.5Gb capability when speed is being forced. Enhancements: ------------- 1. Request: Include the BCM5708 device IDs in the INF files. Version 2.1.0 (Apr 8, 2005) =========================== Fixes: ------ 1. Problem: NDIS5.2 driver could crash when the stack is initiating bulk offloads or uploads. Cause: The firmware may complete TCP offload or upload requests out of order. Change: Ensure the requests are completed in the order they were submitted. 2. Problem: Low L2 performance on Chariot. Cause: The interrupt moderation settings were not optimal. Change: Made changes to the dynamic interrupt moderation algorithm. 3. Problem: Encountering intermittent failures running sockdie. Cause: Path offload with a error completion status was not handled properly. The driver treated this case as being offloaded successfully. Change: Made the change to indicate an offload failure to the stack. 4. Problem: Failing NDIS test 2c_rsssenrecv test script. Cause: The firmware is placing packets into the wrong receive queue. This is a side effect of a workaround for A0 silicon. Change: Included the new firmware. Enhancements: ------------- 1. Request: Add support for BCM5708S backplane application. Version 2.0.7 (Mar 25, 2005) ============================ Note: This version is a branch off v2.0.4 tree with the following changes. Fixes: ------ 1. Problem: The checked driver breaks into a debugger when running WOL test. The test continues without any problem after hitting a 'g' in the debugger. Cause: The drv_power could be called at IRQL DISPATCH. There is an assert in this routine that checks to make sure the IRQL is PASSIVE. This assert is no longer true. Change: The assert is removed. 2. Problem: With jumbo frame enabled on the NDIS device stack and the iSCSI device is running, sending a ping with large buffer will cause the system to crash. Cause: The bus driver indicates a unicast frame to the iSCSI device stack even when the destination MAC address does match the iSCSI device. Currently the iSCSI driver does not have jumbo frame support. Change: Only forward unicast frames from the NDIS device stack to the iSCSI device when the destination MAC address matches the iSCSI device. 3. Problem: Data corruption could occur when multiple offloaded connections are transferring data. Cause: During a reload, generic buffer processing is deferred. However generic buffer is not pulled from the head of the global list. As a result, a subsequent generic buffer processing for a different connection may pull the wrong generic buffers from the head of the list. Change: During generic buffer processing, the driver will de-queue the buffer from the global list and save it in its local list. Version 2.0.4 (Feb 28, 2005) ============================ Fixes: ------ 1. Problem: W2K system crashes when entering low power mode. Cause: The driver power management routine is called at IRQL DISPATCH but the routine is declared as page-able. Change: Changed the routine declaration so it is not page-able. 2. Problem: Some of the statistics entries returned by the driver are incorrect. Cause: The b06_chip_statistics_t and the hardware statistics block are out of sync. Change: Refine the b06_chip_statistics_t to match the hardware statistics block. Version 2.0.3 (Feb 23, 2005) ============================ Fixes: ------ 1. Problem: System will blue screen when logging off from an iSCSI target. Cause: Connection can be pre-maturely terminated without properly cleanup. Change: Included the new comfw.h firmware. Version 2.0.2 (Feb 18, 2005) ============================ Fixes: ------ 1. Problem: Chariot times out when UDP mode is enabled. Cause: The INF file was changed recently to create the "mtu" entry in the registry with a default value of "1500". When the driver reads this value, it needs to add the size of the MAC header before programming the chip with the value. In this case, the driver did not add the size of the MAC header to the value read from the registry. Enhancements: ------------- 1. Request: Add support for BCM5708S. Version 2.0.1 (Feb 14, 2005) ============================ Fixes: ------ 1. Problem: System crashes when coming out of D3 state. Cause: The crash occurs when the VBD does not have any active child device and the system is exiting D3 state. When there is no active child device, the VBD is in SETUP state which means VBD resources (such as status block memory) are not allocated yet. When the system exits D3 state, the VBD attempts to service PHY interrupt. The crash occurs when referencing the status block which is currently NULL. Change: Skip PHY initialization and servicing interrupts when the VBD is in SETUP state. Version 2.0.0 (Feb 6, 2005) =========================== Fixes: ------ 1. Problem: MMA does not work. Cause: The appropriate PM_EN bits for SORT_USER0 were not enabled. Version 1.14.7 (Jan 27, 2005) ============================= Fixes: ------ 1. Problem: Hit several false assertions when running the checked build. Cause: The false assertions occur when the invalidate code path is executed. The assertions check for valid tcp, path, and neighbor states on update. The checks did not take into account the validate state which is valid. Change: The assertions are moved. Version 1.14.6 (Jan 25, 2005) ============================= Fixes: ------ 1. Problem: Incorrect bus width reported back to user mode application. Cause: Incorrect register was read for determine the bus width. 2. Problem: Running the interrupt test causes a system crash when the iSCSI driver is installed. Cause: The iSCSI receive chain is not complete re-initialized when the diag driver binds to the bus driver. Change: During a driver init, the prod_idx, con_idx, and prod_bseq of all the receive chains are set to 0. Version 1.14.5 (Jan 19, 2005) ============================= Fixes: ------ 1. Problem: Incorrect PCI-X speed reported to user mode application. Cause: The PCI-X speed in the pcicfg.misc_status register is incorrect when we are running at PCI-X 133Mhz. Change: Driver was modified to get the speed from the pcicfg.pci_clock_control_bits register. 2. Problem: Unable to associate a catch frame to a TCP state handle. Cause: The driver parses the catch frame for the 4-tuple, which is used to locate the TCP state. The parsing is incorrect. 3. Problem: Sending a catch frame cause a system lockup. Cause: When completing a catch frame, a lock was not released. Version 1.14.4 (Jan 12, 2005) ============================= Fixes: ------ 1. Problem: Not able to connect to an iSCSI target when RSS is enabled. Cause: The firmware is not directing iSCSI traffic to the correct receive chain. Change: Incorporated the new firmware with the fix. 2. Problem: The iSCSI device cannot connect to the target when coming out of hibernation or low power mode. Cause: The iSCSI MAC address was not initialized. Change: When coming out of low power mode, the driver will set up all the MAC address slots. Version 1.14.3 (Jan 10, 2005) ============================= Fixes: ------ 1. Problem: The statistics counter for unicast and multicast frames received are incorrect. Cause: The value for unicast and multicast frames received erroneously included the broadcast frames. Change: The driver was modified to not include the broadcast frames. Enhancements: ------------- 1. Request: Add dynamic interrupt moderation. Version 1.14.2 (Dec 16, 2004) ============================= Enhancements: ------------- 1. Request: Remove the functions that are not being called for better code coverage result. Change: Commented out several functions that are not being called. Version 1.14.1 (Dec 15, 2004) ============================= Fixes: ------ 1. Problem: Unable/Disable the driver may cause a lockup. Cause: When aborting pending transmits, the driver releases a spinlock that was never acquired. Change: When calling mm_indicate_tx to indicate transmit completion, the caller must first acquire the transmit lock. Enhancements: ------------- 1. Request: Incorporate the new NDIS API changes. Change: Included the new ndis.h and made the necessary changes to the code to use the new NDIS APIs. 2. Request: Add support for multiple MAC addresses. Make the advertisement of LSO option capabilities configurable. Change: Made changes to the driver to use MAC address indices 4-7 for perfect match filtering. Added a registry parameter "task_cfg" for configuring the LSO option capabilities. 3. Request: Add support for handling Chimney invalidate requests. Change: Added new code for handling invalidate requests. Incorporated the latest firmware. Version 1.14.0 (Dec 2, 2004) ============================ Fixes: ------ 1. Problem: Chariot could stop passing traffic when RSS is enabled. Cause: The driver maintains a variable called in_dpc_cnt for keeping track of the number of DPCs running. This variable is incremented when a DPC is scheduled. A race condition could occur when this variable is decremented and the driver erroneously thinking the last DPC is finished running. Change: The in_dpc_cnt variable should be incremented first for all the DPCs that are about to be scheduled. Version 1.13.1 (Nov 23, 2004) ============================= Fixes: ------ 1. Problem: System locks when pinging the iSCSI stack on the same machine. Cause: The driver is releasing a spinlock that was never held when indicating transmit completion. Change: In some cases, the transmit lock must be held when calling mm_indicate_tx. 2. Problem: AMD64 system looks up when packets are being sent. Cause: The driver is casting the SGL pointer to lm_frag_t pointer. For the 64-bit build, these two structures are different. Change: The lm_frag_t structure was modified to match the definition of SCATTER_GATHER_LIST. Version 1.13.0 (Nov 5, 2004) ============================ Enhancements: ------------- 1. Request: Change the driver to bxvbdx.sys for x86, and bxvbda.sys for Amd64. Change: Sources and INF files were modified. Version 1.12.4 (Oct 28, 2004) ============================= Fixes: ------ 1. Problem: System may crash when a connection is being uploaded. Cause: The driver is freeing physical memory at IRQL_DISPATCH level when a connection is being uploaded. The call to free physical memory can only be called from IRQL_PASSIVE level. Change: When a connection is being uploaded, the driver will schedule a worker thread that runs at IRQL_PASSIVE level. This thread will free all the resources associated to the uploaded connection. 2. Problem: Chariot reports data corruption. Cause: When a connection is offloaded with buffered data, the chip could place incoming data into the wrong application buffer. Several state variables needed by RV2P were not initialized. Change: The driver was modified to include the new firmware. Enhancements: ------------- 1. Request: Improve netperf performance. Change: The default coalescing parameters were modified. 2. Request: Improve performance when RSS is disabled. Change: Driver was modified to ensure the DPC is scheduled on the processor that is running the ISR. This improves the ISR to DPC latency. Version 1.12.3 (Oct 7, 2004) ============================ Enhancements: ------------- 1. Request: Add support for licensing. Change: Added several IOCTLs for getting and updating licensing keys. Version 1.12.2 (Sept 21, 2004) ============================== Fixes: ------ 1. Problem: In PCI-X mode, some DMA operations may finish out of order. Cause: The chip enables PCI-X relax ordering by default. The BCM5706 family does not support this feature. Change: The driver was modified to disable PCI-X relax ordering after a chip reset. Version 1.12.1 (Sept 16, 2004) ============================== Fixes: ------ 1. Problem: The L2ND driver fails to load. Cause: During initialization L2ND51 driver makes a call to NdisMInitializeScatterGatherDma. This call will submit an interface query IRP for the GUID_BUS_INTERFACE_STANDARD interface. The bus driver fails this request. Change: The driver was changed to forward the request for GUID_BUS_INTERFACE_STANDARD interface to the PCI bus driver. Version 1.12.0 (Sept 13, 2004) ============================== Enhancements: ------------- 1. Request: Add support for Receive Side Scaling. Change: Numerous changes in several files. Version 1.11.0 (Aug 30, 2004) ============================= Fixes: ------ 1. Problem: System locks up when sharing interrupts. Cause: The driver may erroneously claim an interrupt even when the device's interrupt line is not active. Change: Only claim interrupts when the device's interrupt line is active. Version 1.10.1 (Aug 25, 2004) ============================= Fixes: ------ 1. Problem: System locks up when running NTTTCP on a multiprocessor system. Cause: Two different spinlocks were not released in the reverse order. The inner spinlock should be released first. Change: The code was modified to release the inner spinlock first and then the outer one. Version 1.10.0 (Aug 18, 2004) ============================= Enhancements: ------------- 1. Request: Add support for BCM5708 device. Change: target.gawk file was modified for generating the INF file with BCM5708 device IDs. 2. Request: Add TCP offload support. Test the TCP offload interface against the l2nd52.sys driver which is an NDIS 5.2 driver with TCP offload capability. Change: Several files were added/changed. Version 1.9.3 (Aug 11, 2004) ============================ Enhancements: ------------- 1. Request: Modify the sources file for building a special checked driver for WHQL certification under the code coverage program. Change: target.gawk file was modified for generating the sources file with the necessary compiler and linker switches. Version 1.9.2 (Aug 2, 2004) =========================== Fixes: ------ 1. Problem: Forwarding packets from the iSCSI device stack to the NDIS device stack was not working. Cause: The rx_buf_mdl field in the l2packet_t structure was not initialized to NULL. Change: When constructing a l2packet_t for forwarding, the rx_buf_mdl field is set to NULL. Version 1.9.1 (Aug 2, 2004) =========================== Fixes: ------ 1. Problem: After a reboot, the L5WSD PDO may not appear in the DeviceManager. Cause: The L5WSD PDO was created but not reported to the IO Manager. Change: Modified the driver to call IoInvalidateDeviceRelations after creating the L5WSD PDO. Version 1.9.0 (Jul 30, 2004) ============================ Enhancements: ------------- 1. Request: Change the service description so it is different than the display name. This is done to prevent an installation error caused by having two services with the same description. Change: The INF file was modified to include the new service description. Version 1.8.0 (Jun 30, 2004) ============================ Fixes: ------ 1. Problem: Ethernet@Wirespeed is not working. Cause: The driver does not disable Ethernet@Wirespeed once it is enabled. Change: Modified the driver to clear the setting if Ethernet@Wirespeed is not enabled. Version 1.7.0 (Jun 14, 2004) ============================ Fixes: ------ 1. Problem: When the system is in WOL mode, a Magic Packet with the wake-up address of all 0's will wake up the system. Cause: The chip uses the first four perfect match addresses for Magic Packet detection. Only the first address slot was initialized. The other three addresses slots have the default address of all 0's. Change: The driver was modified to initialize the other three address slots with the current MAC address whenever the system goes into the WOL state. Version 1.6.0 (May 24, 2004) ============================ Enhancements: ------------- 1. Request: Change the device description to NetXtreme II. Change: The INF file was modified to include the new device description. The driver was modified to long events into the Event Viewer using the new device description. Fixes: ------ 1. Problem: A slight increase in CRC errors on the switch. Cause: There is a PHY errata for this problem. Change: The driver was modified to apply a PHY workaround whenever there is a PHY reset. Version 1.5.0 (Apr 15, 2004) ============================ Enhancements: ------------- 1. Request: Add support for SERDES version of the chip. Change: The INF file was modified to include a new device entry. Fixes: ------ 1. Problem: The bus driver may crash when the L2ND client unloads. Cause: When the L2ND client driver unloads, the bus driver traverses a list of unused resource descriptors. The memory for these descriptors may have already been freed. Change: The driver is modified to not traverse the unused resource descriptors list. The list is re-initialized to contain not entry. Version 1.4.0 (Apr 8, 2004) =========================== Fixes: ------ 1. Problem: Layer 2 flow control not working. Cause: The driver did not set up flow control advertisement registers. Change: The driver was modified to enable flow control advertisement based on the driver property page. Enhancements: ------------- 1. Request: Change the UI number of the child PDOs to that of the parent's UI number. Change: The driver was modified to retrieve the parent's UI number. The same number will be filled in the child's device capabilities structure. 2. Request: Ignore the LAA in the registry if it is invalid. In this case the hardware will use the MAC address in the NVRAM. Change: The driver was modified to check for a valid LAA. Version 1.3.1 (Mar 31, 2004) ============================ Fixes: ------ 1. Problem: When BMAPI issue a command to the VBD to enumerate a PDO, the request will fail if the PDO is already present. Cause: The VBD completed the IRP with a random status code. Change: The completion is initialized to STATUS_SUCCESS. Version 1.3.0 (Mar 24, 2004) ============================ Fixes: ------ 1. Problem: WOL may not work on some systems. Cause: The Wait/Wake IRP submitted to the PCI bus driver had a system power state of "PowerSystemShutdown" instead of "PowerSystemSleeping3". As a result, the PCI bus driver failed the IRP and did not arm the system for wake up. Change: The driver was modified to submit a Wait/Wake IRP for "PowerSystemSleeping3" to the PCI bus driver. 2. Problem: When multiple adapters are enabled, disabling one of them causes the system to crash. Cause: The bus driver maintains a list of per-device data structure. This list is initialized in the AddDevice routine. On the second call to AddDevice, the list is re-initialized thus corrupting it. Change: The device list initialization was moved to the DriverEntry routine. Version 1.2.0 (Mar 16, 2004) ============================ Fixes: ------ 1. Problem: Unable to pass traffic after running Chariot for approximately two minutes. Unable to pass traffic after running Nslicer for awhile. Cause: Under a certain condition, the firmware may fetch a stale data from the THBUF queue. Change: The driver is updated with the latest firmware. 2. Problem: Getting a "DRIVER_VERIFIER_DETECTED_VIOLATION (c4)" bugcheck when unloading the driver. Cause: The client block (block memory allocated to hold a client's states) was not de-allocated when a client unbinds from the bus driver. Change: Modified the driver to de-allocate the client block when it a client gets unloaded. Version 1.1.1 (Mar 12, 2004) ============================ Fixes: ------ 1. Problem: Unable to pass traffic in PCI-X 100MHZ mode. Cause: The DMA configuration register was configured to delay DMA completion by two clocks. This should only be done at low PCI speed such as 33 MHZ. Change: Modified the bus driver to set the DMA configuration register differently. Version 1.1.0 (Mar 10, 2004) ============================ Fixes: ------ 1. Problem: L2nd statistics counters for packets sent/received are alwasy zero. Cause: The bus driver does not return statistics counter to its clients. Change: Modified the bus driver to process statistics queries by its clients. Enhancements: ------------- 1. Request: Allow the user to configure the number of read and write DMA channels via the registry. Change: Modified the driver to read "num_rchans" and "num_wchans" from the registry. Version 1.0.0 (Mar 3, 2004) =========================== Initial release.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.