blob: 290cdaf84f8fc0661186e82edf063f1fb1997409 [file] [log] [blame]
/*
* QLogic ISP2200 and ISP2300 Linux Driver Revision List File.
*
********************************************************************
*
* Revision History
*
* Rev 8.00.00b8 December 5, 2003 AV
* - Instruct mid-layer to perform initial scan.
*
* Rev 8.00.00b7 December 5, 2003 AV
* - Resync with Linux Kernel 2.6.0-test11.
* - Add basic NVRAM parser (extras/qla_nvr).
*
* Rev 8.00.00b7-pre11 December 3, 2003 AV
* - Sanitize the scsi_qla_host structure:
* - Purge unused elements.
* - Reorganize high-priority members (cache coherency).
* - Add support for NVRAM access via a sysfs binary attribute:
* - Consolidate semaphore locking access.
* - Fix more PCI posting issues.
* - Add extras directory for dump/NVRAM tools.
* - Remove unused qla_vendor.c file.
*
* Rev 8.00.00b7-pre11 November 26, 2003 DG/AV
* - Merge several patches from Christoph Hellwig [hch@lst.de]:
* - in Linux 2.6 both pci and the scsi layer use the generic
* dma direction bits, use them directly instead of the scsi
* and pci variants and the (noop) conversion routines.
* - Fix _IOXX_BAD() usage for external IOCTL interface.
* - Use atomic construct for HA loop_state member.
* - Add generic model description text for HBA types.
*
* Rev 8.00.00b7-pre5 November 17, 2003 AV
* - Merge several patches from Christoph Hellwig [hch@lst.de]:
* - patch to split the driver into a common qla2xxx.ko and a
* qla2?00.ko for each HBA type - the latter modules are
* only very small wrappers, mostly for the firmware
* images, all the meat is in the common qla2xxx.ko.
* - make the failover code optional.
* - kill useless lock_kernel in dpc thread startup.
* - no need for modversions hacks in 2.6 (or 2.4).
* - kill qla2x00_register_with_Linux.
* - simplify EH code, cmd or it's hostdata can't be NULL, no
* need to search whether the host it's ours, the midlayer
* makes sure it won't call into a driver for some else
* host.
* - Merge several patches from Jes Sorensen
* [jes@wildopensource.com]:
* - Call qla2x00_config_dma_addressing() before performing
* any consistent allocations. This is required since the
* dma mask settings will affect the memory
* pci_alloc_consistent() will return.
* - Call pci_set_consistent_dma_mask() to allow for 64 bit
* consistent allocations, required on some platforms such
* as the SN2.
* - Wait 20 usecs (not sure how long is really necessary,
* but this seems safe) after setting CSR_ISP_SOFT_RESET in
* the ctrl_status register as the card doesn't respond to
* PCI reads while in reset state. This causes a machine
* check on some architectures.
* - Flush PCI writes before calling udelay() to ensure the
* write is not sitting idle in-flight for a while before
* hitting the hardware.
* - Include linux/vmalloc.h in qla_os.c since it uses
* vmalloc().
* - Use auto-negotiate link speed when using default
* parameters rather than NVRAM settings. Disable NVRAM
* reading on SN2 since it's not possible to execute the
* HBA's BIOS on an SN2. I suggest doing something similar
* for all architectures that do not provide x86 BIOS
* emulation.
* - Clean-up slab-cache allocations:
* - locking.
* - mempool allocations in case of low-memory situations.
* - Fallback to GA_NXT scan if GID_PT call returns more than
* MAX_FIBRE_DEVICES.
* - Preserve iterating port ID across GA_NXT calls in
* qla2x00_find_all_fabric_devs().
* - Pre-calculate ASCII firmware dump length as to not incur the
* cost-to-calculate at each invocation of a read().
*
* Rev 8.00.00b6 November 4, 2003 AV
* - Add new 2300 TPX firmware (3.02.18).
*
* Rev 8.00.00b6-pre25 October 20, 2003 RA/AV
* - Resync with Linux Kernel 2.6.0-test9.
* - Rework firmware dump process:
* - Use binary attribute within sysfs tree.
* - Add user-space tool (gdump.sh) to retrieve formatted
* buffer.
* - Add ISP2100 support.
* - Use a slab cache for SRB allocations to reduce memory
* pressure.
* - Initial conversion of driver logging methods to a new
* qla_printk() function which uses dev_printk (Daniel
* Stekloff, IBM).
* - Further reduce stack usage in qla2x00_configure_local_loop()
* and qla2x00_find_all_fabric_devs().
* - Separate port state used for routing of I/O's from port
* mgmt-login retry etc.
*
* Rev 8.00.00b6-pre19 October 13, 2003 AV
* - Resync with Linux Kernel 2.6.0-test7-bk5.
* - Add intelligent RSCN event handling:
* - reduce scan time during 'port' RSCN events by only
* querying specified port ids.
* - Available on ISP23xx cards only.
* - Increase maximum number of recognizable targets from 256
* to 512.
* - Backend changes were previously added to support TPX
* (2K logins) firmware. Mid-layer can now scan for targets
* (H, B, T, L) where 512 < T >= 0.
* - Remove IP support from driver.
* - Switch firmware types from IP->TP for ISP22xx and
* IPX->TPX for ISP23xx cards.
* - Remove files qla_ip.[ch].
* - Remove type designations from firmware filenames.
*
* Rev 8.00.00b6-pre11 September 15, 2003 DG/AV
* - Resync with 6.06.00.
* - Resync with Linux Kernel 2.6.0-test5-bk3.
* - Add new 2300 IPX firmware (3.02.15).
*
* Rev 8.00.00b5 July 31, 2003 AV
* - Always create an fc_lun_t entry for lun 0 - as the mid-
* layer requires access to this lun for discovery to occur.
* - General sanitizing:
* - Add generic firmware option definitions.
* - Generalize retrieval/update of firmware options.
* - Fix compile errors which occur with extended debug.
* - Handle failure cases for scsi_add_host() and
* down_interruptible().
* - Host template updates:
* - Use standard bios_param callback function.
* - Disable clustering.
* - Remove unchecked_is_dma entry.
*
* Rev 8.00.00b5-pre5 July 29, 2003 DG/AV
* - Resync with 6.06.00b13.
* - Resync with Linux Kernel 2.6.0-test2.
* - Pass the complete loop_id, not the masked (0xff) value
* while issuing mailbox commands (qla_mbx.c/qla_fo.c/
* qla_iocb.c/qla_init.c).
* - Properly handle zero-length return status for an RLC CDB.
* - Create an fclun_t structure for 'disconnected' luns,
* peripheral-qualifier of 001b.
* - Remove unused LIP-sequence register access during AE 8010.
* - Generalize qla2x00_mark_device_lost() to handle forced
* login request -- modify all direct/indirect invocations
* with proper flag.
* - Save RSCN notification (AE 8015h) data in a proper and
* consistent format (domain, area, al_pa).
* - General sanitizing:
* - scsi_qla_host structure member reordering for cache-line
* coherency.
* - Remove unused SCSI opcodes, endian-swap definitions.
* - Remove CMD_* pre-processor defines.
* - Remove unused SCSIFCHOTSWAP/GAMAP/MULTIHOST codes.
* - Backout patch which added a per-scsi_qla_host scsi host
* spinlock, since mid-layer already defines one.
* - Add new 2300 IPX firmware (3.02.15).
*
* Rev 8.00.00b4 July 14, 2003 RA/DG/AV
* - Resync with 6.06.00b12.
* - Resync with Linux Kernel 2.6.0-test1.
* - Remove IOCB throttling code -- originally #if'd.
* - Remove apidev_*() routines since proc_mknod() has been
* removed -- need alternate IOCTL interface.
* - Merge several performance/fix patches from Arjan van de
* Ven:
* - Undefined operation >> 32.
* - No need to acquire mid-layer lock during command
* callback.
* - Use a per-HBA mid-layer lock.
* - Use a non-locked cycle for setting the count of the
* newly allocated sp (qla2x00_get_new_sp()).
* - Modify semantic behavior of qla2x00_queuecommand():
* - Reduce cacheline bouncing by having I/Os submitted
* by the IRQ handler.
* - Remove extraneous calls to qla2x00_next() during I/O
* queuing.
* - Use list_splice_init() during qla2x00_done() handling
* of commands to reduce list_lock contention.
* - RIO mode support for ISP2200:
* - Implementation differs slightly from original patch.
* - Do not use bottom-half handler (tasklet/work queue)
* for qla2x00_done() processing.
*
* Rev 8.00.00b4-pre22 July 12, 2003 AV
* - Check for 'Process Response Queue' requests early during
* the Host Status check.
* - General sanitizing:
* - srb_t structure rewrite, removal of unused members.
* - Remove unused fcdev array, fabricid, and PORT_*
* definitions.
* - Remove unused config_reg_t PCI definitions.
* - Add new 2200 IP firmware (2.02.06).
* - Add new 2300 IPX firmware (3.02.14).
*
* Rev 8.00.00b4-pre19 June 30, 2003 AV
* - Resync with Linux Kernel 2.5.73-bk8.
* - Rework IOCB command queuing methods:
* - Upper-layer driver *MUST* properly set the direction
* bit of SCSI commands.
* - Generalize 32bit/64bit queuing path functions.
* - Remove costly page-boundary cross check when using
* 64bit address capable IOCBs.
*
* Rev 8.00.00b4-pre15 June 19, 2003 AV
* - Resync with 6.06.00b11.
* - Continue fcport list consolidation work:
* - Updated IOCTL implementations to use new fcports
* list.
* - Modified product ID check to not verify ISP chip
* revision -- ISP2312 v3 (qla2x00_chip_diag()).
* - Add new 2300 IPX firmware (3.02.13):
*
* Rev 8.00.00b4-pre13 June 19, 2003 AV
* - Fix build process for qla2100 driver -- no support
* for IP.
* - SCSI host template modifications:
* - Set sg_tablesize based on the derived DMA mask.
* - Increase max_sectors since only limit within RISC
* is transfer of (((2^32) - 1) >> 9) sectors.
*
* Rev 8.00.00b4-pre12 June 18, 2003 RA, DG, RL, AV
* - Resync with 6.06.00b10.
* - Resync with Linux Kernel 2.5.72.
* - Initial fcport list consolidation work:
* - fcports/fcinitiators/fcdev/fc_ip --> ha->fcports
* list.
*
* Rev 8.00.00b4-pre7 June 05, 2003 AV
* - Properly release PCI resouces in init-failure case.
* - Reconcile disparite function return code definitions.
*
* Rev 8.00.00b4-pre4 June 03, 2003 AV
* - Resync with Linux Kernel 2.5.70-bk8:
* - SHT proc_info() changes.
* - Restructure SNS Generic Services routines:
* - Add qla_gs.c file to driver distribution.
* - Configure PCI latency timer for ISP23xx.
*
* Rev 8.00.00b4-pre3 June 02, 2003 RA, DG, RL, AV
* - Resync with 6.06.00b5.
* - Rework (again) PCI I/O space configuration
* (Anton Blanchard):
* - Use pci_set_mwi() routine;
* - Remove uneeded qla2x00_set_cache_line() function.
* - Remove extraneous modification of PCI_COMMAND word.
*
* Rev 8.00.00b3 May 29, 2003 AV
* - Resync with Linux Kernel 2.5.70.
* - Move RISC paused check from ISR fast-path.
*
* Rev 8.00.00b3-pre8 May 26, 2003 AV
* - Add new 2300 IPX firmware (3.02.12):
* - Rework PCI I/O space configuration.
*
* Rev 8.00.00b3-pre6 May 22, 2003 RA, DG, RL, AV
* - Resync with 6.06.00b3.
*
* Rev 8.00.00b3-pre4 May 21 2003 AV
* - Add new 2300 IPX firmware (3.02.11):
* - Remove 2300 TPX firmware from distribution.
*
* Rev 8.00.00b3-pre3 May 21 2003 AV
* - Properly setup PCI configuation space during
* initialization:
* - Properly configure Memory-Mapped I/O during early
* configuration stage.
* - Rework IP functionality to support 2k logins.
* - Add new 2300 IPX firmware (3.02.11):
* - Remove 2300 TPX firmware from distribution.
*
* Rev 8.00.00b3-pre2 May ??, 2003 RA, DG, RL, AV
* - Resync with 6.06.00b1.
*
* Rev 8.00.00b3-pre1 May ??, 2003 RA, DG, RL, AV
* - Resync with 6.05.00.
*
* Rev 8.00.00b2 May 19, 2003 AV
* - Simplify dma_addr_t handling during command queuing given
* new block-layer defined restrictions:
* - Physical addresses not spanning 4GB boundaries.
* - Firmware versions: 2100 TP (1.19.24), 2200 IP (2.02.05),
* 2300 TPX (3.02.10).
*
* Rev 8.00.00b2-pre1 May 13, 2003 AV
* - Add support for new 'Hotplug initialization' model.
* - Simplify host template by removing unused callbacks.
* - Use scsicam facilities to determine geometry.
* - Fix compilation issues for non-ISP23xx builds:
* - Correct register references in qla_dbg.c.
* - Correct Makefile build process.
*
* Rev 8.00.00b1 May 05, 2003 AV
* - Resync with Linux Kernel 2.5.69.
* - Firmware versions: 2100 TP (1.19.24), 2200 TP (2.02.05),
* 2300 TPX (3.02.10).
*
* Rev 8.00.00b1-pre45 April ??, 2003 AV
* - Resync with Linux Kernel 2.5.68-bk11:
* - Fix improper return-code assignment during fabric
* discovery.
* - Remove additional extraneous #defines from
* qla_settings.h.
* - USE_PORTNAME -- FO will always use portname.
* - Default queue depth size set to 64.
*
* Rev 8.00.00b1-pre42 April ??, 2003 AV
* - Convert bottom-half tasklet to a work_queue.
* - Initial basic coding of dynamic queue depth handling
* during QUEUE FULL statuses.
* - Fix mailbox interface problem with
* qla2x00_get_retry_cnt().
*
* Rev 8.00.00b1-pre41 April ??, 2003 AV
* - Convert build defines qla2[1|2|3]00 macros to
* qla2[1|2|3]xx due to module name stringification clashes.
* - Add additional ISP2322 checks during board configuration.
*
* Rev 8.00.00b1-pre40 April ??, 2003 AV
* - Resync with Linux Kernel 2.5.68-bk8:
* - Updated IRQ handler interface.
* - Add ISP dump code (stub) in case of SYSTEM_ERROR on
* ISP2100.
* - Add new 2200 IP firmware (2.02.05).
*
* Rev 8.00.00b1-pre39 April ??, 2003 AV
* - Resync with Linux Kernel 2.5.68.
* - Add simple build.sh script to aid in external compilation.
* - Clean-break with Kernel 2.4 compatibility.
* - Rework DPC routine -- completion routines for signaling.
* - Re-add HBAAPI character device node for IOCTL support.
* - Remove residual QLA2X_PERFORMANCE defines.
* - Allocate SP pool via __get_free_pages() rather than
* individual kmalloc()'s.
* - Inform SCSI mid-layer of 16-byte CDB support
* (host->max_cmd_len):
* - Remove unecessary 'more_cdb' handling code from
* qla_iocb.c and qla_xioct.c.
* - Reduce duplicate code in fabric scanning logic (MS IOCB
* preparation).
* - Add ISP dump code in case of SYSTEM_ERROR.
* - Remove 2300 VIX firmware from distribution:
* - Add initial code for IPX support.
* - Add new 2300 TPX firmware (3.02.10).
*
* Rev 8.00.00b1-pre34 April ??, 2003 AV
* - Resync with Linux Kernel 2.5.67.
* - Use domain/area/al_pa fields when displaying PortID
* values -- addresses endianess issues.
* - Rework large case statement to check 'common' CDB commands
* early in qla2x00_get_cmd_direction().
*
* Rev 8.00.00b1-pre31 April ??, 2003 AV
* - Update makefile to support PPC64 build.
* - Retool NVRAM configuration routine and structures:
* - Consoldate ISP21xx/ISP22xx/ISP23xx configuration
* (struct nvram_t).
* - Remove big/little endian support structures in favor of
* simplified bit-operations within byte fields.
* - Fix long-standing 'static' buffer sharing problem in
* qla2x00_configure_fabric().
*
* Rev 8.00.00b1-pre30 April ??, 2003 AV
* - Complete implementation of GID_PT scan.
* - Use consistent MS IOCB invocation method to query SNS:
* - Add RNN_ID and RSNN_NN registrations in a fabric.
* - Remove unused Mailbox Command 6Eh (Send SNS) support
* structures.
* - Use 64bit safe IOCBs while issuing INQUIRY and RLC during
* topology scan.
* - Until reimplementation of fcdev_t/fcport list
* consolidation, valid loop_id ranges are still limited from
* 0x00 through 0xFF -- enforce this within the code.
*
* Rev 8.00.00b1-pre27 March ??, 2003 AV
* - Resync with 6.05.00b9.
* - Retool HBA PCI configuration -- qla2x00_pci_config().
* - Remove inconsistent use of delay routines (UDELAY/SYS*).
* - Continue to teardown/clean/add comments and debug
* routines.
* - Properly swap bytes of the device's nodename in
* qla2x00_configure_local_loop().
*
* Rev 8.00.00b1-pre25 March ??, 2003 AV
* - Resync with 6.05.00b8.
*
* Rev 8.00.00b1-pre23 March ??, 2003 AV
* - Remove (#define) IOCB usage throttling.
* - Abstract interrupt polling with qla2x00_poll().
* - Modify lun scanning logic:
* - If the device does not support the SCSI Report Luns
* command, the driver will now only scan from 0 to the
* max#-luns as defined in the NVRAM (BIOS), rather than
* blindly scanning from 0 to 255 -- which could result in
* an increase in startup time when running against slow
* (JBOD) devices.
* - Rework reset logic in qla2x00_reset_chip() (spec).
*
* Rev 8.00.00b1-pre22 March ??, 2003 AV
* - Resync with 6.05.00b7.
* - Cleanup (rewrite) ISR handler.
* - Rename kmem_zalloc --> qla2x00_kmem_zalloc():
* - This function will eventually be removed.
* - Add new 2300 VIX firmware (3.02.09):
* - Support for Tape, Fabric, 2K logins, IP, and VI.
*
* Rev 8.00.00b1-pre18 March ??, 2003 AV
* - Support 232x type ISPs.
* - Support single firmware for each ISP type:
* - Restructure brd_info/fw_info methods.
* - Streamline firmware load process.
* - Properly query firmware for version information.
* - Remove extraneous scsi_qla_host members:
* - device_id ==> pdev->device
* - Fix fc4 features (RFF_ID) registration.
* - Convert kmem_zalloc --> qla2x00_kmem_zalloc().
* - Remove unused/extraneous #defines (USE_PORTNAME).
*
* Rev 8.00.00b1-pre14 March ??, 2003 AV
* - Resync with 6.05.00b6.
* - Initial source-code restructuring effort.
* - Build procedure.
* - Source file layout -- intuitive component layout.
* - Remove unused #defines (*PERFORMANCE, WORD_FW_LOAD, etc).
* - Add support for 2K logins (TPX -- firmware).
* - Add module parameter ql2xsuspendcount.
* - Add new 2200 IP/TP firmware (2.02.04).
*
* Rev 8.00.00b1-pre9 March ??, 2003 RL/DG/RA/AV
* - Use kernel struct list_head for fcport and fclun lists.
* - Remove extraneous (L|M)S_64BITS() and QL21_64*() defines.
*
* Rev 8.00.00b1-pre8 February 28, 2003 RL/DG/RA/AV
* - Resync with 6.05.00b3.
*
* Rev 8.00.00b1-pre7 February 23, 2003 RL/DG/RA/AV
* - Add alternate fabric scanning logic (GID_PT/GNN_ID/GPN_ID).
* - Remove use of deprecated function check_region().
* - Add new 2300 IP/TP firmware (3.02.08).
*
* Rev 8.00.00b1-pre5 January 28, 2003 RL/DG/RA/AV
* - Resync with 6.05.00b3.
* - Consolidate device_reg structure definitions for ISP types.
* - Add support for new queue-depth selection.
* - Add new 2300 IP/TP firmware (3.02.07).
*
* Rev 8.00.00b1-pre1 January 17, 2003 AV
* - Initial branch from 6.04.00b8 driver.
* - Remove VMWARE specific code.
* - Add support for pci_driver interface.
*
********************************************************************/