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