Firmware for QLA405x iSCSI HBAs Release Notes - QLogic
Firmware for QLA405x iSCSI HBAs Release Notes - QLogic
Firmware for QLA405x iSCSI HBAs Release Notes - QLogic
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Firmware</strong> <strong>for</strong> <strong>QLA405x</strong> <strong>iSCSI</strong> <strong>HBAs</strong><br />
<strong>Firmware</strong> Version: 2.0.0.62<br />
Supported <strong>HBAs</strong>: QLA4050, QLA4050C, QLA4052C<br />
1. Overview<br />
2. General <strong>Notes</strong><br />
3. Changes and Fixes<br />
4. Known Issues<br />
5. Trademarks<br />
6. Notices<br />
7. Additional In<strong>for</strong>mation<br />
8. Contacting Support<br />
Table of Contents<br />
1. Overview<br />
This document covers changes implemented between version 2.0.0.7 and 2.0.0.62 of the ISP4022 firmware<br />
that supports the QLA4050, QLA4050C, and QLA4052C <strong>HBAs</strong>.<br />
2. General <strong>Notes</strong><br />
●<br />
●<br />
<strong>QLogic</strong> HBA drivers currently support up to 64 targets.<br />
Configuring <strong>iSCSI</strong> in strict mode will en<strong>for</strong>ce <strong>iSCSI</strong> RFC compliance.<br />
3. Changes and Fixes<br />
Between Versions 02.00.00.61 and 02.00.00.62<br />
●<br />
Initiator only. Workaround <strong>for</strong> Solaris driver <strong>for</strong> future <strong>QLogic</strong> initiator HBA management software<br />
enhancements to SendTargets discovery.<br />
Between Versions 02.00.00.45 and 02.00.00.61<br />
●<br />
Initiator only. Added firmware support <strong>for</strong> future <strong>QLogic</strong> initiator HBA management software<br />
enhancements to SendTargets discovery.<br />
●<br />
For the <strong>QLogic</strong> initiator <strong>HBAs</strong>, added support to reassemble Login and Text PDUs with the continue<br />
flag set. The reassembly does not apply to passthru IOCBs, which the host must reassemble.<br />
Changed discovery sessions to advertise a 16K or smaller MaxRecvDataSegmentLength. Maximum<br />
total byte count when reassembling continuation PDUs is 64K.<br />
<strong>Firmware</strong> <strong>for</strong> <strong>QLA405x</strong> <strong>iSCSI</strong> <strong>HBAs</strong> <strong>Release</strong> <strong>Notes</strong> 1 of 5
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
Target only. Fixed a problem with received PDU counts in target connection mode <strong>for</strong> Login, Text,<br />
Logout, and Task Management Request PDUs received with the Immediate flag set.<br />
For the <strong>QLogic</strong> initiator <strong>HBAs</strong>, fixed parsing problem with large Text PDUs, such as SendTargets<br />
responses.<br />
Initiator only. Changed default ISID value <strong>for</strong> DDB Entries, so each port has a unique default ISID<br />
value, based on the MAC address. Added code to upgrade existing DDBs that were configured with the<br />
old default ISID, to use the new default ISID instead. DDBs with non-Default ISID values are<br />
unchanged. The new Default ISID has the OUI <strong>for</strong>mat, with the <strong>QLogic</strong> OUI, and a 24-bit qualifier<br />
whose least significant 21 bits match those in the port's MAC address, and most significant 3 bits are<br />
reserved <strong>for</strong> MPIO.<br />
Removed previous workaround <strong>for</strong> fiber link negotiation issue because the workaround caused link<br />
issues.<br />
Dropped polling timer from 100ms to 25ms in the firmware to catch retransmission scenarios which<br />
need to be transitioned into New Reno.<br />
The ISP40xx previously supported configuring DataPDUInOrder and DataSequenceInOrder. The<br />
default configuration is No <strong>for</strong> both.<br />
❍ With DataPDUInOrder, No permits the data PDUs within sequences to be in any order. Yes requires<br />
the data PDUs within sequences to be at continuously increasing addresses; it <strong>for</strong>bids overlays.<br />
❍ With DataSequenceInOrder, No indicates that Data Sequences (a sequence of Data-In or Data-Out<br />
PDUs that end with F bit set to 1) may be transferred in any order. Yes requires the data<br />
sequences to be transferred using continuously non-decreasing sequence offsets.<br />
Prior to this fix, if the ISP40xx received data in any order, with non-increasing addresses or overlays,<br />
the data would not be placed correctly into host memory.<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
To fix this problem, changed the firmware to: (1) always set the firmware configuration to Yes <strong>for</strong><br />
DataPDUInOrder and DataSequenceInOrder (regardless of what the driver sets these values to via<br />
the Initialize <strong>Firmware</strong> mailbox command 0060h, Set Device Database mailbox command 0063h, or<br />
Flash) and (2) detect any out-of-order data PDUs and fail the corresponding CTIO Type 3 IOCB or<br />
Command Type 3 IOCB back to the driver with a status error 0036h (PDU out of order).<br />
Initiator only. <strong>Firmware</strong> was falsely generating an 0x8002 ASSERT when parsing a large SendTargets<br />
response. This problem can occur during the parsing of a large Text PDU, such as a large<br />
SendTargets response, which the firmware loads into a chain of multiple internal buffers. The<br />
problem occurred after copying the final key=value from the last buffer in the chain. The firmware<br />
freed the buffer and set its pointer to NULL, but then mistakenly attempted to validate some of the<br />
fields in the buffer header using the NULL pointer. This fix modified the firmware to not make any<br />
assertions after the buffer pointer has been set to NULL. The ASSERTs should only be per<strong>for</strong>med on<br />
active buffers.<br />
Fixed an issue where SYN retransmit timers occurred too frequently. This issue was introduced in build<br />
2.0.0.38 with the fix <strong>for</strong> ER46569.<br />
Fixed a potential case that retained a buffer in target connection mode when the target driver closes a<br />
new connection immediately after receiving an ATIO6 (<strong>for</strong> login command) and posting a CTIO6 (to<br />
retrieve the login payload). This problem occurred while attempting to generate 128 simultaneous<br />
logins with the sequence described above. In this case, the firmware stopped sending the<br />
Connection Closed AEN indicating connection closure.<br />
Removed iqBufStats flag <strong>for</strong> pendingRP, and changed code to check RP Count against the threshold<br />
instead of checking the flag.<br />
Fixed case where iscsi keepalive (nopin) timer wasn't getting reset when receiving a tcp-ack <strong>for</strong> a<br />
datain pdu or scsi response pdu in target mode.<br />
Near simultaneous ping requests on both ports exposed a timing window that prevented one of the<br />
requests from completing. This fix causes the second request to return with a 0x4005 error since only<br />
one request is allowed to be outstanding at a time.<br />
Fixed a problem where a 0x4002 completion occurred on a mailbox command IOCB. This fix cleans up<br />
semaphore handling between the request queue handler and the mailbox handler.<br />
<strong>Firmware</strong> <strong>for</strong> <strong>QLA405x</strong> <strong>iSCSI</strong> <strong>HBAs</strong> <strong>Release</strong> <strong>Notes</strong> 2 of 5
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
Fixed race condition in session mode where slowpath inbound PDUs (<strong>for</strong> example, NOP-outs,<br />
TaskMgmtCmds, and TextCmds) may get processed out of order, causing the firmware to drop the<br />
PDU because the cmdSN of the inbound PDU does not match the expCmdSN. Also fixed case (caused by<br />
the above fix) where the firmware rejected a taskmgmt command by sending an <strong>iSCSI</strong> Reject PDU.<br />
Fixed an issue where an initiator driver was getting transport errors and/or mailbox timeouts when<br />
using host DSD lists due to firmware running out of internal RP structures. Modified firmware to preallocate<br />
continuation RPs <strong>for</strong> host DSD lists. The RPs are pre-allocated when receiving a Cmd Type3,<br />
CTIO3 with host DSD lists (instead of Continuation IOCBs) or a Passthru Type 1 IOCB from the host.<br />
Initiator abortTask response may contain invalid mbox[1] value, causing the driver to misinterpret<br />
mbox[2] and [3] as maxCmdSn and expCmdSn values.<br />
If target session mode receives a taskmgmt command with the immediate flag set in the PDU header,<br />
the firmware does not set the immediate bit in the ImmediateNotifyAck IOCB posted to the target<br />
driver.<br />
Initiator posting taskmgmt with immed.flag set may queue up the command <strong>for</strong>ever and eventually<br />
timeout. The change in 2.0.0.52 is a supplement to the 2.0.0.51 change. This change guarantees that<br />
taskmgmt mailbox commands are sent in the same order as they are queued to the SCSI Request<br />
Queue (when sent via mailbox IOCBs).<br />
If we get a NULL local ncb on a create, load the NCB via the hash parameters <strong>for</strong> debugging.<br />
Fixed an issue with improper results <strong>for</strong> ping command.<br />
● Fixed an issue where the firmware hit an assert due to running out of buffers. This occurred in a<br />
stress test environment when the initiator task had a lot of things queued up, which blocked other<br />
tasks from running. The fix frees up the CPU in this scenario to allow other tasks to run on the<br />
available resources.<br />
● Fixed an issue that occurred when running I/Os between 2 ports and removing the cable <strong>for</strong> 5<br />
seconds, then plugging it back in. The driver received a Status (Entry Type 3) IOCB with a completed<br />
handle and no command (Entry Type 0x19) with that handle currently outstanding to firmware. A<br />
mailbox IOCB completed incorrectly to the host as a status type 0 response, in handling a TKM<br />
mailbox IOCB.<br />
● Modified Flash Write mailbox command to allow up to 512KB when writing BIOS section (instead of<br />
128KB previously).<br />
● Fixed a return an error that occurred if the host issues a second ping mailbox command, while the<br />
first ping request is still outstanding.<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
●<br />
Fixed an issue with Marvell Phy where the firmware was not properly negotiating to half duplex mode.<br />
Cleaned up <strong>for</strong> ER46278 fixed in revision 2.0.0.32. Changed logic that could have given a false<br />
positive.<br />
Fixed an issue where the firmware stopped responding to the host after the ASIC received immediate<br />
data which was not in a multiple of 4-byte lengths.<br />
Fixed a problem introduced in build 2.0.0.47 with the fix <strong>for</strong> ER48078. The fix caused the Set Device<br />
Database mailbox command to return a bad status in certain cases.<br />
ATIO3 could have been posted to wrong host function in SNACK and error cases (<strong>for</strong> example, data<br />
digest error or payload too large).<br />
When DHCP server was unreachable, DHCP was failing at the rebinding phase resulting in lease lost.<br />
Added intermediate completion option to ping. This will allow the ping mailbox command to return<br />
immediately rather than waiting <strong>for</strong> a ping response.<br />
Fixed AEN 8002 in target connection mode, which can occur if the target driver is in the process of<br />
logging in the iscsi session (when the connection is up, but not logged in yet), and driver issues a<br />
connection close mailbox command (0x56) to send a TCP-RST, followed by issuing another connection<br />
close mailbox command (0x56) to send a FIN.<br />
Handle mal-<strong>for</strong>med tcp options (with an invalid TCP Option length of 0 or a length larger than the<br />
overall frame) on TCP SYN's.<br />
Enabled Handle AHS spanning more than 64 bytes when digests.<br />
FreeDDB mailbox command outgoing mailbox 4 register should return connState, not deviceState.<br />
<strong>Firmware</strong> <strong>for</strong> <strong>QLA405x</strong> <strong>iSCSI</strong> <strong>HBAs</strong> <strong>Release</strong> <strong>Notes</strong> 3 of 5
Between Versions 2.0.0.19 and 2.0.0.45<br />
●<br />
●<br />
●<br />
Enabled target and initiator <strong>iSCSI</strong> firmware tracing <strong>for</strong> field debugging purposes.<br />
Changed code to preserve the VLAN when receiving ARP request.<br />
Changed debug text in the IOCB to better indicate an IOCBs source (affects DEBUG firmware only).<br />
● With TCP timestamps disabled, improved per<strong>for</strong>mance on connections that experience significant<br />
packet loss on the network.<br />
● Added support <strong>for</strong> booting over <strong>iSCSI</strong> using DHCP.<br />
● Fixed a system error that could occur after receiving an unsolicited (or late) ping reply at the same<br />
time the HBA was in the process of sending a ping request.<br />
● Created a workaround <strong>for</strong> fiber link auto negotiation issues that occurred with certain optical<br />
switches. Previously, some switches would not link properly to the HBA. The HBA would show a link,<br />
but the switch would not.<br />
● Fixed a problem where the initiator was not responding correctly to irrelevant <strong>iSCSI</strong> keys received<br />
during discovery session login.<br />
● Fixed a system error that occurred when the execution throttle was changed from 64 to 32 in the GUI.<br />
● Added improved TCP retransmission handling when the remote node drops frames.<br />
● Fixed a system error condition that occurred when DHCP lost its lease and then re-acquired another IP<br />
address.<br />
● Fixed a per<strong>for</strong>mance issue where issuing ping requests which timeout could affect <strong>iSCSI</strong> per<strong>for</strong>mance.<br />
● Fixed a system error that occurred under certain situations when data queuing up in the firmware<br />
because the <strong>iSCSI</strong> command window was closing on the other end.<br />
● Detected a potential DMA malfunction due to an ASIC errata where the PCI power state changed from<br />
D3 to D0 in the middle of a PCI-X outstanding split transaction.<br />
● Fixed an issue where VLAN tagged multicast MAC packets were not <strong>for</strong>warding to the network (NIC)<br />
driver if the VLAN tag differed from the VLAN tag configured <strong>for</strong> <strong>iSCSI</strong>.<br />
Between Versions 02.0.0.7 and 2.0.0.19<br />
● Fixed a denial of service test case when the following occurred:<br />
❍ Pings were sent to the <strong>QLA405x</strong> MAC address.<br />
❍ The IP address was not <strong>for</strong> the <strong>QLA405x</strong>.<br />
❍ A network driver was not installed <strong>for</strong> the <strong>QLA405x</strong>.<br />
Previously, this case could eventually cause the HBA to reset.<br />
● Fixed an issue where the <strong>iSCSI</strong> data bytes received count was not being properly incremented.<br />
● Fixed problem where discovered targets were inheriting some values (<strong>for</strong> example, MaxBurstLength,<br />
FirstBurstLength, InitialR2T, ImmediateData, DataSequenceInOrder and DataPDUInOrder)<br />
incorrectly.<br />
● Fixed a case where I/O timeouts could occur under heavy stress testing running traffic on both ports.<br />
4. Known Issues<br />
None<br />
5. Trademarks<br />
<strong>QLogic</strong>, the <strong>QLogic</strong> logo, QLA, SANsurfer, and SANblade are registered trademarks of <strong>QLogic</strong> Corporation.<br />
SANtrack is a trademark of <strong>QLogic</strong> Corporation.<br />
Windows is a registered trademark of Microsoft Corporation.<br />
SANavigator is a registered trademark of McData Corporation.<br />
Silkworm is a registered trademark of Brocade Communications Systems Inc.<br />
All other brand and product names are trademarks or registered trademarks of their respective owners.<br />
<strong>Firmware</strong> <strong>for</strong> <strong>QLA405x</strong> <strong>iSCSI</strong> <strong>HBAs</strong> <strong>Release</strong> <strong>Notes</strong> 4 of 5
6. Notices<br />
In<strong>for</strong>mation furnished in this document is believed to be accurate and reliable. However, <strong>QLogic</strong><br />
Corporation assumes no responsibility <strong>for</strong> its use, nor <strong>for</strong> any infringements of patents or other rights of<br />
third parties which may result from its use. <strong>QLogic</strong> Corporation reserves the right to change product<br />
specifications at any time without notice. Applications described in this document <strong>for</strong> any of these products<br />
are only <strong>for</strong> illustrative purposes. <strong>QLogic</strong> Corporation makes no representation nor warranty that such<br />
applications are suitable <strong>for</strong> the specified use without further testing or modification. <strong>QLogic</strong> Corporation<br />
assumes no responsibility <strong>for</strong> any errors that may appear in this document.<br />
7. Additional In<strong>for</strong>mation<br />
None<br />
8. Contacting Support<br />
Please feel free to contact your <strong>QLogic</strong> approved reseller or <strong>QLogic</strong> Technical Support at any phase of<br />
integration <strong>for</strong> assistance. <strong>QLogic</strong> Technical Support can be reached by the following methods:<br />
Web: http://support.qlogic.com<br />
North America Contact In<strong>for</strong>mation<br />
Email: support@qlogic.com<br />
Phone: (952) 932-4040<br />
Support contact in<strong>for</strong>mation <strong>for</strong> other regions of the world is available at the <strong>QLogic</strong> website:<br />
http://support.qlogic.com<br />
Go to Top<br />
© Copyright 2007. All rights reserved worldwide. <strong>QLogic</strong>, the <strong>QLogic</strong> logo, and the Powered by <strong>QLogic</strong> logo are<br />
registered trademarks of <strong>QLogic</strong> Corporation. All other brand and product names are trademarks or registered<br />
trademarks of their respective owners.<br />
<strong>Firmware</strong> <strong>for</strong> <strong>QLA405x</strong> <strong>iSCSI</strong> <strong>HBAs</strong> <strong>Release</strong> <strong>Notes</strong> 5 of 5