Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/Documentation/scsi/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 87 kB image not shown  

Quelle  ChangeLog.lpfc   Sprache: unbekannt

 
Spracherkennung für: .lpfc vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

Known issues :
 * Please read the associated RELEASE-NOTES file !!!
 * This source release intended for upstream kernel releases only!

Changes from 20050323 to 20050413

 * Changed version number to 8.0.28
 * Fixed build warning for 2.6.12-rc2 kernels: mempool_alloc now
   requires a function which takes an unsigned int for gfp_flags.
 * Removed pci dma sync calls to coherent/consistent pci memory.
 * Merged patch from Christoph Hellwig <hch@lst.de>: split helpers
   for fabric and nport logins out of lpfc_cmpl_els_flogi.
 * Removed sysfs attributes that are used to dump the various
   discovery lists.
 * Fix for issue where not all luns are seen.  Search all lists
   other than unmap list in lpfc_find_target().  Otherwise INQUIRY
   to luns on nodes in NPR or other relevant states (PLOGI,
   PRLI...) are errored back and scan() terminates.
 * Removed FC_TRANSPORT_PATCHESxxx defines.  They're in 2.6.12-rc1.
 * Compare return value of lpfc_scsi_tgt_reset against SCSI
   midlayer codes SUCCESS/FAILED which that function returns rather
   than SLI return code.
 * Removed extraneous calls to lpfc_sli_next_iotag which should
   only be called from lpfc_sli_submit_iocb.  Also make
   lpfc_sli_next_iotag static.
 * Added PCI ID for LP10000-S.
 * Changes in lpfc_abort_handler(): Return SUCCESS if we did not
   find command in both TX and TX completion queues.  Return ERROR
   if we timed out waiting for command to complete after abort was
   issued.
 * Zero-out response sense length in lpfc_scsi_prep_cmnd to prevent
   interpretation of stale sense length when the command completes
   - was causing spurious 0710 messages.
 * Moved clearing of host_scribble inside host_lock in IO
   completion path.
 * Fixed a bunch of mixed tab/space indentation.
 * Allow hex format numbers in sysfs attribute setting.  Fix
   application hang when invalid numbers are used in sysfs
   settings.
 * Removed extra iotag allocation by lpfc_abort_handler.
 * Clear host_scribble in the scsi_cmnd structure when failing in
   queuecommand.
 * Changed logic at top of lpfc_abort_handler so that if the
   command's host_scibble field is NULL, return SUCCESS because the
   driver has already returned the command to the midlayer.

Changes from 20050308 to 20050323

 * Changed version number to 8.0.27
 * Changed a few lines from patch submitted by Christoph Hellwig
   (3/19). MAILBOX_WSIZE * (uint32_t) is replaced with an
   equivalent MAILBOX_CMDSIZE macro.
 * Merged patch from Christoph Hellwig (3/19): some misc patches
   against the latest drivers:
   - stop using volatile.  if you need special ordering use memory
     barriers but that doesn't seem to be the case here
   - switch lpfc_sli_pcimem_bcopy to take void * arguments.
   - remove typecast for constants - a U postfix marks them
     unsigned int in C
   - add a MAILBOX_CMD_SIZE macro, as most users of
     MAILBOX_CMD_WSIZE didn't really want the word count
   - kill struct lpfc_scsi_dma_buf and embedded the two members
     directly in struct lpfc_scsi_buf
   - don't call dma_sync function on allocations from
     pci_pool_alloc - it's only for streaming mappings (pci_map_*)
 * Merged patch from Christoph Hellwig (3/19) - nlp_failMask isn't
   ever used by the driver, just reported to userspace (and that in
   a multi-value file which is against the sysfs guidelines).
 * Change pci_module_init to pci_register_module() with appropriate
   ifdefs.
 * Added #include <linux/dma-mapping.h> as required by the DMA
   32bit and 64bit defines on some archs.
 * Merged patch from Christoph Hellwig (03/19) - fix initialization
   order - scsi_add_host must happen last from scsi POV. Also some
   minor style/comment fixups.
 * Fixed use of TRANSPORT_PATCHES_V2 by changing to
   FC_TRANSPORT_PATCHES_V2.

Changes from 20050223 to 20050308

 * Changed version number to 8.0.26
 * Revise TRANSPORT_PATCHES_V2 so that lpfc_target is removed and
   rport data is used instead. Removed device_queue_hash[].
 * Changed RW attributes of scan_down, max_luns and fcp_bind_method
   to R only.
 * Fixed RSCN handling during initial link initialization.
 * Fixed issue with receiving PLOGI handling when node is on NPR
   list and marked for ADISC.
 * Fixed RSCN timeout issues.
 * Reduced severity of "SCSI layer issued abort device" message to
   KERN_WARNING.
 * Feedback from Christoph Hellwig (on 2/5) - In the LPFC_EVT_SCAN
   case the caller already has the target ID handly, so pass that
   one in evt_arg1.
 * Fix compile warning/resultant panic in
   lpfc_register_remote_port().

Changes from 20050215 to 20050223

 * Changed version number to 8.0.25
 * Add appropriate comments to lpfc_sli.c.
 * Use DMA_64BIT_MASK and DMA_32BIT_MASK defines instead of
   0xffffffffffffffffULL & 0xffffffffULL respectively.  Use pci
   equivalents instead of dma_set_mask and also modify condition
   clause to actually exit on error condition.
 * Restart els timeout handler only if txcmplq_cnt. On submission,
   mod_timer the els_tmofunc.  This prevents the worker thread from
   waking up the els_tmo handler un-necessarily.  The thread was
   being woken up even when there were no pending els commands.
 * Added new typedefs for abort and reset functions.
 * Collapsed lpfc_sli_abort_iocb_xxx into a single function.
 * Collapsed lpfc_sli_sum_iocb_xxx into a single function.
 * Removed TXQ from all abort and reset handlers since it is never
   used.
 * Fixed Oops panic in 8.0.23 (reported on SourceForge).  The
   driver was not handling LPFC_IO_POLL cases correctly in
   fast_ring_event and was setting the tgt_reset timeout to 0 in
   lpfc_reset_bus_handler.  This 0 timeout would not allow the FW
   to timeout ABTS's on bad targets and allow the driver to have an
   iocb on two lists.  Also split the lpfc_sli_ringtxcmpl_get
   function into two routines to match the fast and slow completion
   semantics - ELS completions worked for the wrong reasons.  Also
   provided new log message number - had two 0326 entries.
 * Removed unused #define LPFC_SCSI_INITIAL_BPL_SIZE.
 * Removed unused struct lpfc_node_farp_pend definition.
 * Removed unused #define LPFC_SLIM2_PAGE_AREA.
 * Changed zeros used as pointers to NULL.
 * Removed unneeded braces around single line in lpfc_do_work.
 * Close humongous memory leak in lpfc_sli.c - driver was losing 13
   iocbq structures per LIP.
 * Removed last of GFP_ATOMIC allocations.
 * Locks are not taken outside of nportdisc, hbadisc, els and most
   of the init, sli, mbox and ct groups of functions
 * Fix comment for lpfc_sli_iocb_cmd_type to fit within 80 columns.
 * Replaced wait_event() with wait_event_interruptible().
   wait_event() puts the woker thread in an UNINTERRUPTIBLE state
   causing it to figure in load average calculations. Also add a
   BUG_ON to the ret code of wait_event_interruptible() since the
   premise is that the worker thread is signal-immune.

Changes from 20050208 to 20050215

 * Changed version number to 8.0.24
 * Fixed a memory leak of iocbq structure.  For ELS solicited iocbs
   sli layer now frees the response iocbs after processing it.
 * Closed large memory leak -- we were losing 13 iocbq structures
   per LIP.
 * Changing EIO and ENOMEM to -EIO and -ENOMEM respectively.
 * Cleanup of lpfc_sli_iocb_cmd_type array and typing of iocb type.
 * Implemented Christoph Hellwig's feedback from 02/05: Remove
   macros putLunHigh, putLunLow. Use lpfc_put_lun() inline instead.
 * Integrated Christoph Hellwig's feedback from 02/05: Instead of
   cpu_to_be32(), use swab16((uint16_t)lun). This is the same as
   "swab16() on LE" and "<<16 on BE".
 * Added updates for revised FC remote port patch (dev_loss_tmo
   moved to rport, hostdata renamed dd_data, add fc_remote_host()
   on shutdown).
 * Removed unnecessary function prototype.
 * Added code to prevent waking up worker thread after the exit of
   worker thread.  Fixes panic seen with insmod/rmmod testing with
   70 disks.
 * Integrated Christoph Hellwig's patch from 1/30: Make some
   variables/code static (namely lpfcAlpaArray and
   process_nodev_timeout()).
 * Integrated Christoph Hellwig's patch from 1/30: Use
   switch...case instead of if...else if...else if while decoding
   JDEC id.

Changes from 20050201 to 20050208

 * Changed version number to 8.0.23
 * Make lpfc_work_done, lpfc_get_scsi_buf,
   lpfc_mbx_process_link_up, lpfc_mbx_issue_link_down and
   lpfc_sli_chipset_init static.
 * Cleaned up references to list_head->next field in the driver.
 * Replaced lpfc_discq_post_event with lpfc_workq_post_event.
 * Implemented Christoph Hellwig's review from 2/5: Check for return
   values of kmalloc.
 * Integrated Christoph Hellwig's patch from 1/30: Protecting
   scan_tmo and friends in !FC_TRANSPORT_PATCHES_V2 &&
   !USE_SCAN_TARGET.
 * Integrated Christoph Hellwig's patch from 1/30: Some fixes in
   the evt handling area.
 * Integrated Christoph Hellwig's patch from 1/30: Remove usage of
   intr_inited variable. The interrupt initialization from OS side
   now happens in lpfc_probe_one().
 * Integrated Christoph Hellwig's patch from 1/30: remove shim
   lpfc_alloc_transport_attr - remove shim lpfc_alloc_shost_attrs -
   remove shim lpfc_scsi_host_init - allocate phba mem in scsi's
   hostdata readjust code so that they are no use after free's
   (don't use after scsi_host_put) - make lpfc_alloc_sysfs_attr
   return errors
 * Fixed panic in lpfc_probe_one(). Do not delete in a list
   iterator that is not safe.
 * Clean up fast lookup array of the fcp_ring when aborting iocbs.
 * Following timeout handlers moved to the lpfc worker thread:
   lpfc_disc_timeout, lpfc_els_timeout, lpfc_mbox, lpfc_fdmi_tmo,
   lpfc_nodev_timeout, lpfc_els_retry_delay.
 * Removed unused NLP_NS_NODE #define.
 * Integrated Christoph Hellwig's patch from 1/30: remove unused
   lpfc_hba_list; remove unused lpfc_rdrev_wd30; remove
   lpfc_get_brd_no and use Linux provided IDR.
 * Changed board reset procedure so that lpfc_sli_send_reset()
   writes the INITFF bit and leaves lpfc_sli_brdreset() to clear
   the bit.
 * Removed outfcpio sysfs device attribute.
 * VPD changes: 1) Modify driver to use the model name and
   description from the VPD data if it exists 2) Rework use of DUMP
   mailbox command to support HBAs with 256 bytes of SLIM.
 * Fixed compile error for implicit definition of struct
   scsi_target

Changes from 20050124 to 20050201

 * Changed version number to 8.0.22
 * Moved discovery timeout handler to worker thread. There are
   function calls in this function which are not safe to call from
   HW interrupt context.
 * Removed free_irq from the error path of HBA initialization.
   This will fix the free of uninitialised IRQ when config_port
   fails.
 * Make sure function which processes unsolicited IOCBs on ELS ring
   still is called with the lock held.
 * Clear LA bit from work_ha when we are not supposed to handle LA.
 * Fix double locking bug in the error handling part of
   lpfc_mbx_cmpl_read_la.
 * Implemented fast IOCB processing for FCP ring.
 * Since mboxes are now unconditionally allocated outside of the
   lock, free them in cases where they are not used.
 * Moved out a couple of GFP_ATOMICs in lpfc_disc_timeout, to
   before locks so that they can GFP_KERNEL instead. Also cleaned
   up code.
 * Collapsed interrupt handling code into one function.
 * Removed event posting and handling of solicited and unsolicited
   iocbs.
 * Remove ELS ring handling leftovers from the lpfc_sli_inter().
 * ELS ring (any slow ring) moved from the lpfc_sli_inter() into a
   worker thread.  Link Attention, Mbox Attention, and Error
   Attention, as well as slow rings' attention is passed to the
   worker thread via worker thread copy of Host Attention
   register. Corresponding events are removed from the event queue
   handling.
 * Add entries to hba structure to delegate some functionality from
   the lpfc_sli_inter() to a worker thread.
 * Reduced used of GFP_ATOMIC for memory allocations.
 * Moved locks deeper in order to change GFP_ATOMIC to GFP_KERNEL.
 * IOCB initialization fix for Raw IO.
 * Removed qcmdcnt, iodonecnt, errcnt from lpfc_target and from
   driver.
 * Added call to lpfc_els_abort in lpfc_free_node.  Modified
   lpfc_els_abort to reset txq and txcmplq iterator after a
   iocb_cmpl call.
 * Fixed a use after free issue in lpfc_init.c.
 * Defined default mailbox completion routine and removed code in
   the sli layer which checks the mbox_cmpl == 0 to free mail box
   resources.
 * In lpfc_workq_post_event, clean up comment formatting and remove
   unneeded cast of kmalloc's return.
 * Removed loop which calls fc_remote_port_unblock and
   fc_remote_port_delete for every target as this same effect is
   accomplished by the scsi_remove_host call.
 * Minor cleanup of header files.  Stop header files including
   other header files.  Removed sentinels which hide multiple
   inclusions.  Removed unneeded #include directives.
 * Fixed memory leaks in mailbox error paths.
 * Moved lock from around of lpfc_work_done to lpfc_work_done
   itself.
 * Removed typedef for LPFC_WORK_EVT_t and left just struct
   lpfc_work_evt to comply with linux_scsi review coding style.
 * Fixed some trailing whitespaces, spaces used for indentation and
   ill-formatting multiline comments.
 * Bug fix for Raw IO errors.  Reuse of IOCBs now mandates setting
   of ulpPU and fcpi_parm to avoid incorrect read check of Write IO
   and incorrect read length.

Changes from 20050110 to 20050124

 * Changed version number to 8.0.21
 * Removed unpleasant casting in the definition and use of
   lpfc_disc_action function pointer array.
 * Makefile cleanup.  Use ?= operator for setting default
   KERNELVERSION and BASEINCLUDE values.  Use $(PWD) consistently.
 * Removed call to lpfc_sli_intr from lpfc_config_port_post.  All
   Linux systems will service hardware interrupts while bringing up
   the driver.
 * Christoph Hellwig change request: Reorg of contents of
   lpfc_hbadisc.c, lpfc_scsi.h, lpfc_init.c, lpfc_sli.c,
   lpfc_attr.c, lpfc_scsi.c.
 * Renamed discovery thread to lpfc_worker thread.  Moved handling
   of error attention and link attention and mbox event handler to
   lpfc_worker thread.
 * Removed .proc_info and .proc_name from the driver template and
   associated code.
 * Removed check of FC_UNLOADING flag in lpfc_queuecommand to
   determine what result to return.
 * Move modification of FC_UNLOADING flag under host_lock.
 * Fix IOERR_RCV_BUFFER_WAITING handling for CT and ELS subsystem.
 * Workaround firmware bug for IOERR_RCV_BUFFER_WAITING on ELS
   ring.
 * Fixed a couple lpfc_post_buffer problems in lpfc_init.c.
 * Add missing spaces to the parameter descriptions for
   lpfc_cr_delay, lpfc_cr_count and lpfc_discovery_threads.
 * Lock before calling lpfc_sli_hba_down().
 * Fix leak of "host" in the error path in the remove_one() path.
 * Fix comment for lpfc_cr_count.  It defaults to 1.
 * Fix issue where we are calling lpfc_disc_done() recursively from
   lpfc_linkdown(), but list_for_each_entry_safe() is not safe for
   such use.
 * Bump lpfc_discovery_threads (count of outstading ELS commands in
   discovery) to 32
 * If the SCSI midlayer tries to recover from an error on a lun
   while the corresponding target is in the NPR state, lpfc driver
   will reject all the resets. This will cause the target to be
   moved to offline state and block all the I/Os. The fix for this
   is to delay the lun reset to a target which is not in MAPPED
   state until the target is rediscovered or nodev timeout is
   fired.

Changes from 20041229 to 20050110

 * Changed version number to 8.0.20
 * rport fix: use new fc_remote_port_rolechg() function instead of
   direct structure change
 * rport fix: last null pointer check
 * Phase II of GFP_ATOMIC effort.  Replaced iocb_mem_pool and
   scsibuf_mem_pool with kmalloc and linked list.  Inserted list
   operations for mempool_alloc calls.  General code cleanup.  All
   abort and reset routines converted.  Handle_ring_event
   converted.
 * If the mbox_cmpl == lpfc_sli_wake_mbox_wait in
   lpfc_sli_handle_mb_event, pmb->context1 points to a waitq. Do
   not free the structure.
 * rport fixes: fix for rmmod crash
 * rport fixes: when receiving PRLI's, set node/rport role values
 * rport fixes: fix for unload and for fabric port deletes
 * VPD info bug fix.
 * lpfc_linkdown() should be able to process all outstanding events
   by calling lpfc_disc_done() even if it is called from
   lpfc_disc_done() Moving all events from phba->dpc_disc to local
   local_dpc_disc prevents those events from being processed.
   Removing that queue. From now on we should not see "Illegal
   State Transition" messages.
 * Release host lock and enable interrupts when calling
   del_timer_sync()
 * All related to rports: Clean up issues with rport deletion
   Convert to using block/unblock on list remove (was del/add)
   Moved rport delete to freenode - so rport tracks node.
 * rport fixes: for fport, get maxframe and class support
   information
 * Added use of wait_event to work with kthread interface.
 * Ensure that scsi_transport_fc.h is always pulled in by
   lpfc_scsiport.c
 * In remote port changes: no longer nulling target->pnode when
   removing from mapped list. Pnode get nulled when the node is
   freed (after nodev tmo). This bug was causing i/o received in
   the small window while the device was blocked to be errored w/
   did_no_connect. With the fix, it returns host_busy
   (per the pre-remote port changes).
 * Merge in support for fc transport remote port use. This removes
   any consistent bindings within the driver. All scanning is now
   on a per-target basis driven by the discovery engine.

Changes from 20041220 to 20041229

 * Changed version number to 8.0.19
 * Fixed bug for handling RSCN type 3.  Terminate RSCN mode
   properly after ADISC handling completes.
 * Add list_remove_head macro.  Macro cleans up memory allocation
   list handling.  Also clean up lpfc_reset_bus_handler - routine
   does not need to allocate its own scsi_cmnd and scsi_device
   structures.
 * Fixed potential discovery bug, nlp list corrutpion fix potential
   memory leak
 * Part 1 of the memory allocation rework request by linux-scsi.
   This effort fixes the number of bdes per scsi_buf to 64, makes
   the scatter-gather count a module parameter, builds a linked
   list of scsi_bufs, and removes all dependencies on lpfc_mem.h.
 * Reverted lpfc_do_dpc, probe_one, remove_one to original
   implementation.  Too many problems (driver not completing
   initial discovery, and IO not starting to disks).  Backs out
   kthread patch.
 * Fix race condition in lpfc_do_dpc.  If wake_up interrupt occurs
   while lpfc_do_dpc is running disc_done and the dpc list is
   empty, the latest insertion is missed and the schedule_timeout
   does not wakeup.  The sleep interval is MAX_SCHEDULE_TIMEOUT
   defined as ~0UL >> 1, a very large number.  Hacked it to 5*HZ
   for now.
 * Fixed bug introduced when discovery thread implementation was
   moved to kthread. kthread_stop() is not able to wake up thread
   waiting on a semaphore and "modprobe -r lpfc" is not always
   (most of the times) able to complete. Fix is in not using
   semaphore for the interruptible sleep.
 * Small Makefile cleanup - Remove remnants of 2.4 vs. 2.6
   determination.

Changes from 20041213 to 20041220

 * Changed version number to 8.0.18
 * Janitorial cleanup after removal of sliinit and ringinit[] ring
   statistic is owned by the ring and SLI stats are in sli
   structure.
 * Integrated patch from Christoph Hellwig <hch@lst.de> Kill
   compile warnings on 64 bit platforms: %variables for %llx format
   specifiers must be cast to long long because %(u)int64_t can
   just be long on 64bit platforms.
 * Integrated patch from Christoph Hellwig <hch@lst.de> Removes
   dead code.
 * Integrated patch from Christoph Hellwig <hch@lst.de>: use
   kthread interface.
 * Print LPFC_MODULE_DESC banner in module init routine.
 * Removed sliinit structure and ringinit[] array.
 * Changed log message number from 324 to 326 in lpfc_sli.c.
 * Wait longer for commands to complete in lpfc_reset_bus_handler
   and lpfc_reset_bus_handler.  Also use schedule_timeout() instead
   of msleep() and add error message in lpfc_abort_handler()
 * When setting lpfc_nodev_tmo, from dev_loss set routine, make 1
   sec minimum value.
 * Functions which assume lock being held were called without lock
   and kernel complained about unlocking lock which is not locked.
 * Added code in linkdown to unreg if we know login session will be
   terminated.
 * Removed automap config parameter and fixed up use_adisc logic to
   include FCP2 devices.

Changes from 20041207 to 20041213

 * Changed version number to 8.0.17
 * Fix sparse warnings by adding __iomem markers to lpfc_compat.h.
 * Fix some sparse warnings -- 0 used as NULL pointer.
 * Make sure there's a space between every if and its (.
 * Fix some overly long lines and make sure hard tabs are used for
   indentation.
 * Remove all trailing whitespace.
 * Integrate Christoph Hellwig's patch for 8.0.14: if
   pci_module_init fails we need to release the transport template.
    (also don't print the driver name at startup, linux drivers can
   be loaded without hardware present, and noise in the log for
   that case is considered unpolite, better print messages only for
   hardware actually found).
 * Integrate Christoph Hellwig's patch for 8.0.14: Add missing
   __iomem annotations, remove broken casts, mark functions static.
   Only major changes is changing of some offsets from word-based to
   byte-based so we can simply do void pointer arithmetic (gcc
   extension) instead of casting to uint32_t.
 * Integrate Christoph Hellwig's patch for 8.0.14: flag is always
   LPFC_SLI_ABORT_IMED, aka 0 - remove dead code.
 * Modified preprocessor #ifdef, #if, #ifndef to reflect upstream
   kernel submission.  Clean build with make clean;make and make
   clean;make ADVANCED=1 on SMP x86, 2.6.10-rc2 on RHEL 4 Beta
   1. IO with a few lips and a long cable pull behaved accordingly.
 * Implement full VPD support.
 * Abort handler will try to wait for abort completion before
   returning.  Fixes some panics in iocb completion code path.

Changes from 20041130 to 20041207
 
 * Changed version number to 8.0.16
 * Hung dt session fix.  When the midlayer calls to abort a scsi
   command, make sure the driver does not complete post-abort
   handler.  Just NULL the iocb_cmpl callback handler and let SLI
   take over.
 * Add Read check that uses SLI option to validate all READ data
   actually received.


Changes from 20041123 to 20041130

 * Changed version number to 8.0.15
 * Ifdef'd unused "binary" attributes by DFC_DEBUG for clean
   compiles
 * Stop DID_ERROR from showing up along with QUEUE_FULL set by the
   Clarion array (SCSI error ret. val.  0x70028) There is no need
   for driver to hard fail command which was failed by the target
   device.
 * Fix for Scsi device scan bug reported on SourceForge.  Driver
   was returning a DID_ERROR in lpfc_handle_fcp_error causing
   midlayer to mark report luns as failing even though it
   succeeded.
 * Don't ignore SCSI status on underrun conditions for inquiries,
   test unit ready's, etc.  This was causing us to lose
   reservation conflicts, etc

Changes from 20041018 to 20041123
 
 * Changed version number to 8.0.14
 * Added new function "iterator" lpfc_sli_next_iocb_slot() which
   returns pointer to iocb entry at cmdidx if queue is not full.
   It also updates next_cmdidx, and local_getidx (but not cmdidx)
 * lpfc_sli_submit_iocb() copies next_cmdidx into cmdidx. Now it is
   the only place were we are updating cmdidx.
 * lpfc_sli_update_ring() is split in to two --
   lpfc_sli_update_ring() and lpfc_sli_update_full_ring().
 * lpfc_sli_update_ring() don't to read back correct value of
   cmdidx.
 * Simplified lpfc_sli_resume_iocb() and its use.
 * New static function lpfc_sli_next_iocb(phba, pring, &piocb) to
   iterate through commands in the TX queue and new command (at the
   end).
 * Reduced max_lun to 256 (due to issues reported to some arrays).
   Fixed comment, and macro values so def=256, min=1, max=32768.
 * Fix an obvious typo/bug: kfree was used to free lpfc_scsi_buf
   instead of mempool_free in lpfc_scsiport.c.
 * Suppress nodev_tmo message for FABRIC nodes.
 * Fixed some usage of plain integer as NULL pointer.
 * Bug fix for FLOGI cmpl, lpfc_els_chk_latt error path code
   cleanup.
 * Fixup lpfc_els_chk_latt() to have Fabric NPorts go thru
   discovery state machine as well.
 * Fixes to lpfc_els_chk_latt().
 * Use DID not SCSI target id as a port_id and add some missing
   locks in lpfc_fcp.c.
 * Changed eh_abort_handler to return FAILED if command is not
   found in driver.
 * Fix crash: paging request at virtual address 0000000000100108 -
   a result of removing from the txcmpl list item which was already
   removed (100100 is a LIST_POISON1 value from the next pointer
   and 8 is an offset of the "prev") Driver runs out of iotags and
   does not handle that case well. The root of the problem is in the
   initialization code in lpfc_sli.c
 * Changes to work with proposed linux kernel patch to support
   hotplug.
 * Zero out seg_cnt in prep_io failure path to prevent double sg
   unmap calls.
 * Fix setting of upper 32 bits for Host Group Ring Pointers if in
   SLIM. Old code was inappropriately masking off low order bits.
 * Use scsi_[activate|deactivate]_tcq calls provided in scsi_tcq.h.
 * Integrated patch from Christoph Hellwig (hch@lst.de): don't call
   pci_dma_sync_* on coherent memory. pci_dma_sync_* is need and
   must be used only with streaming dma mappings pci_map_*, not
   coherent mappings.  Note: There are more consistent mappings
   that are using pci_dma_sync calls. Probably these should be
   removed as well.
 * Modified lpfc_free_scsi_buf to accommodate all three scsi_buf
   free types to alleviate miscellaneous panics with cable pull
   testing.
 * Set hotplug to default 0 and lpfc_target_remove to not remove
   devices unless hotplug is enabled.
 * Fixed discovery bug: plogi cmpl uses ndlp after its freed.
 * Fixed discovery bug: rnid acc cmpl, can potentially use ndlp
   after its freed.
 * Modularize code path in lpfc_target_remove().
 * Changes to support SCSI hotplug (ifdef'ed out because they need
   kernel support USE_SCAN_TARGET requires kernel support to export
   the interface to scsi_scan_target and to move the SCAN_WILD_CARD
   define to a general scsi header file.  USE_RESCAN_HOST requires
   kernel support to export an interface to scan_scsi_host() with
   the rescan flag turned on).
 * Removed redundant variable declaration of lpfc_linkdown_tmo.
 * Fix for large port count remove test.
 * Added check to see if BAR1 register is valid before using BAR1
   register for programming config_port mail box command.
 * Added lpfc_scsi_hotplug to enable/disable driver support of SCSI
   hotplug.
 * Changed lpfc_disc_neverdev() to lpfc_disc_illegal() and changed
   lpfc_disc_nodev() to lpfc_disc_noop().  Adjusted appropriate
   events to use these routines.
 * Add support for SCSI device hotplug.
 * Take dummy lpfc_target's into account for lpfc_slave_destroy().
 * Bug fix to store WWPN / WWNN in NameServer / FDMI lpfc_nodelist
   entries.
 * Added slavecnt in lpfc_target for diagnostic purposes.
 * Added lpfc_hba load/unload flags to take care of special cases
   for add/remove device.
 * Have target add/remove delay before scanning.
 * Have rmmod path cleanup blocked devices before scsi_remove_host.
 * Added a #define for msleep for 2.6.5 kernels.
 * In reset bus handler if memory allocation fails, return FAILED
   and not SUCCESS.
 * Have lpfc eh handlers, bus_reset and lun_reset, wait for all
   associated I/Os to complete before returning.
 * Fix memset byte count in lpfc_hba_init so that
   LP1050 would initialize correctly.
 * Background nodev_timeout processing to DPC. This enables us to
   unblock (stop dev_loss_tmo) when appropriate.
 * Fix array discovery with multiple luns.  The max_luns was 0 at
   the time the host structure was initialized.  lpfc_cfg_params
   then set the max_luns to the correct value afterwards.
 * Remove unused define LPFC_MAX_LUN and set the default value of
   lpfc_max_lun parameter to 512.
 * Reduced stack usage of lpfc_hba_init.
 * Cleaned up the following warning generated by
   scripts/checkincludes.pl lpfc_fcp.c: scsi/scsi_cmnd.h is
   included more than once.
 * Replaced "set_current_state(TASK_UNINTERRUPTIBLE);
   schedule_timeout(timeout)" with "msleep(timeout)".
 * Fixnode was losing starget when rediscovered. We saw messages
   like: lpfc 0000:04:02.0: 0:0263 Cannot block scsi target as a
   result.  Moved starget field into struct lpfc_target which is
   referenced from the node.
 * Add additional SLI layer logging in lpfc_sli.c.
 * Ignore more unexpected completions in lpfc_nportdisc.c.
 * Can not call lpfc_target_unblock from the soft interrupt
   context.  It seems to be not nessasery to unblock target from
   nodev timeout.
 * Introduce and use less lethal event handler for unexpected
   events in lpfc_nportdisc.c.
 * Can not call fc_target_(un)block() functions with interrupts
   disabled in lpfc_scsiport.c.
 * Added new configuration parameter, lpfc_max_luns range 1-32768,
   default 32768.
 * Allow lpfc_fcp.c to call lpfc_get_hba_sym_node_name().
 * Increase nodev timeout from 20 seconds to 30 seconds.
 * Replace some kfree((void*)ptr) with kfree(ptr).
 * Make 3 functions static: lpfc_get_hba_sym_node_name,
   lpfc_intr_prep and lpfc_setup_slim_access.  Move lpfc_intr_prep
   and lpfc_setup_slim_access so they're defined before being used.
 * Remove an unnecessary list_del() in lpfc_hbadisc.c.
 * Set nlp_state before calling lpfc_nlp_list() since this will
   potentially call fc_target_unblock which may cause a race in
   queuecommand by releasing host_lock.
 * Since lpfc_nodev_tmo < dev_loss_tmo remove queuecommand
   DID_BAD_TARGET return for now.
 * Fix a problem with rcv logo.
 * Remove unused portstatistics_t structure.
 * Remove #if 0 and unnecessary checks in lpfc_fcp.c.
 * Simplify lpfc_issue_lip: Extra layer of protection removed.
 * Grab lock before calling lpfc_sli_issue_mbox(phba, pmb,
   MBX_NOWAIT) in lpfc_sli_issue_mbox_wait().

Changes from 20040920 to 20041018

 * Changed version number to 8.0.13
 * Hide some attributes using #ifndef DFC_DEBUG ... #endif.
 * Modify Makefile to (1) make BUILD_NO_DEBUG=1 will hide some
   (binary) attributes (2) make BUILD_FC_TRANS=0 will build driver
   for 2.6.5 kernel with block/unblock patch.
 * Modified #ifdef names.
 * Added support for proposed FC transport host attributes (which
   replaces some of the attributes we had local to the driver).
   Removed the binary statistics sysfs attribute.
 * Added extra ELS verbose logging for ELS responses.
 * Added recognition for BUILD_FC_TRANS=2 to Makefile to define
   FC_TRANS_VER2.
 * Add a pointer for link stats allocation.
 * Exported lpfc_get_hba_sym_node_name for use by FC_TRANS_VER2
   sysfs routines.
 * Fix discovery problem in lip testing: if device sends an ELS cmd
   (i.e. LOGO) before our FLOGI completes it should be LS_RJT'ed.
 * Moved #defines around to provide target_add/remove for upstream
   kernel deliverables only not SLES9.  Provided ifdefs to #include
   target_block/unblock only if FC_TRANS_VER1.
 * Add sanity check in lpfc_nlp_list move setting nlp_Target
   outside #ifdef.
 * Added a blocked member to the lpfc_target structure for
   block/unblock.  This member allows the driver to know when to
   unblock for pci_remove_one or pci_add_one.  #ifdef'd some more
   block/unblock stuff and removed some defensive checks from
   target_block/unblock.
 * Moved + 5 second window to dev_loss_tmo setting and updated
   comments.
 * Removed NULL target check from target_block/unblock and fixed up
   a few comments.
 * Enable sysfs attributes on 2.6.5 kernels and remove extra
   compatibility code.
 * Remove any and all trailing whitespace.
 * Added message 0718 and return error when dma_map_single fails.
 * Changed the fcpCntl2 commands to include an FCP_ prefix to get
   rid of build warnings on later 2.6.9-rc kernels.  Build
   conflicts with scsi/scsi.h.  Remove inclusions of scsi/scsi.h
   from hbadisc.c, sli.c, and fcp.c since these modules had no
   dependencies on scsi.h.
 * Fixed a bug with RSCN handling. A RSCN received on one device,
   shouldn't affect other devices not referenced by the RSCN.
 * Moved #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,6) to include
   lpfc_jedec_to_ascii to prevent warning in SLES 9.
 * Update Makefile to account for SLES 9 and scsi-target upstream
   kernel.
 * This checkin provides block/unblock hooks for the upstream scsi
   target kernel and 2.6.5 on SLES9 SP1 with the block/unblock
   patch.
 * Discovery changes regarding setting targetp->pnode and
   ndlp->nlp_Target Ensure fc_target_* routines are called properly
   from discovery.  Remove list_del's from lpfc_cleanup().  Ensure
   all the lpfc_consistent_bind_* routines don't set any driver
   structure objects.
 * Fix for timeout of READ_LA or READ_SPARAM mailbox command
   causing panic.
 * Cleanup list_del()'s for Discovery ndlp lists.
 * Bug fixes for some insmod/rmmod crashes, link down crashes and
   device loss crashes.
 * Removed NLP_SEARCH_DEQUE.
 * Call lpfc_target_unblock only if the targetp is nonNull and with
   the host_lock held.
 * Added qcmdcnt back along with misc bug fixes to discovery.
 * Changed tgt_io to outfcpio lpfc_fcp.c.
 * Fixed errors caused by LIP and cable pulls both with and without
   block/unblock patch.
 * For now we have to call fc_target_unblock and fc_target_block
   with interrupts enabled.
 * Save seg_cnt from dma_map_sg.  Save scatter-gather start address
   and pass back to dma_unmap_sg in error with seg_cnt.
 * Incorporating block/unblock calls into driver with ifdefs.  This
   change is supported by scsi-target-2.6 kernel and forward only.
 * Merged in some discovery bug fixes and added tgt io counters.
 * Added sysfs attributes/interfaces: read only attribute
   "management_version" and write only attribute "issue_lip".
 * Fix build on big endian machines: while #if was OK with
   __BIG_ENDIAN which defined as 4321, __BIG_ENDIAN_BITFIELD has to
   be tested with #ifdef because it does not have any value, it is
   either defined or not.
 * Add fabric_name and port_type attributes.
 * Change mdelay to msleep.  mdelay works, but wastefully uses cpu
   resources without a lock held. Revert to msleep.  Tested with
   sg_reset for bus and three attached targets.
 * Added the customary #ifndef...#define...#endif to
   lpfc_version.h.
 * Integrate patches from Christoph Hellwig: two new helpers common
   to lpfc_sli_resume_iocb and lpfc_sli_issue_iocb - singificant
   cleanup of those two functions - the unused SLI_IOCB_USE_TXQ is
   gone - lpfc_sli_issue_iocb_wait loses its flags argument
   totally.
 * Fix in lpfc_sli.c: we can not store a 5 bit value in a 4-bit
   field.
 * Moved some routines out of lpfc_fcp.c into more appropriate
   files.
 * Whitespace cleanup: remove all trailing whitespace.
 * Make lpfc_disc_ndlp_show static to lpfc_fcp.c.
 * Remove leftover printk and replace some with
   printk(KERN_WARNING)
 * Trivial: fix a few long lines and a soft tab.
 * Remove warnings generated by Sparse against driver (make
   C=1). Mostly these are "using integer as pointer warnings"
   i.e. use NULL instead of 0.
 * Integrated patch from Christoph Hellwig: Quite a lot of changes
   here, the most notable is that the phba->slim2p lpfc_dmabuf goes
   away in favour of a typede pointer and a dma_addr_t.  Due to the
   typed pointer lots of the cast mess can go away, and while at it
   I also replaced the messy SLI2_SLIM_t with a simple struct
   lpfc2_sli2_slim that only contains the part of the union we care
   about while using SLI2_SLIM_SIZE for all size calculations
   directly.
 * Integrated patch from Christoph Hellwig: This streamlines the
   I/O completion path a little more, especially taking care of
   fast-pathing the non-error case.  Also removes tons of dead
   members and defines from lpfc_scsi.h - e.g. lpfc_target is down
   to nothing more than the lpfc_nodelist pointer.
 * Added binary sysfs file to issue mbox commands
 * Replaced #if __BIG_ENDIAN with #if __BIG_ENDIAN_BITFIELD for
   compatibility with the user space applications.
 * Decrease the amount of data in proc_info.
 * Condense nodelist flag members.
 * Expand INFO for discovery sysfs shost entries.
 * Notify user if information exceeds 4k sysfs limit.
 * Removed a bunch of unused #defines.
 * Added initial sysfs discovery shost attributes.
 * Remove unused #defines lpfc_disc.h.
 * Fixed failMask nodelist settings.
 * Cleanup some old comments / unused variables.
 * Add LP101 to list of recognized adapters.

Changes from 20040908 to 20040920

 * Changed version number to 8.0.12
 * Removed used #defines: DEFAULT_PCI_LATENCY_CLOCKS and
   PCI_LATENCY_VALUE from lpfc_hw.h.
 * Changes to accommodate rnid.
 * Fix RSCN handling so RSCN NS queries only effect NPorts found in
   RSCN data.
 * If we rcv a plogi on a NPort queued up for discovery, clear the
   NLP_NPR_2B_DISC bit since rcv plogi logic will force NPort thru
   discovery.
 * Ensure lpfc_target is also cleaned up in lpfc_cleanup().
 * Preliminary changes for block/unblock kernel API extensions in
   progress with linux-scsi list.  These are name changes and
   prototype changes only.
 * Added send_abts flag to lpfc_els_abort. For rcv LOGO when ADISC
   sent, the XRI of the LOGO rcv'ed is the same as the ADISC
   sent. Thus we cannot ABTS the ADISC before sending the LOGO ACC.
 * Weed out some unused fc_flags.  Add FC_DISC_TMO.
 * board_online sysfs attribute added to support libdfc functions
   InitDiagEnv and SetBrdEnv.
 * Streamline code in lpfc_els_retry fixup abort case in
   lpfc_els_timeout_handler().
 * Flush discovery/ELS events when we bring SLI layer down.
 * ctlreg and slimem binary attributes added to support libdfc
   read/write mem/ctl functions.
 * Integrated Christoph Hellwig's patch: Cleanup
   lpfc_sli_ringpostbuf_get.
 * Modified lpfc_slave_alloc and lpfc_slave_destroy to allocate and
   free a dummy target pointer.  This allows queuecommand to skip
   the NULL target pointer check and avoid the console spam when
   slave_alloc fails.
 * Fix cfg_scan_down logic, it was reversed.
 * Init list head ctrspbuflist.
 * Change name of lpfc_driver_abort to lpfc_els_abort since it is
   only valid for ELS ring.
 * Remove unused third argument for lpfc_consistent_bind_get().
 * Fix up iotag fields in lpfc_prep_els_iocb().
 * Remove log message on code path triggered by lpfc_els_abort().
 * Set host->unique_id in lpfc_fcp.c.
 * Removed deadwood: lpfc_target.pHba not necessary anymore.
 * Integrated patch from Christoph Hellwig: remove dead
   SLI_IOCB_POLL handling.
 * Integrated patch from Christoph Hellwig: Streamline I/O
   submission and completion path a little.
 * Remove unnecessary lpfc_brd_no.  Ensure brd_no assignment is
   unique.
 * Removed unused MAX_FCP_LUN.
 * Use mod_timer instead of add_timer for fdmi in lpfc_ct.c.
 * Fixed misc discovery problems.
 * Move stopping timers till just before lpfc_mem_free() call.
 * Fix up NameServer reglogin error path.
 * Cleanup possible outstanding discovery timers on rmmod.
 * Fix discovery NPort to NPort pt2pt problem.
 * Get rid of ip_tmofunc / scsi_tmofunc.
 * Integrated patch from Christoph Hellwig:
   lpfc_disc_done/lpfc_do_dpc cleanup - lpfc_disc_done can return
   void - move lpfc_do_dpc and lpfc_disc_done to lpfc_hbadisc.c -
   remove checking of list emptiness before calling lpfc_disc_done,
   it handles the empty list case just fine and the additional
   instructions cost less then the bustlocked spinlock operations.
 * Integrated patch from Christoph Hellwig: This adds a new 64bit
   counter instead, brd_no isn't reused anymore.  Also some tiny
   whitespace cleanups in surrounding code.
 * Reorder functions in lpfc_els.c to remove need for prototypes.
 * Removed unused prototypes from lpfc_crtn.h -
   lpfc_ip_timeout_handler, lpfc_read_pci and lpfc_revoke.
 * Removed some unused prototypes from lpfc_crtn.h -
   lpfc_scsi_hba_reset, lpfc_scsi_issue_inqsn,
   lpfc_scsi_issue_inqp0, lpfc_scsi_timeout_handler.
 * Integrated patch from Christoph Hellwig: remove TRUE/FALSE
   usage.
 * Integrated patch from Christoph Hellwig: Remove unused function
   prototypes lpfc_set_pkt_len and lpfc_get_pkt_data from
   lpfc_crtn.h - fixes build warnings.
 * Removed unused struct lpfc_dmabufip definition from lpfc_mem.h.
 * Removed pre-2.6.5 MODULE_VERSION macro from lpfc_compat.h.
 * Fixing missing static and removing dead code.
 * Adding nodewwn, portwwn and portfcid shost attributes.
 * Initial support for CT via sysfs. request payloads of size less
   than PAGE_SIZE and rsp payloads of size PAGE_SIZE are supported.
   Driver maintains a list of rsp's and passes back rsp's
   corresponding to the pid of the calling process.
 * Support for RefreshInformation, GetAdapterAttributes,
   GetPortStatistics.
 * Make nodev-tmo default to 20 seconds.
 * Fix up some DSM error cases, unreg_login rpi where needed.
 * Fix up comments for fc_target_block / fc_target_unblock.
 * Fix up code for scsi_block_requests / scsi_unblock_requests.
 * Add NLP_FCP_TARGET for nodeinfo support.
 * Move suspend/resume in lpfc_nlp_list under appropriate case -
   Used host_lock for DPC to avoid race (remove dpc_lock)
 * Fix some corner cases for PLOGI receive - simplify error case
   for cmpl_reglogin_reglogin_issue.
 * Bug fix for ppc64 EEH MMIO panic - always do readl after
   writel's of HBA registers to force flush.
 * Get rid of initial static routine declarations in lpfc_hbadisc.c
   and lpfc_els.c.
 * Updates to discovery processing.

Changes from 20040823 to 20040908

 * Changed version number to 8.0.11
 * Removed persistent binding code.
 * Display both ASC and ASCQ info.
 * Fixed link down->up transitions when linkdown tmo expires. Fix
   was in the defensive error checking at the start of
   queuecommand.
 * Removed lpfc_scsi_timeout_handler as this timer is no longer
   required.  The midlayer will exhaust retries and then call
   lpfc_abort_handler, lpfc_reset_lun_handler, and
   lpfc_reset_target_handler.
 * Minimal support for SCSI flat space addressing/volume set
   addressing.  Use 16 bits of LUN address so that flat
   addressing/VSA will work.
 * Changed 2 occurrences of if( 1 != f(x)) to if(f(x) != 1)
 * Drop include of lpfc_cfgparm.h.
 * Reduce stack usage of lpfc_fdmi_cmd in lpfc_ct.c.
 * Add minimum range checking property to /sys write/store
   functions.
 * Fix display of node_name and port_name via fc transport
   attr.
 * Removed biosparam code.
 * Removed range checking. phba->config[] array elements are now
   embedded into the hba struct. lpfc_config_setup() has been
   removed.
 * Collapsed lpfc_scsi_cmd_start into lpfc_queuecommand and cleaned
   up combined routines.
 * Removed unused prototypes myprint and
   lpfc_sched_service_high_priority_queue.
 * Removed unused function lpfc_nodev.
 * Removed scsi_cmnd->timeout_per_command cancelation. SCSI midlayer
   now times out all commands - FW is instructed to not timeout.
 * Removed polling code from lpfc_scsi_cmd_start. Reorganized
   queuecommand and cmd_start some.

Changes from 20040810 to 20040823

 * Changed version number to 8.0.10
 * Additional timer changes as per Arjan / Christoph's comments.
 * Used mod_timer() instead of del_timer_sync() where appropriate.
 * Fixed a use after free case (panic on 2.6.8.1 with
   CONFIG_DEBUG_SLAB set).
 * Fix compile warning in lpfc_fcp.c.
 * Minor fix for log message, that prints unassigned brdno which is
   zero.
 * Move scsi_host_alloc() to the beginning of probe_one(). This
   ensures that host_lock is available at later stages and also
   avoids tons of unnecessary initializing if host_alloc()
   fails.
 * Removed else clause from lpfc_slave_configure that set
   sdev->queue_depth.  The driver informs the midlayer of its
   setting in the template and only overrides if queue tagging is
   enabled.
 * Added PCI_DEVICE_ID_ZEPHYR and PCI_DEVICE_ID_ZFLY (Junior
   Zephyr) support

Changes from 20040730 to 20040810
 
 * Changed version number to 8.0.9
 * Removed per HBA driver lock.  Driver now uses the host->host_lock
 * Restored support for the 2.6.5 kernel for those linux distributions
   shipped with the 2.6.5 kernel.
 * Applied patch from Christoph Hellwig (hch@infradead.org) as follows
   "[PATCH] use scsi host private data in ->proc_info.  
 * Applied patch from Christoph Hellwig (hch@infradead.org) as follows
   "Re: [Emulex] Ready for next round.  This patch cleans up the memory 
   allocation routines a little and fixes a missing mempool_destroy and
   some missing error handling."
 * Changed pointers assignments from 0 to NULL.
 * Added fixes to the lpfc_reset_lun_handler and lpfc_reset_bus_handler
   entry points that caused kernel to Oops or hang.
 * Added fixes to targetless hosts that caused modprobe and insmod to hang.
 * Ongoing cleanup to many files
   
Changes from 20040723 to 20040730

 * Changed version number to 8.0.8
 * Removed unused LPFN_DRIVER_VERSION #define.
 * Folded lpfc_findnode_scsiid into lpfc_find_target, its only
   caller.
 * Removed 2 unneeded arguments to lpfc_find_target (lun and
   create_flag).
 * Make lpfc_sli_reset_on_init = 1
 * Minor cleanup to quieten sparse.
 * Removed missing function = 0 in tmo routine in lpfc_els.c.
 * Moved additional binding parameters into lpfc_defaults.c:
   lpfc_automap / lpfc_fcp_bind_method
 * Use msecs_to_jiffies() where applicable.
 * Only use queue depth attribute only after SLI HBA setup was
   completed.
 * Put in memory barriers for PPC
 * Added PCI_DEVICE_ID_HELIOS and PCI_DEVICE_ID_JFLY (Junior
   Helios) support
 * Added 4&10 gigabit choices in user option link_speed
 * Updated timer logic: Set timer data after init_timer use
   timer_pending() instead of expires.
 * Removed some remnants of IP over FC support from Kconfig and
   Makefile.
 * Remove redundant prototypes for lpfc_handle_eratt,
   lpfc_handle_latt and lpfc_read_pci.
 * Ongoing cleanup of lpfc_init.c.
 * Changed LPFC_CFG_DFT_HBA_Q_DEPTH -> LPFC_CFG_HBA_Q_DEPTH.
 * Another cleanup stab at lpfc_ct.c. Remove castings, structure
   code sanely, remove redundant code, reorganize code so that
   functions are invoked after definition.

Changes from 20040716 to 20040723

 * Changed version number to 8.0.7
 * Cleanup of lpfc_ct.c. Removed number of casts, removed tons of
   dead/redundant code, cleaned up badly and poorly written code,
   cleaned up return values.
 * Fixed Persistent binding implementation
 * Removed all references to lpfc_scsi_req_tmo
 * Removed last references to lun_skip config parameter.
 * Removed LPFC_DEV_RPTLUN node failure bit because we don't issue
   REPORT_LUNS from the driver anymore.
 * Removed LUN-tracking in driver.  Removed lpfc_lun struct and
   moved any functionality we still need to lpfc_target.
 * Added new lpfc_jedec_to_ascii() call and replace two instances
   of duplicate code with calls to this function.
 * Removed Volume Set Addressing handling on LUN IDs.
 * Applied patch from Christoph Hellwig (hch@infradead.org) that
   removes dead code belonging to lpfc_build_scsi_cmnd() and its
   call path. This is related to the recently removed report_lun
   code.

Changes from 20040709 to 20040716

 * Changed version number to 8.0.6
 * Removed internal report LUNs usage.  Removed functions:
   lpfc_disc_issue_rptlun, lpfc_disc_cmpl_rptlun,
   lpfc_disc_retry_rptlun and their use.
 * Removed usused scheduler prototypes in lpfc_crtn.h
 * Replace lpfc_geportname() with generic memcmp().
 * Rearrange code in lpfc_rcv_plogi_plogi_issue() to make it a
   little more readable.
 * Remove redundant port_cmp != 2 check in if
   (!port_cmp) { .... if (port_cmp != 2).... }
 * Clock changes: removed struct clk_data and timerList.
 * Clock changes: separate nodev_tmo and els_retry_delay into 2
   separate timers and convert to 1 argument changed
   LPFC_NODE_FARP_PEND_t to struct lpfc_node_farp_pend convert
   ipfarp_tmo to 1 argument convert target struct tmofunc and
   rtplunfunc to 1 argument * cr_count, cr_delay and
   discovery_threads are only needed to be module_params and not
   visible via sysfs.

Changes from 20040614 to 20040709

 * Changed version number to 8.0.5
 * Make lpfc_info static.
 * Make lpfc_get_scsi_buf static.
 * Print a warning if pci_set_mwi returns an error.
 * Changed SERV_PARM to struct serv_parm.
 * Changed LS_RJT to struct ls_rjt.
 * Changed CSP to struct csp.
 * Changed CLASS_PARMS to struct class_parms.
 * Some cosmetic coding style cleanups to lpfc_fcp.c.
 * Providing a sysfs interface that dumps the last 32
   LINK_[UP|DOWN] and RSCN events.
 * Get rid of delay_iodone timer.
 * Remove qfull timers and qfull logic.
 * Convert mbox_tmo, nlp_xri_tmo to 1 argument clock handler
 * Removed duplicate extern defs of the bind variables.
 * Streamline usage of the defines CLASS2 and CLASS3, removing
   un-necessary checks on config[LPFC_CFG_FCP_CLASS].
 * Moving the persistent binding variables to new file
   lpfc_defaults.c
 * Changed LPFC_SCSI_BUF_t to struct lpfc_scsi_buf.
 * Moved config specific code from probe_one() into
   config_setup(). Removing a redundant check on scandown value
   from bind_setup() as this is already done in config_setup().
 * Changed LPFC_SLI_t to struct lpfc_sli.
 * Changed FCP_CMND to struct fcp_cmnd.
 * Changed FCP_RSP to struct fcp_rsp.
 * Remove the need for buf_tmo.
 * Changed ULP_BDE64 to struct ulp_bde64.
 * Changed ULP_BDE to struct ulp_bde.
 * Cleanup lpfc_os_return_scsi_cmd() and its call path.
 * Removed lpfc_no_device_delay.
 * Consolidating lpfc_hba_put_event() into lpfc_put_event().
 * Removed following attributes and their functionality:
   lpfc_extra_io_tmo, lpfc_nodev_holdio, lpfc_delay_rsp_err,
   lpfc_tgt_queue_depth and lpfc_check_cond_err.
 * Clock changes consolidating timers, just in the struct lpfc_hba,
   to get rid of clkData and pass only one argument to timeout
   routine. Also, removing need for outstanding clock linked list
   to stop these timers at rmmod.
 * Move lpfc.conf contents into lpfc_fcp.c. Removing per adapter
   attributes in favor of global attributes.
 * Fix a potential null pointer reference of pmbuf in lpfc_ct.c.
 * On reset_lun, issue LUN_RESET as opposed to ABORT_TASK_SET.
 * Removed SCSI_REQ_TMO related code.
 * Introducing two new defines LPFC_ATTR_R and LPFC_ATTR_RW that do
   a module_param, MODULE_PARM_DESC, lpfc_param_show,
   [lpfc_param_store] and CLASS_DEVICE_ATTRIBUTE.
 * Properly clean up when allocation of a linked BDE fails in the
   SCSI queuecommand path.
 * Fail SCSI command if dma_map_sg call fails.
 * Remove unused macros SWAP_ALWAYS and SWAP_ALWAYS16.
 * Reset context2 to 0 on exit in
   lpfc_sli_issue_iocb_wait_high_priority() and
   lpfc_sli_issue_iocb_wait().
 * Arranging lpfc_scsiport.c to follow style of use after
   definition. This removes the need for the cruft of forward
   declarations. Also removing a redundant #define ScsiResult as it
   already available elsewhere.
 * Applying "Streamline lpfc error handling" patch from Christoph
   Hellwig (hch@infradead.org) with following modifications: fix
   mem leaks, remove some misplaced code that need not be there,
   print a message on exit (old code prints two (entry/exit)), make
   ret values consistent (either 1/0 or SUCCESS/FAILURE), keep all
   eh routines in a single file (lpfc_scsiport.c).
 * Move contents of lpfc_module_param.h into lpfc_fcp.c.
 * Changed sysfs attributes to CLASS_DEVICE_ATTRIBUTES (previously
   DEVICE_ATTRIBUTES). They now appear in
   /sys/class/scsi_host/hostx (previously in
   /sys/bus/pci/drivers/lpfc/devx).
 * Removed lpfc_syfs.h and lpfc_sysfs.c.
 * Cleanup of config params.  Throttle params have been removed.
   max_lun has been removed. max_target is replaced with a #define,
   lun_skip is removed.  Remove ipfc config params and related
   code.
 * Changed DMABUF_t usage to struct lpfc_dmabuf.
 * Downsizing iCfgParam structure to include a_string, a_low, a_hi
   and a_default values only.
 * Free SCSI buf safety memory pool on shutdown to eliminate memory
   leak.
 * Change lpfc_printf_log to a #define. Also include phba->brd_no
   and newline in the print string rather than in the #define.
 * Remove code that optionally locates Host Group Pointers in host
   memory SLIM since this is no longer needed for PPC64, once
   CONFIG_PORT uses HBA's view of its BAR0.
 * Removed the forward declarations of the sli functions and
   rearranging the code in lpfc_sli.c.
 * Removed the preamble functionality from logging.
 * Make lpfc_sli_hba_setup() return negative error codes on error
   and correct the comment left over in lpfc_fcp.c
 * Removed the lpfc_loadtime variable.
 * Put a space between all ifs and their open parens '('.
 * Change Studly_Caps LPFC_SCSI_BUF_t to struct lpfc_scsi_buf.
 * Fixed insmod hang after hardware error.
 * Relocated scsi_host alloc to before we enable the interrupt
   handler
 * Add .tmp_versions directory to Makefile clean target.  This
   directory is created in the 2.6.5+ build process (with Red Hat
   kernels at least).
 * Changing phba->config to kmalloc lpfc_icfgparam and not
   *phba->config. This is manifesting itself as a panic in
   pci_release_region().
 * Fix for firmware download / board reset problem.
 * Integrated patch from Christoph Hellwig (hch@infradead.org) to
   reorganize and cleanup lpfc_fcp.c
 * Don't abort commands immediately when there is an RSCN event to
   give driver time to rediscover targets before the midlayer
   retries the SCSI commands.

Changes from 20040604 to 20040614

 * Changed version number to 8.0.4
 * Removed lpfc_valid_lun function.
 * Added scsi_buf safety pool to address scsi_buf failures in
   queuecommand under low memory conditions.  Allocations now come
   from kmalloc initially, but if kmalloc fails, the allocation
   comes from the safety pool.
 * Modified lpfc_slave_alloc to only set the scsi_device->hostdata
   pointer if the driver has discovered the target.  This routine
   always returns success now as well since no error ever occurs in
   the alloc routine.
 * Mask only info and warning messages.  Print all error messages
   irrespective of mask.
 * Removing lpfc_log_chk_msg_disabled()
 * Changed lpfc_printf_log to take struct lpfc_hba * directly
   instead of a "board number".
 * Convert dma_sync_single to pci_dma_sync_single_for_{device/cpu}.
 * Implemented new style log messages. The message strings are now
   embedded in the call to lpfc_printf_log.
 * Decreased FLOGI discovery timeout to 20 seconds.
 * On error in lpfc_pci_probe_one() return -1 and not 1.
 * Allow for board numbers that are not sequential, paving the way
   for hotplug support.
 * scsi_add_host() can fail, so wrap it around in an if(). Also
   initiate scsi_scan_host() after attaching the sysfs attributes.
 * lpfc_release_version is used only in lpfc_ct.c, so move it there
   and mark it as static.
 * Removed lpfc_sleep_ms and replaced with mdelay or schedule calls
   directly
 * Removed all (struct list_head *) casts from clkData-related list
   handling in list_add, list_del macros.
 * Removed EXPORT_SYMBOLs.
 * Removed LPFC_MIN_QFULL and lpfc_qthrottle_up.
 * Replace LPFCSCSITARGET_t with struct lpfc_target.
 * Replace LPFCSCSILUN_t with struct lpfc_lun.
 * Remove unused struct declarations (fcPathId and fcRouteId) from
   lpfc_scsi.h.
 * Rewrite use of FC transport attributes.
 * Fix crash when link is lost.  This was due to lpfc_delay_iodone
   calling list_del on an object that was never put on a list.
 * Remove trailing spaces at the end of all lines.
 * Set MAX_FCP_TARGET to 256 from 0xff.  Set MAX_FCP_LUN and
   MAX_FCP_CMDS to their decimal equivalents and updated
   documentation.

Changes from 20040526 to 20040604

 * Changed version number to 8.0.3
 * Completed sysfs FC transport support.
 * Removed unused fields in SCSI LUN and SCSI Target structures:
   void *pTargetProto; void *pTargetOSEnv; void *pLunOSEnv;
 * Modified list_for_each to list_for_each_entry. Modified
   list_for_each_safe to list_for_each_entry_safe.
 * Remove lpfc_dfc.h file.
 * Changed pHba->phba, pCommand->pcmd
 * Changed plogi_ndlp -> plogindlp, pos_tmp->postmp, pRsp->prsp,
   pCmd->pcmd
 * Changed pText -> ptext
 * Changed p_tmp_buff -> ptmpbuff
 * Changed pBufList -> pbuflist, pRsp -> prsp, pCmd -> pcmd
 * Changed *pos_tmp -> *postmp, *p_mbuf -> *pmbuf
 * Following changes are made to the SCSI fast path: Added
   DMA_BUF_t member to the lpfc_scsi_buf_t.  This will reduce a
   memory allocation in the scsi fast path.  Added check for
   targetp == NULL in the scsi fast path.  Increased number of
   scatter gather entries in lpfc_scsi_dma_ext to 4 from 3 and
   changed the size of lpfc_scsi_dma_ext to 264
 * Fixing some missing static lpfc_nportdisc.c.
 * Reordered #include lines so that lpfc.h doesn't have to #include
   other header files.
 * Remove lpfc_get_hba_sym_node_name() as a global EXPORT and make
   it static.
 * Move struct clk_data definition from lpfc_hw.h to lpfc_sli.h.
 * Changed LPFC_IOCBQ_t to struct lpfc_iocbq.
 * Changed LPFC_SLI_RING_t to struct lpfc_sli_ring.
 * Changed LPFC_NODELIST_t to struct lpfc_nodelist.
 * Rearranged lpfc_nportdisc.c by moving state machine array
   (lpfc_disc_action) and the one function that uses it,
   lpfc_disc_state_machine, to the end of the file, removing the
   need for the raft of prototypes at the top.
 * Changed LPFC_BINDLIST_t to struct lpfc_bindlist.
 * Removed lpfc_issue_ct_rsp(), lpfc_sleep(), lpfc_add_bind(),
   lpfc_del_bind(), lpfc_sli_wake_mbox_wait() and
   lpfc_sli_issue_mbox_wait().
 * Fixed a large number of overly-long lines.
 * Fixed some discovery problems: Introduced deferred ndlp removal
   when in DSM to avoid panic when in nested DMSs Fix NportId
   fffc01 handling to not relogin after LOGO fixed handling of LOGO
   on PLOGI issue.
 * Changed SLI_CT_REQUEST to lpfc_sli_ct_request.
 * Changed NAME_TYPE to struct lpfc_name.
 * Changed lpfcCfgParam_t to struct lpfc_cfgparam.
 * Changed LPFC_STAT_t to struct lpfc_stats.
 * Changed HBAEVT_t to struct lpfc_hba_event.
 * Changed Studly_Caps lpfcHBA_t to struct lpfc_hba.
 * Removed no longer used tasklet_running flag.
 * Removing *PSOME_VAR typedefs and using SOME_VAR* directly.
 * Changing .use_clustering to ENABLE_CLUSTERING.
 * Modify lpfc_queuecommand to return SCSI_MLQUEUE_HOST_BUSY when
   it can't queue a SCSI command.  Also, remove cmnds_in_flight
   member of struct lpfcHBA for 2.6 kernels as it was only needed
   to determine what to return from queuecommand.
 * Change return type of lpfc_evt_iocb_free to void as it doesn't
   return anything.
 * Remove unused cmnd_retry_list and in_retry members in struct
   lpfcHBA.
 * Remove some instances of unneeded casting of kmalloc's return in
   lpfc_scsiport.c
 * Remove lpfc_linux_attach() and lpfc_linux_detach(). Integrate
   them into lpfc_probe_one() and lpfc_release_one() respectively.
 * Remove lpfc_num_iocbs, lpfc_num_bufs module parameters
 * Remove #defines for NUM_NODES, NUM_BUFS and NUM_IOCBS

Changes from 20040515 to 20040526

 * Changing version number to 8.0.2.
 * Including dma-mapping.h as one of the include headers.  Also
   rearrange the #include order.
 * Make functions static as appropriate.
 * queuecommand() will now return SCSI_MLQUEUE_HOST_BUSY instead of
   1 to backpressure midlayer.
 * Removed function prototypes for lpfc_start_timer() and
   lpfc_stop_timer()
 * Changed timer support to be inline.  Clk_data is now declared
   right next to the corresponding timer_list entry so we don't
   have to allocate these clk_data dynamically.
 * Add readls after writels to PCI space to flush the writes.
 * Fix misspelled word "safety" in function names.
 * Fix up comments in lpfc.conf for per HBA parameters to reflect
   new implementation.
 * Change lpfc_proc_info handler to get the Nodename from
   fc_nodename and not fc_portname.
 * Fix up some comments and whitespace in lpfc_fcp.c.
 * Formatting changes: get rid of leading spaces in code
 * Move discovery processing from tasklet to a kernel thread.
 * Move ndlp node from unmap list to map list if ADISC completed
   successfully.
 * Flush all the ELS IOCBs when there is a link event.
 * LP9802 qdepth is twice the LP9802DC qdepth.  Delay
   elx_sched_init after READ_CONFIG to get max_xri from the
   firmware.  Reset ELX_CFG_DFT_HBA_Q_DEPTH to max_xri after
   READ_CONFIG
 * Fix fc_get_cfg_parm() to be more robust and support embedded hex
   values.  The lpfc_param's are now defined as:
   lpfc_log_verbose="lpfc:0,lpfc0:0x10,lpfc1:4,lpfc100:0xffff" The
   "," delimter does not matter. It can be anything or not exist at
   all. ie param = "lpfc:0lpfc0:0x10.lpfc1:4txtlpfc100:0xffff" will
   also work.  Additionally the string is treated as case
   insensitive.
 * Changed all usage of lpfc_find_lun_device() to lpfc_find_lun().
 * Removed unnecessary wrappers lpfc_find_lun_device() and
   lpfc_tran_find_lun().
 * Switch from using internal bus/id/lun to similar data from
   scsi_device structure.
 * Eliminate one-line function lpfc_find_target()
 * Added slave_alloc, slave_destory
 * lpfc_scsi_cmd_start can now acquire lun pointer from
   scsi_device->hostdata, which is setup in slave_alloc.
 * Eliminate unnecessary checking on every cmd just to see if we
   are accessing the device the first time.
 * Remove assumption in lpfc_reset_lun_handler that a valid
   lpfc_scsi_buf is hung off of linux's scsi_cmnd->host_scribble
   when our reset is called.

Changes from 20040507 to 20040515

 * Changed version to 8.0.1
 * Fixed crash on driver rmmod after error injection tests and
   lpfc_tasklet deadlock.
 * Modified lpfc.conf to remove limit on number of support hosts
 * Removed HBAAPI 
 * Removed duplication of SCSI opcodes from lpfc_fcp.h that are
   available in scsi/scsi.h
 * Rework module_param usage
 * Added MODULE_PARAM_DESC for various module_params
 * Removed #define EXPORT_SYMTAB
 * Removed #includes of if_arp.h and rtnetlink.h
 * Removed string "Open Source" from MODULE_DESC
 * Cleanup duplicated string definitions used by MODULE_DESC
 * Renamed lpfc_pci_[detect|release] to lpfc_pci_[probe|remove]_one
 * Fix formatting of lpfc_driver
 * Remove unnecessary memset to 0 of lpfcDRVR
 * Attach driver attributes always unless pci_module_init failed
 * Remove all one-line wrappers from lpfc_mem.
 * Remove lpfc_sysfs_set_[show|store] as it is no longer needed
 * Redo lpfc_sysfs_params_[show|store] to one value per attribute rule
 * Breakdown lpfc_sysfs_info_show into smaller one value per attribute
 * Use device attributes instead of driver attributes where appropriate
 * Remove no longer needed EXPORT_SYMBOLs
 * Remove some unused code (1600 msg's related)

Changes from 20040429 to 20040507

 * Change version to 8.0.0
 * Fix the number of cmd / rsp ring entries in lpfc_fcp.c to match
   the divisions setup in lpfc_hw.h.
 * Remove phba->iflag reference.
 * Several locking improvements.
 * Remove functions lpfc_drvr_init_lock, lpfc_drvr_lock,
   lpfc_drvr_unlock and lpfc_hipri_*.
 * Remove LPFC_DRVR_LOCK and LPFC_DRVR_UNLOCK macros.
 * Make lpfc_info() use lpfc_get_hba_model_desc() instead of
   rewriting almost identical code.
 * Fix 1 overly long line in each of lpfc_cfgparm.h, lpfc_ftp.c and
   lpfc_sli.c.
 * Fix build for Red Hat 2.6.3 kernel by #defining MODULE_VERSION
   only if it isn't already defined.
 * Change elx_sli_issue_mbox_wait to return correct error code to
   the caller.
 * In some of the els completion routines, after calling
   lpfc_elx_chk_latt, driver ignores the return code of the
   lpfc_elx_chk_latt. This will prevent the discovery state machine
   restarting correctly when there are link events in the middle of
   discovery state machine running. Fix this by exiting discovery
   state machine if lpfc_els_chk_latt returns a non zero value.
 * Removed MAX_LPFC_BRDS from lpfc_diag.h
 * Removed unused first_check.
 * Remove some unused fields and defines.
 * Change lpfc-param names to lpfc_param.
 * Add use of MODULE_VERSION macro for 2.6 kernels.
 * Shorten length of some of the comment lines to make them more
   readable.
 * Move FCP_* definitions to their own header file, lpfc_fcp.h.
 * Remove unused prototypes from lpfc_crtn.h: fcptst, iptst,
   lpfc_DELAYMS.
 * Remove duplicated prototypes from lpfc_crtn.h:
   lpfc_config_port_prep, lpfc_config_port_post,
   lpfc_hba_down_prep.
 * Removed some unused export_symbols.
 * Install driver files into */drivers/scsi/lpfc instead of
   */drivers/scsi.

Changes from 20040426 to 20040429

 * Declared export symbol lpfc_page_alloc and lpfc_page_free
 * Changed lpfc version number to 6.98.3
 * Move the definition of MAX_LPFC_BRDS to the only header file
   that uses it (lpfc_diag.h).
 * Change lpfc_sli_wake_iocb_wait to do a regular wake_up since
   lpfc_sli_issue_iocb_wait now sleeps uninterruptible.
 * Replace list_for_each() with list_for_each_safe() when a list
   element could be deleted.
 * Fix IOCB memory leak

Changes from 20040416 to 20040426

--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.60 Sekunden  ]