QLogic Driver Release Notes QLogic Corporation All rights reserved Table of Contents 1. Change History 2. Known Issues 3. Notices 4. Contacting Support 1. Change History This section contains: * 1.1 Hardware Support * 1.2 Software Component * 1.3 Bug Fixes 1.1 Hardware Support Between versions 901.k1.9vmw and 911.k1.1-5vmw: * Support for 8200 Series Converged Network Adapters Between versions 911.k1.1-5vmw and 911.k1.1-29vmw: * None Between versions 911.k1.1-29vmw and 934.5.1.0-1vmw: * Support for 8300 Series 16Gb FC adapters and 10Gb Converged Network Adapters Between versions 934.5.1.0-1vmw and 934.5.10.0-1vmw: * None Between versions 934.5.10.0-1vmw and 934.5.11.0-1vmw: * 10xxx adapter support Between versions 934.5.11.0-1vmw and 934.5.30.0-1vmw: * None Between versions 934.5.30.0-1vmw and 934.5.31.0-1vmw * Support for 8044 Series 10Gb Converged Network Adapters Between versions 934.5.31.0-1vmw and 934.5.32.0-1vmw * None Between versions 934.5.32.0-1vmw and 934.5.33.0-1vmw: * Support for 2700 Series Fibre Channel Adapters Between versions 934.5.33.0-1vmw and 934.5.36.0-1vmw: * None Between versions 934.5.36.0-1vmw and 934.5.37.0-1vmw: * Remove support for 8044. This hardware will not go in production. Between versions 934.5.37.0-1vmw and 934.5.38.0-1vmw: * None. 1.2 Software Components Between versions 901.k1.9vmw and 911.k1.1-5vmw: * Host side QoS basic framework. * Host side QoS IOCTL interface. * 25XX: Add support for GET_SERDES_PARAMS ioctl. * APEX support for handling vport targets. * Update ISP24XX and ISP25XX firmware to 5.03.16 * Added support for new 82XX Series Converged Network Adapter Between versions 911.k1.1-5vmw and 911.k1.1-6vmw: * 81XX: Add internal loopback support. Between versions 911.k1.1-6vmw and 911.k1.1-7vmw: * Provide method for updating I2C attached VPD. Between versions 911.k1.1-7vmw and 911.k1.1-8vmw: * Update ISP24XX and ISP25XX firmware to 5.05.04 * Added support for Little River adapter. Between versions 911.k1.1-8vmw and 911.k1.1-9vmw: * Update ISP24XX and ISP25XX firmware to 5.05.05 Between versions 911.k1.1-9vmw and 911.k1.1-12vmw: * Update ISP24XX and ISP25XX firmware to 5.06.00 * 82XX: Add Beaconing enable/disable support. * 82XX: Ioctl support for extracting f/w minidump. * 82XX: Support for taking f/w minidump. Between versions 911.k1.1-12vmw and 911.k1.1-14vmw: * 82XX: Add APEX support. Between versions 911.k1.1-14vmw and 911.k1.1-15vmw: Between versions 911.k1.1-15vmw and 911.k1.1-16vmw: Between versions 911.k1.1-16vmw and 911.k1.1-17vmw: * None Between versions 911.k1.1-17vmw and 911.k1.1-18vmw: * Update ISP24XX and ISP25XX firmware to 5.06.02 * 81XX: Add APEX support. Between versions 911.k1.1-18vmw and 911.k1.1-19vmw: * Updated LICENSE.qla2xxx file. Between versions 911.k1.1-19vmw and 911.k1.1-20vmw: * None Between versions 911.k1.1-20vmw and 911.k1.1-21vmw: * 82XX: Remove 82xx firmware file and references to ql82xx_fw. * Update ISP24XX and ISP25XX firmware to 5.06.03 Between versions 911.k1.1-21vmw and 911.k1.1-22vmw: * None Between versions 911.k1.1-22vmw and 911.k1.1-23vmw: * Update ISP24XX and ISP25XX firmware to 5.06.04 Between versions 911.k1.1-23vmw and 911.k1.1-24vmw: * Update ISP24XX and ISP25XX firmware to 5.06.05 Between versions 911.k1.1-24vmw and 911.k1.1-25vmw: Between versions 911.k1.1-25vmw and 911.k1.1-27vmw: Between versions 911.k1.1-27vmw and 911.k1.1-28vmw: Between versions 911.k1.1-28vmw and 911.k1.1-29vmw: * None Between versions 911.k1.1-29vmw and 934.5.1.0-1vmw: * Added support for 83XX series 16Gb FC Adapters and 10Gb Converged Network Adapters. * 83XX: Loopback support added for CNA. Between versions 934.5.1.0-1vmw and 934.5.3.0-1vmw: * None Between versions 934.5.3.0-1vmw and 934.5.4.0-1vmw: * MCTP support for Hilda FC16 adapters. Between versions 934.5.3.0-1vmw and 934.5.7.0-1vmw: * None Between versions 934.5.7.0-1vmw and 934.5.8.0-1vmw: * Fibre Channel Event tracing (FCE) Support. Between versions 934.5.8.0-1vmw and 934.5.9.0-1vmw: * Update ISP24XX and ISP25XX firmware to 5.07.02 Between versions 934.5.9.0-1vmw and 934.5.11.0-1vmw: * None Between versions 934.5.11.0-1vmw and 934.5.12.0-1vmw: * Update ISP24XX and ISP25XX firmware to 5.09.00 Between versions 934.5.12.0-1vmw and 934.5.16.0-1vmw: * None Between versions 934.5.16.0-1vmw and 934.5.17.0-1vmw: * Extend thermal support to all adapters and give priority to I2C thermal. Between versions 934.5.17.0-1vmw and 934.5.24.0-1vmw: * None Between versions 934.5.24.0-1vmw and 934.5.25.0-1vmw: * Update ISP24XX and ISP25XX firmware to 7.00.01 Between versions 934.5.25.0-1vmw and 934.5.26.0-1vmw: * Update ISP24XX and ISP25XX firmware to 7.00.02 Between versions 934.5.26.0-1vmw and 934.5.30.0-1vmw: * None Between versions 934.5.30.0-1vmw and 934.5.31.0-1vmw: * Added support for 8044 series 10Gb Converged Network Adapters (FCoE). Between versions 934.5.31.0-1vmw and 934.5.32.0-1vmw: * Update ISP24XX and ISP25XX firmware to 7.01.00 Between versions 934.5.32.0-1vmw and 934.5.33.0-1vmw: * Support for 2700 Series Fibre Channel Adapters Between versions 934.5.33.0-1vmw and 934.5.34.0-1vmw: * None Between versions 934.5.34.0-1vmw and 934.5.35.0-1vmw: * Update ISP24XX and ISP25XX firmware to 7.02.00 Between versions 934.5.35.0-1vmw and 934.5.36.0-1vmw: * None Between versions 934.5.36.0-1vmw and 934.5.37.0-1vmw: * Remove support for 8044 series adapter. Between versions 934.5.37.0-1vmw and 934.5.38.0-1vmw: * Update ISP24XX and ISP25XX firmware to 7.03.00 1.3 Bug Fixes The following fixes were made to the Fibre Channel-FCoE driver for ESXi 5.0.x between the following versions: Between versions 901.k1.9vmw and 911.k1.1-5vmw: * Correcting debug log for fcport in device-reset handler. * Reduce FCP-cmd-status processing debug statements for good cases. * 82XX: Display hardware/firmware regs to get more information about the error. * 82XX: Updated the reset sequence for ISP82xx. * Display PortID information during FCP command-status handling. * Cleanup FCP-command-status processing debug statements. * Check for a match before attempting to set FCP-priority information. * Update copyright banner. * Correctly provide request-queue id as the MSB of the handle to abort-command. * 82XX: Corrected the "Flash FW version" display in proc. * Minor modification for cleaner debug messages. * Properly set tagging modifier while executing I/Os. * 82XX: Clear "online" flag only after waiting for pending cmds. * Freeing nport handle on LOGO. * Correctly free fcp_cmnd from fcp_cmnd_dma_pool. * Perform range check on luns list-length returned in REPORT LUNS response. * Cleanup ha from host list on scsi-add-host failure. * 82XX: Correctly propagate rom_lock timeout failure status. * 82XX: Handle mbx timeout condition with firmware still active. * Handle good underrun case. * Fix srb memory leak in scsi pass-through ioctl path. * 82XX: Fix compiler warnings. * 82XX: Abort pending commands for faster recovery during ISP reset. * 82XX: Retry device initialization in case of rom_lock failure. * 82XX: Issue mailbox commands only if device state is "READY" for ISP82XX. * 82XX: Perform FCoE context reset before trying adapter reset for ISP82XX. * 82XX: Safely operate on temp pointer during traversal through ha->vp_list. * 82XX: Correct request_irq params if msi-enabled. * 82XX: Don't perform a BIG_HAMMER if Get-ID (0x20) mailbox cmd fails on CNAs. * 82XX: Set port0 flag correctly. * 82XX: Populating model_number and model_desc correctly from nvram. * 82XX: Populate ha->chip_revision field properly from PCI config space. * 82XX: Skip loopback if f/w reset is active/needed. * 82XX: Memory wedge with peg_halt test in loop [ER73667] * 82XX: ER 76334 band aid for 82XX, to be removed on next fw drop. * Wait for pending vport commands in LUN reset, if applicable. * 82XX: Perform LUN reset for vports with outstanding I/O for proper cleanup. * Change MSI-X initialization from using incorrect request_irq parameter. * 82XX: Add QUIESCENT mode support. * 82XX: Release the rom-lock if the firmware died while holding it. * 82XX: Add 82XX support for "qla_gdmp" dump extraction utility. * 82XX: Add EBT support. * 82XX: Fix the flash write failure. * 82XX: Initial support added for 82XX FCoE hbas. Between versions 911.k1.1-5vmw and 911.k1.1-6vmw: * Correctly get "wwpn" from incoming QOS api request. * Removing QOS ioctls not required and correcting debug prints. * Correctly allocate and return buffer for get-vport-list ioctl. * Turn on multi-queue QoS support by default. * Provide "topology" info in query-hba-port ioctl. * Display the request-queue ID for vport (in multiqueue-qos mode). Between versions 911.k1.1-6vmw and 911.k1.1-7vmw: Between versions 911.k1.1-7vmw and 911.k1.1-8vmw: * None Between versions 911.k1.1-8vmw and 911.k1.1-9vmw: * 81XX: Fixed the incorrect zero test on array new_config[]. Between versions 911.k1.1-9vmw and 911.k1.1-12vmw: * 82XX: Set beacon blink state. * 82XX: Minidump: Correct opcodes for AND and OR operation. * 82XX: Assign correct timeout value for config-led mailbox command. * Correct failure return status for qla2x00_set_led_24xx. * 82XX: Correct beaconing debug messages. * 82XX: Add 82xx, 25xx to beaconing feature supported list. * Use proper init_cb_size which considers MID/non-MID init-cb structure sizes. * Use correct vport variable in proc display. * Minidump: Dump collection need not be protected with idc-lock. * Minidump: Introduce ql2xenablemd to enable/disable minidump. * Minidump: Implement reset_owner logic * Correct exit condition of for-loops in request queue iterations. * 81XX: Handle MPI timeout indicated by AE8002 * 82XX: Correct IS_QLA82XX macro for 82XX extraction utility. Between versions 911.k1.1-12vmw and 911.k1.1-14vmw: * Fix queue_count variable initial value in queue-deletion routine. * Fix miscellaneous compilation warnings. * 82XX: Set correct port0 flag based on pci-dev function. * Fix queue_count variable initial value in re-initialization routine. * 82XX: Handle graceful idc state change from COLD -> INITIALIZING -> FAILED. Between versions 911.k1.1-14vmw and 911.k1.1-15vmw: * 81XX: Correct erroneous check for vp-idx to allow MPI reset for base-vha only. * Initialize temperature values for covering get-thermal-temp failure case. * Correct inadvertent loop state transitions during port-update handling. * Refactor call to qla2x00_read_sfp for thermal temperature. Between versions 911.k1.1-15vmw and 911.k1.1-16vmw: * Allow an override of the registered maximum LUN. * Correct keywords printed in dump file in dump retrieval utility. * Perform FDMI and FC4 registration on resync due to "Clear Virtual Link" FIP. Between versions 911.k1.1-16vmw and 911.k1.1-17vmw: * Add mqenable check before calling multi-queue init/delete routines. Between versions 911.k1.1-17vmw and 911.k1.1-18vmw: * 82XX: Corrected f/w dump structure assignment. * 82XX: Correct the drv_state log message. * 82XX: Complete mbx cmds in interrupt mode only if waiting for it. * 82XX: Display minidump feature information in proc node. * 82XX: Enable minidump capture capability by default. Between versions 911.k1.1-18vmw and 911.k1.1-19vmw: * 82XX: Correct FW_ISP8021 index for 82xx firmware blob. Between versions 911.k1.1-19vmw and 911.k1.1-20vmw: * Display serial number of adapter in proc node. * 82XX: Prevent collecting f/w minidump directly on an 0x8002 event. * 82XX: Temperature monitoring for P3P core. Between versions 911.k1.1-20vmw and 911.k1.1-21vmw: * 82XX: Nothing to be done on 0x8002 event as it will be followed by f/w abort. * 82XX: Disable generating pause frames when firmware hang detected. Between versions 911.k1.1-21vmw and 911.k1.1-22vmw: * Enhance multi-queue firmware dump support. * Remove call to pci_get_drvdata in dump routines. * Correctly initialize and enable vports after fw reset. * 82XX: Add coredump interrupt handler in msix mode (qla82xx_msix_poll). Between versions 911.k1.1-22vmw and 911.k1.1-23vmw: * Increase array size that stores board serial number. * 81XX: Print out contents of mailbox 4 for 8012 async events. * 81XX: Defensive check to prevent mpi-reset for other ISPs. Between versions 911.k1.1-23vmw and 911.k1.1-24vmw: * None Between versions 911.k1.1-24vmw and 911.k1.1-25vmw: * 82XX: Added error logging for recoverable f/w abort. * 82XX: Remove unwanted ms reset-unreset code piece. Between versions 911.k1.1-25vmw and 911.k1.1-26vmw: * 82XX: Check peg-halt-status bits 8-28 for f/w abort error code. * Improved IOCTL command recovery in the event of timeout. Between versions 911.k1.1-26vmw and 911.k1.1-27vmw: * Correctly skip enqueuing aens for pre-boot hosts. Between versions 911.k1.1-27vmw and 911.k1.1-28vmw: * Remove protected nvram-update for 2G and 4G hbas. * Perform safe freeing of memory for every vha cleanup. * Correctly perform cleanup after early "ha" allocation failure. Between versions 911.k1.1-28vmw and 911.k1.1-29vmw: * Make f/w dump extraction independent of dpc thread activity. * 82XX: Maintain total IO count statistics for physical and virtual port. Between versions 911.k1.1-29vmw and 934.5.1.0-1vmw: * 83XX: Separate chip-reset option for FCoE and NIC-Core reset. * 83XX: Set IDC-Control and Clear IDC-Lock-Recovery regs on first driver load. * 83XX: Allow reset-recovery to be initiated on state change to NEED RESET. * 83XX: Solution for handling bogus peghalt AENs. * 83XX: Support for IDC AUDIT * 83XX: Support for IDC Lock Recovery. * 83XX: Display both FCoE and NIC f/w version in proc. * 83XX: Revert back to 0x81 as the common CNA VPD region. * 83XX: Perform correct check during loopback operation. * Added IOCTL interface to generically access I²C attached devices. * Complete the timed out mbx cmd to avoid mbx access failures for next command. Between versions 934.5.1.0-1vmw and 934.5.2.0-1vmw: * 83XX: Get the correct vpd region starting offset for CNA. * Remove unwanted references to hw-event logging. * 83XX: Fix for handling some error conditions in loopback. Between versions 934.5.2.0-1vmw and 934.5.3.0-1vmw: * Remove unnecessary wait for mbx 0x2a to complete. * Fix for updating topology when loop-state = DEAD. * 83XX: Perform ROM mbx cmd access only after ISP soft-reset during f/w recovery. Between versions 934.5.3.0-1vmw and 934.5.4.0-1vmw: * Fix for updating topology with loopback connector for all CNA and 16GB FC hbas. * 81XX: Assign correct Coredump handler. * Remove qla2x00_wait_for_loop_ready function. Between versions 934.5.4.0-1vmw and 934.5.5.0-1vmw: * Problem Description: Per VMWare's request for ESX 5.x async drivers - need to throttle the printing of "dropped frame" messages. Since 5.0 driver will not have IODM event support on 5.1, that is a regression from inbox driver. The need to implement throttled log messages for Frame Drop events, is because this is a common but hard to debug situation. The reason the log has to be throttled is because the event can happen to many commands at a short period of time, thus causing Panic. The recommended frequency is log it every 5s. * Solution: Create a log timer for this particular event where the printing of any Frame Drop messages happens no more than once every 5 seconds. * Problem Description: If driver failed to attach during probe time, the cleanup path would blindly cleanup the dpc workqueues. This would lead to a PSOD if they weren't properly initialized. * Solution: Check that the workqueue pointer is non-NULL before making the destroy call. * Problem Description: The MCTP feature incorrectly checked the wrong pointer when allocating a buffer for the peg dump. If the MCTP dump buffer allocation failed, this could lead to incorrectly assuming it had succeeded. * Solution: Fixed the check to the correct buffer pointer. * Problem Description: Need to use Set Parameter Mb Cmd (0x59) to pass to the firmware the driver version for OCBB feature. * Solution: Implemented the option 0x9 of this mailbox command to pass the 24 byte value to be utilized by the firmware. * Problem Description: EFI and Fcode versions on certain flash packages will show up as "0.00" on the proc entry. * Solution: Changed code to display "N/A" instead to make it more clear to the end user. Between versions 934.5.5.0-1vmw and 934.5.6.0-1vmw: * Problem Description: AEN 8070 has been enhanced to provide for additional reporting in 83XX hbas. Drivers that already handle 8070 for specific mezz cards, will now need to handle the new reason codes for 8070 by looking at additional mailboxes. * Solution: Added code to handle 8070 AEN and the various subcodes expected. The change made is only informational and doesn't effect regular operation. * Problem Description: Loopback command was failing after connecting a loopback connector to an QLA83XX adapter after it was connected to an F_Port on a switch. * Solution: The problem was stale topology being exported to the API that resulted in the wrong buffer size being sent down through the IOCTL interface. This lead to an echo command being incorrectly submitted to the firmware. The topology is now defaulted to "loop (NL)" in the event of 8030 AEN for 83XX and all CNA adapters. Between versions 934.5.6.0-1vmw and 934.5.7.0-1vmw: * Problem Description: Need to improve loop-id usage for fcport. * Solution: Store used fcport loop_id's in a bitmap so that as opposed to looping through all fcports to find the next free loop_id, new loop_id lookup can be just be done via bitops. This was done to improve code and not a bug fix. * Problem Description: More clarity needed in loopback test log messages. * Solution: Previously we printed one debug log message irrespective of type of diagnostic loopback test. Now we print correct log message corresponding to type of diagnostic loopback test. * Problem Description: Driver not handling 8017h AENs - loop initialization errors. * Solution: According to F/W spec for most of the HBAs AEN 8017 is an informational AEN. Earlier driver would not handle this AEN, now we are adding support for Logging the information. * Problem Description: Unclear in logs and/or proc when INTx mode was enabled. * Solution: Added info in logs to show when INTx is enabled. Also added proc info for all interrupt modes. * Problem Description: Need to log "Unknown AEN" for 8017 received on unsupported HBAs. * Solution: Added debug log for unsupported HBA in AEN 8017 logic. * Problem Description: Informational - interrupt status 0x13 not supported in 83XX. * Solution: Print out error message when encountering these interrupt types with 83XX. Between versions 934.5.7.0-1vmw and 934.5.8.0-1vmw: * Problem Description: Improved loop-id patch from 934.5.7.0-1vmw missed making the proper function call to clear the loop-id bit map in the event the target disappears from the fabric. With enough link up/down events on the target side (RSCNs), this would lead to the bit map becoming full and the driver running out of loop ids. * Solution: Provided the proper function call to clear loop-id bit map in this path. Between versions 934.5.8.0-1vmw and 934.5.9.0-1vmw: * Problem Description: In scenarios where other functions go away (i.e. drv-presence is cleared) after they have provided IDC-ack, the reset-owner did not ignore these bits and timesout in waiting for acks. * Solution: Ignore IDC-ack bits from functions no longer present. * Problem Description: Before performing ISP reset, attempt to acquire the RISC semaphore; this attempts to avoid killing the I2C access state of the other PCI function. * Solution: Add acquiring of risc semaphore before doing ISP reset. Between versions 934.5.9.0-1vmw and 934.5.10.0-1vmw: * Problem Description: Driver was missing minor changes for support with latest loopback specification for ISP 8031. * Solution: Use 0x4 code while setting External-loopback, instead of 0x0 that we use now as backward compatibility. Also when loopback test terminates with a failure, the driver instance that initiated loopback test must restore the port configuration back to the original state. * Problem Description: In some corner case scenarios, when reset-recovery and fcoe chip-reset occur in sequence, the FCoE IDC state-handler gets invoked after 30 seconds and considers this as Initialization timeout. However in reality the other protocol driver has already recovered the nic-core and is in READY state. This results in an unrecoverable error and the board will be offlined. * Solution: When IDC state handler reaches the timeout, we check device-state to confirm if reset-recovery is still in progress. Declare a Initialization Timeout only if device-state != READY. * Problem Description: In some hardware, for ISP2422 enabling legacy interrupts fails. * Solution: First try to enable msi for ISP2422 before falling back to intA. Between versions 934.5.10.0-1vmw and 934.5.11.0-1vmw: * Problem Description: Code review revealed incorrect parameter passing for Get FW State Mailbox Command. * Solution: Fix array-overflow issue while calling get-firmware-state. Originally get-firmware-state returns 3-to-5 registers which get copied to result. However on multiple occasions it has been passed lesser sized array which will cause potential buffer overflow issues. The patch fixes these and removes unused routine calling get-firmware-state. * Problem Description: PSOD seen when we change personality settings form vi-plugin. * Solution: Root-cause is PSOD on access of scsi-device which is not valid for ioctl-pass-through commands in the device-reset path. We need to allow midlayer's block-error-handling only for normal i/o path. Between versions 934.5.11.0-1vmw and 934.5.12.0-1vmw: * Problem Description: 10xxx: Driver wouldn't attach. * Solution: Correct module name in qla2xxx.xml file * Problem Description: 10xxx: Bugzilla 7294: "hcli list/show lun" hangs hcli and gives no ISA adapter found * Solution: The driver had incorrect structure definitions in passthru IOCTL structures. Also, the driver was not copying back the IOSB data to the passthru_status structure in the interrupt handler. * Problem Description: 10xxx: Warm Reset logic was incomplete. * Solution: This logic was updated after input provided by 10xxx FW team. * Problem Description: 10xxx: Register Host info code was out of sync. * Solution: Brought over changes from the Unified Linux driver to data structures and function call for the Register Host Info IOCTL. * Problem Description: 10xxx: PSOD see during initialization of response queue. * Solution: Check for invalid req/rsp queue offsets. The request and response queue offsets that are returned in the 8060 AEN should always be 0x100 and 0x4100 respectively. * Problem Description: A customer on a 24XX adapter was seeing a RISC pause followed by soft reset lockup that would ultimately lead to a PSOD. * Solution: In conjunction with fw 5.09.00, driver will: a) disable the fw workaround that tries to recover from PCIe Unexpected Completions setting Set Additional Firmware Options 2, bit 2. b) Mask PCI Unexpected Completions message in config space Also, added code to prevent future CPU lockups in reset code and disable adapter if soft reset fails. Between versions 934.5.12.0-1vmw and 934.5.13.0-1vmw: * Problem Description: vmhba bus reset fails when port is logged out. * Solution: Issue was target level reset was issued with Full Login on LIP and the wrong status was returned from qla2x00_loop_reset. Fix was to perform task management IOCB (target reset) before Full Login on LIP. * Problem Description: FCET trace enable (Mbx Cmd 27h) was failing during init time for QLA2462. * Solution: Put a check in the code to not use FCET trace with QLA24xx. * Problem Description: 10xxx: Driver's handling of FW state's during driver init was incomplete. * Solution: Brought Init FW Ready function in sync with Linux driver. * Problem Description: 10xxx: For debugging purposes. * Solution: Provide log message of all outstanding commands on the list when an abort I/O comes down. Also, added ability to print outstanding cmd list and do a register dump upon receiving a device reset. * Problem Description: 10xxx: PSOD when printing outstanding command list. * Solution: Provide lock protection in interrupt path to synchronize access to outstanding command list. Also provide synchronization with interrupt path structures and registers which brings this code more in line with how existing interrupt handlers behave. * Problem Description: 10xxx: Code improvement * Solution: Brought previous undefined async events into case statement after looking over latest FW interface spec. Also, brought in sync the response queue handling with Linux driver. Added block_error_handler call in eh_* functions. * Problem Description: 10xxx: Various Bugzillas where the symptoms pointed to missing interrupts. * Solution: Bring interrupt handler more in sync with Linux driver and existing interrupt handlers. 1. Allow multiple interrupts to be processed per call of ISR. 2. Make case statement handling more robust if multiple interrupts are pending at the same time. 3. Return IRQ_NONE when interrupt status bits are zero. Between versions 934.5.13.0-1vmw and 934.5.14.0-1vmw: * Problem Description: Related to RISC pause/soft reset fix in 934.5.12.0-1vmw discovered in code review. * Solution: Moved the setting of Additional FW Options 2, Bit 2 to the 24xx function call. * Problem Description: 10xxx: PSOD encountered with function that printed outstanding command list. * Solution: Correctly recognize and log for TMFs Or Aborts in outstanding list. * Problem Description: 10xxx: Adapter wasn't properly recovering from an adapter reset. * Solution: Implement proper warm reset sequence as outlined by Srini and Chuck on 2/1. * Problem Description: Structure change due to updated IOCTL pass-thru spec. * Solution: Convert request_ptr and response_ptr from u_char* to uint64_t. Between versions 934.5.14.0-1vmw and 934.5.15.0-1vmw: * Problem Description: 10xxx: Seen during code review. * Solution: Remove ABORT_ISP_ACTIVE check in queuecommand path to allow proper rport state check to determine if DID_NO_CONNECT status is necessary. * Problem Description: 10xxx: hcli list drive -isa=0 was failing with no SSDs plugged in. * Solution: Pass Through IOCTL code was not populating the IOSB in the passthru_status structure in the event of an error status. Nor was the code returning the proper error status when the IOCTL itself failed. Between versions 934.5.15.0-1vmw and 934.5.16.0-1vmw: * Problem Description: 10xxx: For all I/O related issues / lun disappearing/ adapter disappearing issues, it might help to have some level of error logging in place in the drivers to give a good starting point for debugging right away. * Solution: Print out new log messages by default utilizing DEBUG21 (new level). Between versions 934.5.16.0-1vmw and 934.5.17.0-1vmw: * Problem Description: LUN reset IOCB error handling improvement. * Solution: Entry Status field to report IOCB type error, and FW detect these error and reports them without executing the IOCB. Now, driver detects these errors and reports them through driver's log. * Problem Description: 10xxx: Format for a couple of the 10xxx module parameters was not in line with the current format. * Solution: Changed the format to bring in sync with the existing module parameters. qla7xDisableWatchDogTimer -> ql7xdisablewatchdogtimer qla7xDisableReset -> ql7xdisablereset * Problem Description: 10xxx: PSOD while running IO on cached data store. * Solution: Improvement of abort I/O processing. Create separate srb for the abort and handle reference counting correctly. Between versions 934.5.17.0-1vmw and 934.5.18.0-1vmw: * Problem Description: NPort Handles in certain configurations with NPIV ports were getting exhausted quickly leading to login failures and paths not getting discovered. * Solution: Set the bitmap in sync with what max-loop-id we support per physical port. Between versions 934.5.18.0-1vmw and 934.5.19.0-1vmw: * Problem Description: Host identification from an application's perspective is always "ESXi 5 Host". Need a unique host identfier so application can distinguish between different hosts in the cluster. * Solution: Used the 2 vmk API calls vmk_SystemGetIDString and vmk_SystemGetVersionInfo to populate the Register Host Info fields that get passed during init time to the firmware. Between versions 934.5.19.0-1vmw and 934.5.20.0-1vmw: * Problem Description: 10xxx: Previous attempt to use system UUID for unique host identifier did not work in ESX 5.0 systems. * Solution: Use WWNN instead to uniquely identify ESX host. Between versions 934.5.20.0-1vmw and 934.5.21.0-1vmw: * Problem Description: Code inspection. * Solution: Bug in qla82xx_get_minidump_template() where endianism in mb[6] and mb[7] was reversed. mb[6] and mb[7] are set to LSW and MSW of MSD of phys. address respectively. * Problem Description: Could cause unnecessary side effects for other 4G adapters then ISP2432. * Solution: Only set the Uncorrectable Error Mask and firmware option(to prevent RISC pauses and soft reset hangs) for ISP2432 adapter. * Problem Description: Code review revealed mulit-queue related init code incomplete for Hilda. Could lead to driver failing to initialize properly if CPU affinity was disabled in Hilda. * Solution: Fix was to ensure MQ init code was always executed with Hilda adapters. * Problem Description: Code improvement. * Solution: We need to stop auto-dma once we get 8070 aen with subcode 01h - 0fh, and disable the adapter once we get 8070 aen with subcode 0x12. * Problem Description: Set Parameters MB Cmd 59h was using the mb regs method for sending down driver version for all chip types. * Solution: The correct method for ISP chips is to pass down the driver version in a host memory buffer and pass down the DMA address. * Problem Description: During the deployment of the 250 VMs from a single linked clone random nodes in the VMware cluster will Purple Screen with either a PCI INT error or a QLAFxxx driver issue. * Solution: The driver is going through recovery and is cleaning up outstanding commands incorrectly leading to a dereferencing of a NULL pointer. The SRB_ABT_CMD type is no longer a converted normal I/O sp and doesn't need to be cleaned up like an normal sp when removed from the outstanding command list. Between versions 934.5.21.0-1vmw and 934.5.22.0-1vmw: * Problem Description: P3P firmware update taking longer duration than expected. * Solution: Removing unnecessary scheduling out of the firmware update process. * Problem Description: 10xxx: Various bugs uncovered where the vmkernel logs revealed the driver was running low on heap memory. * Solution: IOCTL path was allocating a buffer and not deallocating, for every call. Solution was to deallocate buffer properly in qla7xxx_validate_ioctl_access. Between versions 934.5.22.0-1vmw and 934.5.23.0-1vmw: * Problem Description: FDMI RPA payload information (host_name) not being populated. * Solution: Populate host name for FDMI RPA payload using WWNN of the HBA. Between versions 934.5.23.0-1vmw and 934.5.24.0-1vmw: * Problem Description: If bios driver has already initialized f/w then the OS driver performing re-init of 10xxx adapter would cause PSOD issues. * Solution: OS drivers need to check pseudo-aen register to confirm bios initialization. If yes then perform a f/w shutdown, before re-initializing f/w. * Problem Description: In certain Iometer workloads, driver continuously returns status of "Host Busy" leading to low throughput. * Solution: The max_sectors, sg_tablesize, request queue size and can_queue have been tuned such that this the max sg/dsd entries which can be generated by the OS can fit into the request queue. * Problem Description: Application would panic the system on setup with 10xxx and any other adapter. * Solution: Fix the overloaded global data structs used between 10xxx and standard ioctl interfaces. apidev_major and apidev_fops were used in both interfaces. * Problem Description: RSCNs weren't being received after an SCR failed to be transmitted by the firmware due to a driver/firmware race condition. * Solution: Driver should enable link up, and thus fabric resync, for Port Update async events that are global and pertinent login state change. * Problem Description: Code Inspection. * Solution: Check to enable BPM support for 25XX adapters. * Problem Description: A timeout of a lun reset will cause all subsequent lun resets to fail. * Solution: Need to send Marker ICOB after a timedout lun reset. Between versions 934.5.24.0-1vmw and 934.5.25.0-1vmw: * Problem Description: External loopback with link down, is currently timing out in driver, as fail to receive any dcbx event in this case. Solution: We need to return link-down status back to application in such a scenario. * Problem Description: FW Updating not completed for QLA82XX through application. * Solution: Put 10 us delay before we can read the ROM Read Data register. * Problem Description: FW Updating not completed for QLA82XX through application. * Solution: Put 10 us delay before we can read the ROM Read Data register. * Problem Description: Mt. Rainer - After a reboot, node name of VMware Host not getting populated. * Solution: Only register host info with f/w once the system has completed bootup process. * Problem Description: Continual ISP resets could be encountered when get loop id fails. * Solution: Do link initialization on get loop id failure. Between versions 934.5.25.0-1vmw and 934.5.26.0-1vmw: * Problem Description: Hitting PSOD during FW update. * Solution: Following performance improvement change reverted. "In certain Iometer workloads, driver continuously returns status of "Host Busy" leading to low throughput." Between versions 934.5.26.0-1vmw and 934.5.27.0-1vmw: * Problem Description: Mt. Rainer - PSOD while testing lun/device resets. * Solution: Correctly abort only i/o cmds and skip tmfs in outstanding list. * Problem Description: CNA flash f/w info not being read. * Solution: Reading the CNA flash f/w info for both 82XX and 8031. * Problem Description: Driver has stale flash version after a f/w update. * Solution: Added new ioctl, that would enable driver to refresh the flash version. * Problem Description: Changing the VLAN ID through the management app on P3P adapters caused the FCoE link to never come up. * Solution: Pass the new VLAN ID to the f/w. Between versions 934.5.27.0-1vmw and 934.5.28.0-1vmw: * Problem Description: PSOD while testing Application access in a mixed adapter environment. * Solution: Correctly filter unsupported 0xF001 devices from application use. Between versions 934.5.28.0-1vmw and 934.5.29.0-1vmw: * Problem Description: Duplicate target entries would remain agter long run of switch port toggle test. * Solution: In case of SNS discovery failure, bailout and fallback to GA_NXT method of target discovery. * Problem Description: Serdes operation support for QLA2031. * Solution: Add interface for read/write serdes register. * Problem Description: While performing FW reset and recovery, QLA82xx fails to restart. * Solution: In interrupt polling mode, only clear host interrupt status in case of a actual event and not always. Between versions 934.5.29.0-1vmw and 934.5.30.0-1vmw: * Problem Description: Mt. Rainer - Change in warm reset procedure. * Solution: Update the warm reset sequence for Qlogic 10000 adapters. * Problem Description: With P3P card, PSOD seen while running all three traffic with FW reset and driver load/unload in parallel. * Solution: Only check Firmware status, only when reset required. * Problem Description: Takes longer time for non ISP8031 adapters to unattach in case of failure. * Solution: Only clear the driver presence if it's a ISP8031 adapter. * Problem Description: In low memory servers, could encounter PSOD. * Solution: Disable Extended Trace before freeing up the appropriate memory. * Problem Description: For QLA82XX, minidump collection fails. * Solution: Correctly set the mailbox registers to collect the minidump template. * Problem Description: Mt. Rainer - Change in warm reset procedure. * Solution: Update the warm reset sequence for Qlogic 10000 adapters. * Problem Description: In certain setups, extended buffer to buffer credits settings might not work as expected. * Solution: Correctly pass the extended buffer to buffer setting to the firmware. Between versions 934.5.30.0-1vmw and 934.5.31.0-1vmw: * Improvement: 8044: Improve fcoe function re-attach fix. Earlier we were re-initing fcoe from timer context which can violate scheduling in an interrupt context rule. In case of pci function forced to detach form IDC, a better way to comeback is to wait for f/w recovery to complete and allow fcoe re-init to happen within nic-core-reset dpc context. * Problem: MSI interrupt enablement fails. * Solution: 8044: Correctly disable MSI as it is not supported. * Problem: The outstanding mbx would timeout in f/w hung case. * Solution: 8044: Correctly identify f/w hung scenario for early mbx completion. * Problem: Once forcefully detached during IDC, fcoe functions would never participate in firmware recovery. * Solution: 8044: Add support to re-attach fcoe functions after forceful detach. If fcoe function has been forcefully detached but the firmware now has recovered, perform re-attach and re-init of fcoe context. * Problem: External loopback with link down, is currently timing out in driver, as fail to receive any dcbx event in this case. * Solution: Handle external-loopback request on link-down scenario. We need to return link-down status back to application in such a scenario. * Improvement: Add loopback IDC-TIME-EXTEND aen handling support. Earlier IDC-TIME-EXTEND aen was a nop and ignored by driver. We now have to handle the aen so that other protocol drivers can use time extension during some loopback operations. * Improvement: 8044: Support to set dont-reset-hba for ISP8044 through proc. * Improvement: Read the MPI version from firmware and provide it to application as well. * Improvement: Implement flash buffer-mode write. Earlier mechanism of dword flash write was very time intensive. With buffer-mode write we try to greatly optimize the flash writes. * Improvement: 8044: Read CNA flash f/w info (region 0x97) Earlier CNA f/w info was not populated for 82xx/8044/8031 from flash. This patch reads the correct CNA f/w region 0x97 and reads info. * Improvement: 8044: Implement write-flash support. * Improvement: 8044: Bring in legacy interrupt handler support. * Improvement: 8044: Enabling loopback support. * Improvement: 8044: Implement read from MS memory. * Improvement: Correct the 8044 device description. * Improvement: 8044: Add pex-dma support for capturing minidump. Adding pex-dma support greatly improves the minidump capture time for 8044. Between versions 934.5.31.0-1vmw and 934.5.32.0-1vmw: * Problem Description: 8044: External loopback test goes into infinite loop. * Solution: Return linkdown status to application if driver does not received DCBX AEN. * Problem Description: 8044: In certain cases, firmware dumps total size is not being reported correctly. * Solution: Driver should skip any minidump template entry that driver does not understands. * Improvement: Add support for new opcodes (RDDFE, RDMDIO, POLLWR) for QLA8044 minidump. * Problem Description: Driver initialization would fail if NVRAM region read fails. * Solution: Fall back to default nvram configuration and try to initialize the adapater. Between versions 934.5.32.0-1vmw and 934.5.33.0-1vmw: * Improvement: 8044: Improvement for new opcodes support to QLA8044 minidump. * Problem Description: Ethernet Serdes operation support for QLA8044 adapter. * Solution: Add interface for read/write ethernet serdes register. * Problem Description: For ISP82XX adapter, during firmware dump, driver is not printing the current status of all the PEG's. * Solution: Break the long print message into smaller print messages. Between versions 934.5.33.0-1vmw and 934.5.34.0-1vmw: * Problem Description: Wrong information displayed for some module parameters. * Solution: Corrected module parameter's information. * Improvement: Seperate out module parameter to set capture_mask for QLA8044 and QLA82xx. * Problem Description: PSOD seen when repetitive "Invalid status handle" responses is encountered. * Solution: Correctly initiate reset recovery when driver encounters "Invalid status handle". * Problem Description: PSOD seen while executing F/W reset test case on QLA82XX adapters. * Solution: Removed unecessary write_unlock_irqrestore call from within qla82xx_md_rw_32. * Problem Description: Observing spurious interrupt on ISP25XX adapters with MSIX enabled. * Solution: For ISP25XX and ISP26XX, continue in polling mode. * Problem Description: P3P and Helga adapters are not able to discover targets. * Solution: During init time, correctly fill the port number field. Between versions 934.5.34.0-1vmw and 934.5.35.0-1vmw: * Improvement: Removing unnecessary delays from fw dump code path and adding feature to track the failure at different stages during firmware dump collection. Between versions 934.5.35.0-1vmw and 934.5.36.0-1vmw: * Problem Description: For QLA8044 adapter, CPU might lockup while reading large flash region. * Solution: Read flash region in chunks of 64k size and deschedules the current cpu after every iteration. Between versions 934.5.36.0-1vmw and 934.5.37.0-1vmw: * Improvement: Improve FW Init code for QLE10500 adapters. * Improvement: Add support for ELS passthrough interface. Between versions 934.5.37.0-1vmw and 934.5.38.0-1vmw: * Improvement: For QLE10500 adapter, change in warm reset sequence. None 3. Notices Information furnished in this document is believed to be accurate and reliable. However, QLogic Corporation assumes no responsibility for its use, nor for any infringements of patents or other rights of third parties which may result from its use. QLogic Corporation reserves the right to change product specifications at any time without notice. Applications described in this document for any of these products are only for illustrative purposes. QLogic Corporation makes no representation nor warranty that such applications are suitable for the specified use without further testing or modification. QLogic Corporation assumes no responsibility for any errors that may appear in this document. 4. Contacting Support For further assistance, contact QLogic Technical Support at: http://support.qlogic.com Trademarks Accelera, Accelerating Cluster Performance, InfiniCon Systems, InfiniNIC, InfiniPath, InfiniView, QLA, QLogic, the QLogic logo, ReadyPath, SANdoctor, SANsurfer, and SilverStorm are registered trademarks of QLogic Corporation. All other brand and product names are trademarks or registered trademarks of their respective owners. (c) Copyright 2014. All rights reserved worldwide. QLogic, the QLogic logo, and the Powered by QLogic logo are registered trademarks of QLogic Corporation. All other brand and product names are trademarks or registered trademarks of their respective owners.