Release Notes: QLogic QLA2100 HAM Driver for Netware 3.12, 4.11 =============================================================== Version History: Version 2.09 01/07/99 * RISC 1.15.19 E (Extended Lun) Updated. Version 2.08 12/17/98 * RISC 1.15.20 E (Extended Lun) Updated. * Corrected problem in DDI driver installation script file. * Ensure that invalid Hacb is dealt with correctly (test null pointer). Version 2.07 12/11/98 * RISC 1.15.16 E (Extended Lun) Updated. * Modified DDIfile to allow /LUNS option during driver installation. * To fix the abend caused during Remove Storage Adapter Ax, the following changes have been made: + Check for null Acb pointer at all entry points, + Removed all code for NWDIAG diagnostic option, + Simplified queue freezing in Post_HACB(). * In ErrorHandler(), leave device queue frozen when posting completion status due to check condition, as specified in the NWPA specification. Version 2.06 11/30/98 * RISC 1.15.15 E (Extended Lun) Updated. * Restructured ErrorHandler() to work around Risc/Isp data underrun problem. Version 2.05 10/20/98 * RISC 1.15.07 E (Extended Lun) Unchanged. * Renamed as Series 2.xx. * Reports virtual Id/Lun numbers mapped from actual Id/Lun numbers. Version 2.04b 10/19/98 * RISC 1.15.07 E (Extended Lun) Updated. * In SendCommandToIsp(), set the data direction in the control flags only if a data transfer is required; this fixes the CrossPoint problem where data is returned from a device on Test Unit Ready. Version 2.04a 10/14/98 * RISC 1.15.03 E (Extended Lun) Updated. * In HAM_Return_Device_Info(), if the current device is offline, continue scanning for the next device. This fixes the problem of LIST DEVICES not showing any devices beyond the one device that went away. Version 2.03 9/28/98 * RISC 1.15.02 E (Extended Lun) Unchanged. * Corrected calculation for maximum number of Loop Ids for virtual Id/Lun mapping. Version 2.02 9/24/98 * RISC 1.15.02 E (Extended Lun) Updated. * Map extended luns to id and lun pair. This is done to overcome the problem in module SCSIHD.CDM of writing the lun into the cdb. NOTE: All luns reported back to SCSIHD must be unique. NOTE: The driver imposes the following conditions: a. Number of Luns per Id x Number of Ids <= 1008 b. Number of Ids <= 126 c. Number of Luns <= 128 * AdapterRestartThread() is now spawned as a blocking thread (pre-emptable) since it calls MailboxCommand() which must run in blocking context, otherwise sleeping process abend occurs. Version 2.01b 9/08/98 * RISC 1.14.13 ITE (Extended Lun) Unchanged. * Changed maximum scatter/gather elements to 16. Version 2.01a 8/25/98 * RISC 1.14.13 ITE (Extended Lun) Unchanged. * Put commands in Isp request queue only if loop up. * Driver sets or clears the device offline flag according to the results of a device scan. * Driver will load if FC loop is not present. NOTE: When cable is later connected, the SCAN ALL LUNS command must be issued at the console to discover all new luns. * NOTE: With extended lun support, the LIST DEVICES command shows each device's luns as zero; this is a side-effect caused by the driver zeroing the DeviceLun field in order to prevent lun numbers greater than 7 from being inserted into the CDB. Version 2.01 8/24/98 * RISC 1.14.13 ITE (Extended Lun) Unchanged. * Load driver if Subsystem Vendor Id is either 0000h or 1077h. Version 2.00c 8/19/98 * RISC 1.14.13 ITE (Extended Lun) Updated. * Compiled with extended lun support enabled. * Read maximum number of luns from NvRam. * Set DeviceLUN to zero in Device Info structure to force CDB lun field to be zeroed. Version 1.25 8/18/98 * RISC 1.14.13 IT Unchanged. * ErrorHandler() now retries the command when the Scsi status is Not Ready or Recovered Error rather than doing the sequence of commands Test Unit Ready, Inquiry, Start Unit. This prevents an infinite loop on a bad device from locking the server. * Parameterized SendCommandToIsp() for 32 or 64 bit data segment addressing. Version 1.25a 8/18/98 * RISC 1.14.13 IT Unchanged. * Clear the Risc interrrupt immediately after it is detected; this separates in time the clearing of the Risc Interrupt and the clearing of the Semaphore. * Fixed incorrect loop Id checking in public/private scan cases. * Added delay in loop that waits for mailbox register 0 to be cleared in the ResetIsp() routine. * Compile time switchable extended lun support (currently disabled). Version 1.24 8/14/98 * RISC 1.14.13 IT Unchanged. * Clear Risc interrupt after clearing semaphore or after reading response queue pointer. Version 1.23 BETA 7 (1.23g) 8/13/98 * RISC 1.14.13 IT Unchanged. * Changed elevator threshold to 2. * Changed max scatter/gather segment count to 52. Version 1.23 BETA 6 (1.23f) 8/12/98 * RISC 1.14.13 IT Unchanged. * ResetLoopThread() and RecoveryResetThread() run in blocking context so that mailbox commands can complete. * MailboxCommand() timeout delay was ten times too large. * MailboxCommand() calls NPA_Delay_Thread() to allow thread switching (to allow interrupt servicing). Version 1.23 BETA 5 (1.23e) 8/10/98 * RISC 1.14.13 IT Unchanged. * Driver loads only for correct Subsystem Vendor Id. Version 1.23 ** BETA 4 ** 8/6/98 * RISC 1.14.13 IT Unchanged. * Fixed abend due to process switch during ISR. Version 1.23 ** BETA 3 ** 8/5/98 * RISC 1.14.13 IT Unchanged. * Device scan spawns device probe with non-blocking context (non-preemptive). Version 1.23 ** BETA 2 ** 8/4/98 * RISC 1.14.13 IT Updated. * HAM_Timeout() spawns non-blocking (non-prempable) threads to check for timed out commands on each adapter. Version 1.22 8/4/98 * No driver exists for this version. Version 1.21 7/20/98 * RISC 1.14.09 IT Unchanged. * Start pending queued commands only from HAM_Execute_HACB(), HAM_ISR1() and HAM_ISR0(). * MailboxCommand() will not retry if mailbox command completes with status other than 4000. * Fixed driver hot replace. * When commands time out, do LIP reset only once. * Check pending queue in HAM_Timeout() only if no interrupts occurred for at least 5 seconds. Version 1.20 7/17/98 * RISC 1.14.09 IT Unchanged. * Clear semaphore before posting completion status back to NWPA. * Made single indexes for request and response queues, eliminating the need to maintain parallel pointers. * SendCommandToIsp() now calculates the number of continuation entries required and checks the request queue for that many free entries before placing that command on the request queue. * HAM_Execute_HACB() now directly queues commands in the pending queue to speed up the queuing of multiple commands while the Isp is busy. Version 1.19 7/15/98 * RISC 1.14.09 IT Updated. * Removed Risc Interrupt debounce in both ISRs. * Removed Semaphore debounce in both ISRs. * In both ISRs, now clear Risc Interrupt early and clear the semaphore late (both of these are now done in one place only). * Function MailboxCommand() now waits for a mailbox command completion interrupt (only the ISR clears the Risc Interrupt and the Semaphore). * Freeze/Unfreeze device queue is now a function of the driver and not the RISC (sets/clears/tests a flag in software). * Function HAM_Execute_HACB() does not need to disable interrupts since its context is Non-Blocking (ie: NWPA disables interrupts). * Added statistics counting for debugging. Version 1.18 7/9/98 * RISC 1.14.05 IT Unchanged. * Added debug code to detect lost interrupt in ISR functions. * Debounced Mailbox 5 in functions ISR_Mailbox() and MailboxCommand(). * Debounced Risc Interrupt and Semaphore bits, and Mailbox 0 resgister in ISR functions. Version 1.17 7/7/98 * RISC 1.14.05 IT Unchanged. * Deleted extra semaphore clearing code in both ISRs. * Corrected null adapter checking in both ISRs. Version 1.16 7/2/98 * RISC 1.14.05 IT Unchanged. * In ErrorHandler(), corrected the following: + Mask sense key before testing its value. + Insert parenthesis when masking and testing. * In both ISR functions: + Clear risc interrupt after clearing semaphore (fast completion), and after reading response (response queue completion). + Fast completion and response queue completion are mutually exclusive. Version 1.15 7/1/98 * RISC 1.14.05 IT Updated. * Correct adapter loop id. * Null devicehandle is valid. * Use lessthan to test number of adapters. * Device scan starts from previous device. * Debounce mailbox registers 4 and 5. * Check response queue out pointer range. Version 1.11 4/13/98 * RISC code version 1.12.06 * Modified SetDeviceInfoData routine to garantee device handle uniqueness Version 1.10 4/6/98 * RISC code version 1.12.06 * BR894 - Fix problem of ABEND when no drives connected to adapter Version 1.09 3/17/98 * RISC code version 1.12.06 * Update copyright date to 1998 Version 1.08 2/25/98 * RISC code version 1.12 * Add support for new mailbox commands Version 1.07 2/19/98 * RISC code version 1.10 * Add Driver Hot Replace feature * Optimize ISR and start routines * Make separate ISR's for old and new versions of NWPA.NLM * Tested with DISKKIT 2.9 test suite * Tested on Netware 5.0 Version 1.06 10/2/97 * RISC code version 1.04 * Modify SendCommandToIsp so request queue ptr is only * read when needed. Modify HAM_ISR so mailbox * fast posting commands exit immediately and only * interrupt is serviced per ISR entry. Version 1.05 8/13/97 * RISC code version 1.00 * Release to DVT Version 1.04 6/12/97 * RISC code version 0.16 * Added code to check for invalid handles in * IOSB's. Update NVRAM parameters. Remove active queue * and support routines (don't need it because * active command array can be used for timer, * etc). Add fixes for Novell powerfail testing. * Pass Novell DISKKIT 2.7b certification tests. Version 1.03 5/16/97 * RISC code version 0.09 * Disabled adapter interrupts in ISR when * queueing or dequeueing HACB's. Version 1.02 4/25/97 * RISC code version 0.07 * Added check for NWPA version 2.32c and adjust * interrupt handling so any NWPA version will * work. (Need 2.32c or higher for spurious * interrupt fix). Added memory mapped I/O access. * Change HAM module ID to 591 hex assigned by Novell. Version 1.01 03/20/97 * RISC code version 0.05 * Fixed some initializtion errors, etc. * Add HAM_Instance_Unload for PCI Hot swap. * Fix Scatter/Gather bug. Version 1.00 03/04/97 * RISC code version 0.04 * Initial version for NetWare 4.11 based on * QL1000.C