Changes from 20070116 to 20070228

	* Changed version number to 8.0.16.32.
	* Work around for lost interrupt on a specific model of PCIe server.
	  (CR 24269)
	* Fixed lpfc_ns_rsp to handle entire GID_FT response.
	  (CR 23925)

Changes from 20061121 to 20070116

	* Changed version number to 8.0.16.31.
	* Fix queuecommand panic during driver unload (CR 23624)
	* Fix panic during driver unload (CR 23624)

Changes from 20061025 to 20061121

	* Fix lpfc build warning on PPC64/IA64.
	* Don't perform NPort confirmation for fabric ports (CR 22983).

Changes from 20060608 to 20061025

	* Changed version number to 8.0.16.29.
	* Removed lpfc driver dependency on subsystem id of HBAs
	  (CR 22628)
	* Added a module parameter to control maximum read DMA byte count. 
	  (CR 22686)
	* Update discovery logic to send RFF to Fabric on link up
	* Duplicate ulpIoTag for rings other then fcp_ring
	* sli_iocb_type_array incomplete
	* Cosmetic changes to make multi ring support more generic
	* Add soft_wwpn sysfs attribute
	* Fix double free of ndlp object (CR 21455)
	* Need to NULL starget in lpfc_slave_destroy (CR 20858)

Changes from 20060413 to 20060608

	* Changed version number to 8.0.16.28.
	* Change mailbox timeout values.
	* Bogus nodev_tmo message on NPort that changes its 
	  NPort Id. (CR 20312)
	* Txcmplq related panics on heavy IO while downloading.
	* HBAnyware firmware download fails. (CR 20387)
	* Fixed infinite retry of REG_LOGIN mailbox failed due to 
	  MBXERR_RPI_FULL. (CR 20234)
	* Exit lpfc_sli_issue_mbox if eratt is detected. (CR 19763)
	* Possible memory leak when type LPFC_ABORT iocbs complete
	* Merge multiple small discovery fixes. (CR 19506 19897)
	* Fix some RSCN handling during the re-discovery after 
	  Link Up event. (CR 19465)

Changes from 20060314 to 20060413

	* Changed version number to 8.0.16.27
	* Add diskdump support from Fujitsu (CR 19975)

Changes from 20060223 to 20060314

	* Changed version number to 8.0.16.26
	* Fixed indefinite wait for discovery to complete while loading
	  lpfc driver (CR 19486)
	* Fix uninitialized variable in lpfc_get_hba_model_desc (CR 19485)
	* Rework lpfc_reset_barrier() function for resets on dual Helios
	  HBAs (CR 19447)
	* Initialize all fields of the allocated mail box structure to zero.
	* Fixed error messages in lpfc_target_block/unblock functions.
	  (CR 19287)

Changes from 20060126 to 20060223

	* Changed version number to 8.0.16.25
	* Fixed lpfc driver waiting indefinitely for discovery to
	  complete.(CR 18664)
	* Update driver copyright year to 2006
	* Fixed a timer panic due to timer firing after freeing ndlp.
	  (CR 19244)
	* Fixed RSCN handling when a PLOGI is in retry.(CR 19242)
	* Introduce lpfc_reset_barrier() function for resets on dual
	  Helios HBAs.(CR 18896)
	* Obtain hrd_type with pci_read_config_byte() macro.(CR 19111)
	* Standardize the driver on a single definition for the maximum
	  supported targets.
	* Prevent a slow path lookup on the FCP txcmplq when a fast lookup
	  fails.(CR 19043)
	* Provide range checking on the sid_cnt value used to index the
	  device queue hash table.(CR 18968 )
	* Derive supported speeds from LMT field in the READ_CONFIG
	  (CR 18816)
	* Use mod_timer instead of add_timer in
	  lpfc_els_timeout_handler. (CR 19016)
	* Fix unsafe list removal code in lpfc_disc_flush_list() call.
	  (CR 16858)
	* Fix SLI rsp ring handling logic for multi ring support
	* Discovery never completes, insmod never returns
	* Fix performance when using multiple SLI rings

Changes from 20060111 to 20060126

	* Changed version number to 8.0.16.24.
	* Add the host_lock to the driver's proc fs entry point.(CR 18262)
	* Fixed module parameter descriptions.(CR 18576)
	* Added error messages in lpfc driver for ioremap function 
	  failure.(CR 18626)
	* Modify RSCN handling to unregister rpis on lost FCP_TARGETs 
	  immediately.(CR 17618)

Changes from 20051219 to 20060111

	* Changed version number to 8.0.16.23.
	* scsi_scan_host() is called before discovery is 
	  completed. (CR 18480)
	* Fixed system panic in lpfc_sli_brdreset during dynamic add of 
	  LP11K. (CR 18570)
	* Add module parameter to limit the number of outstanding commands 
	  per lpfc HBA.(CR 18565)
	* Fixed a double insertion of mail box object to the SLI mailbox 
	  list. (CR 18569)
	* Fix panic while downloading firmware on PPC. (CR 18501)
	* Added RPS RPL and LIRR ELS support in driver and removed 
	  RRQ ELS support in driver.

Changes from 20051209 to 20051219

	* Changed version number to 8.0.16.22_rc3.

Changes from 20051201 to 20051209

	* Changed version number to 8.0.16.22_rc2.
	* Fixed a race condition in the PLOGI retry logic. (CR18233)
	* Don't check for MBATT in lpfc_sli_issue_mbox when in warm start
	  mode.
	* Add support for MBX_KILL_BOARD and MBX_BEACON mailbox commands.
	* Add support for diagnostic dump feature.
	* Fix the SCSI errors reported by IBM during the 3 second cable
	  pull test. (CR18009)
	* Modify the receive data field size and buffer-to-buffer receive
	  data field size service parameter handling from two 8-bit fields
	  to a single 16-bit field. (CR17266)
	* Add support for diagnostic loopback tests.
	* Modify lpfc_abort_handler message 0749 to display more accurate
	  text and data. (CR17265)
	* Remove ProgType READ_REV mailbox command value check in
	  lpfc_config_port_prep. (CR17493)
	* Remove reference to scsi_cmnd from lpfc_scsi_cmd_iocb_cleanup().
	  (CR17243)
	* Use uint32_t for port_id to avoid truncation.  (CR17721)
	* Call scsi_unblock_requests from lpfc_pci_remove_one if in
	  offline state.
	* Remove RPI hash from the driver. (CR17347,CR17596)
	* Add polling and enable per HBA setting of the coalescing
	  parameters. (CR17242)
	* Fix failure to initialize adapter correctly. (CR17418)
	* Remove all but one lpfc_sli_next_iotag() calls. (CR17194)
	* Removed unused #ifdefs. (CR17286)
	* Fix condition in lpfc_parse_vpd that would allow the parsing
	  routine to continue parsing if the remaining data length was
	  decremented below 0. (CR16309)
	* Fix link speed reporting during various link down
	  conditions. (CR15719)
	* Eliminate race in discovery lists removal. (CR15921,CR16375)
	* Unlock before calling del_timer_sync. (CR16332)
	
Changes from 20051121 to 20051201

	* Changed version number to 8.0.16.21.
	* Fixed SCSI errors during SCSI device/bus resets.

Changes from 20051108 to 20051121

	* Changed version number to 8.0.16.20.
	* Modify lpfc_abort_handler wait loop time to wait less per loop
	  and spin more often.

Changes from 20051104 to 20051108

	* Changed version number to 8.0.16.19.
	* Added code to adjust lun queue depth to avoid target
	  overloading.

Changes from 20050727 to 20051104

	* Changed version number to 8.0.16.18.
	* Bring model descriptions in sync with Emulex standard generic
	  names.
	* New PCI IDs for 4G HBAs.
	* Support for backported FC tranport issue_lip and host_port_id.

Changes from 20050725 to 20050727

	* Changed version number to 8.0.16.17.
	* Added code to release host lock before sleep in
	  lpfc_sli_issue_iocb_wait. (CR17088)

Changes from 20050713 to 20050725

	* Changed version number to 8.0.16.16.
	* Fix timing race between eh_abort handler and scsi_done upcall by
	  holding host_lock in driver's done routine. (CR16885)
	* Fixed issue in which iotag of 0 can be used repeatedly if the
	  fast lookup table is full. (CR17030)

Changes from 20050711 to 20050713

	* Changed version number to 8.0.16.15.
	* Prevent IoTag duplicate use by always providing a completion
	  callback for all IOCB commands that get a response from the
	  FW. (CR16885)

Changes from 20050621 to 20050711

	* Changed version number to 8.0.16.14.
	* Fixed incorrect FAN handling. (CR16869)
	* Modified to throttle lun queue depth when queue full is
	  detected. (CR16885)
	

Changes from 20050614 to 20050621

	* Changed version number to 8.0.16.13.
	* Fixed logic error in lpfc_sli_issue_iocb_wait_high_priority that
	  resulted in the cleanup completion handler not being properly
	  set on a timeout. (CR16628)
	* Fixed mempool_free issue in lpfc_sli_wake_iocb_high_priority_cleanup
	  in which the wrong object was being freed. (CR16628)
	* Reworked memory allocation scheme in the bus reset path to
	  prevent reusing/freeing memory that was still queued on the
	  txcmplq list. (CR16628)
	* Removed access to the scsi_cmnd object in the abort handler
	  paths since it may no longer be valid.  The lun is now tracked
	  in the lpfc_scsi_buf object and get the target id from the
	  lpfc_target pointer. (CR16628)
	* Give target reset and lun reset a valid context1 value so they
	  can be aborted after a timeout rather than remain on the txcmplq
	  list indefinitely. (CR16628)

Changes from 20050512 to 20050614

	* Changed version number to 8.0.16.12.
	* Updated copyright information.  (CR16290)
	* Changed sysfs _store() and _show() functions to return negative
	  error codes.  (CR16468)
	* Modified module parameter/attribute code so illegal out-of-range
	  values cannot be set via options at load time.  (CR15677)
	* Fixed lpfc_get_hba_model_desc() to report correct HBA names.
	  (CR16250, CR16252, CR16254)
	* Fixed premature timeout in lpfc_sli_issue_ioctl_wait_high_priority.
	  (CR16326)

Changes from 20050511 to 20050512

	* Changed version number to 8.0.16.11.
	* Fixed performance issue due to driver not allowing transfers
	  larger than 512KB in later, 2.6.10+ kernels.  Modified
	  scsi_host_template in driver with the addition of .max_sectors =
	  0xFFFF since the driver doesn't have any limitation on the
	  number of sectors described in the sg_table.

Changes from 20050506 to 20050511

	* Changed version number to 8.0.16.10.
	* Removed log message.
	* Modified lpfc_cmpl_adisc_adisc() to put ndlp in MAPPED state
	  only if a previous binding is found.
	* Modified lpfc_mbox_timeout_handler() to clear the
	  WORKER_MBOX_TMO flag from work_hba_events.

Changes from 20050419 to 20050506

	* Changed version number to 8.0.16.9.
	* Updated copyright messages.
	* Removed unused msecs_to_jiffies macro.
	* Changed treatment of OPEN_LOOP errors so that the device in
	  question is blocked.
	* Removed scsi_hotplug from sources.
	* Removed code wrapped by USE_SCAN_TARGET
	* Removed unused shost variable in lpfc_target_add.
	* Changed the include order of lpfc_compat.h so module will build
	  on SLES 9 SP2.
	* Changed lpfc_find_target() to associate a DID with the correct
	  target pointer when target-side ports have changed.
	* Fixed source of data for log message 0307.
	* Removed distribution-specific driver version.

Changes from 20050327 to 20050419

	* Changed version number to 8.0.16.8.
	* Changed FLOGI sequence timeout to not cause a nodev timeout to
	  run on fabric node.
	* Changed ELS timeout value for discovery.
	* Changed lpfc_rcv_prli_npr_node to accept instead of reject a
	  PRLI.
	* Removed PCI DMA sync calls to coherent/consistent PCI memory.
	* Changed log messages of type LOG_IP to be of type LOG_ELS.
	* Changed log messages to make numbers unique.
	* Added PCI ID for LP10000-S.
	* Fixed uninitialized timer warnings.
	* Changed lpfc_find_target() to search all lists other than unmap
	  list.  If target is not found, inquiries to luns on nodes in NPR
	  or other relevant states are errored back.
	* Display nodev message only when FC targets go away unless
	  LOG_DISCOVERY is set.
	* Added clear of host_scribble in the scsi_cmnd structure when
	  failing in queuecommand.
	* Changed lpfc_abort_handler() to return SUCCESS if a command is
	  not in both TX and TX completion queues and return ERROR if a
	  command completion times out after an abort was issued or if a
	  failure occurs while issuing an abort command to firmware.
	* Added printk of copyright string at driver load.

Changes from 20050304 to 20050327

	* Changed version number to 8.0.16.7.
	* Changed to start or restart the els timeout function only if els
	  commands are pending.
	* Fixed a memory leak in bus_reset_handler.
	* Fixed an issue in the targetp command counters.
	* Added code to count aborted commands.
	* Fixed LUN reset bug in which driver always reset LUN 0.

Changes from 20050304 to 20050304

	* Changed version number to 8.0.16.6.
	* Always return SUCCESS from the driver's abort_handler when the
	  host_scribble is zero.  The driver has already completed this
	  command.

Changes from 20050223 to 20050304

	* Changed version number to 8.0.16.5.
	* Fixed RSCN handling during link initialization.
	* Fixed RSCN timeout issues.
	* Fixed receive PLOGI handling when node is on NPR list and marked
	  for ADISC.
	* Added ELS command completions in discovery event list before
	  freeing the nlp node.
	* Added code to distinguish fabric nodes from target nodes.
	* Added creation of a new invalid target ID define to guarantee
	  target ID 0 is unique.
	* Added unblock of target during nodev_tmo to allow the midlayer
	  to fail SCSI devices.
	* Fixed bug in handling of target loss due to cable pull.
	* Disabled lpfc_scsi_hotplug code in driver.
	* Changed sysfs attributes scan_down, fcp_bind_method, and
	  max_luns to Read Only.
	* Changed log level of "SCSI layer issued abort device" message to
	  KERN_WARNING from KERN_ERR.

Changes from 20050209 to 20050223

	* Changed version number to 8.0.16.4.
	* Moved all timeout handlers to dpc thread.
	* Added lock around around read-modify-write accesses of Host
	  Attention register as well as all hardware registers in
	  interrupt handler.

Changes from 20050118 to 20050209

	* Changed version number to 8.0.16.3
	* Removed FC_UNLOADING flag as well as the check of FC_UNLOADING
	  flag to determine what scsi result to return from
	  lpfc_queuecommand.
	* Added VPD support.
	* Changed use of DUMP mailbox command to support HBAs with 256
	  bytes of SLIM.
	* Fixed memory leaks of mbox resources.
	* Added default mbox completion routine.
	* Removed code that cleaned up mbox resources when mbox_cmpl
	  equals zero.
	* Removed free_irq from the error path of HBA initialization.
	* Added clearing of the fast lookup array for iocbs aborted from
	  the error attention handler.
	* Fixed 64-bit compilation warnings.
	* Added lock protection for posting unsolicited ELS events to the
	  discovery event list.

Changes from 20050113 to 20050118

	* Changed version number to 8.0.16.2
	* Check if mailbox completion routine is null inside dpc_done
	  function before calling completion routine.
	* Add call to lpfc_els_abort before freeing any ndlp object.
	* Add reset of of iocb iterator in the lpfc_els_abort function
	  after calling iocb completion function.
	* Add check if ndlp object is valid in PLOGI and PRLI completion
	  functions.
	* Clean up REG_LOGIN mailbox commands in the discovery event queue
	  before freeing ndlp.
	* Add fixes for lpfc_post_buffer and IOERR_RCV_BUFFER_WAITING
	  handling.
	* Moved error attention handling to dpc thread.
	* Changed calls to lpfc_sli_hba_down() so that locks are held.

Changes from 20041207 to 20050113

	* Changed version number to 8.0.16.1
	* Change lpfc_discovery_threads default to 32.
	* Fix comment for lpfc_cr_count. It defaults to 1.
	* lpfcLINUXfcp.c, lpfc_fcp.c: In sysfs_mbox_read(), don't do
	  anything for MBX_POLL, the lock is already held.
	* Remove usage of spin_locks within lpfc_issue_mbox() for the
	  MBX_POLL case. lpfc_issue_mbox() should be always be called with
	  locks held (or as is the case), for all "flags".
	* In MBX_POLL, we give up the lock, mdelay(i), and reacquire
	  lock. When we have threads beating us up with MBOX's and doing
	  things like f/w downloads, MBX_POLL can be called. This
	  unlocking/locking can create a window for nasty things to
	  happen. So change loop i and udelay instead without releasing
	  locks.
	* We are calling lpfc_disc_done() recursively from
	  lpfc_linkdown(), but list_for_each_entry_safe() is not safe for
	  such use.
	* Problem description: If the SCSI midlayer tries to recover from
	  an error on a lun while corresponding target is in in 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.
	* In lpfc_sli_handle_mb_event, if the mbox_cmpl ==
	  lpfc_sli_wake_mbox_wait , pmb->context1 points to a waitq. Do
	  not free the structure.
	* VPD info 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.
	* Release host lock and enable interrupts when calling
	  del_timer_sync().
	* In lpfc_sli_hba_down, if the mbox_cmpl ==
	  lpfc_sli_wake_mbox_wait , pmb->context1 points to a waitq. Do
	  not free the structure.
	* Fix leak of "host" in the error path.
	* Fixed wrong variable was typecasted in lpfc_fcp.c.
	* Remove some compilation warnings in lpfc_fcp.c.  This is
	  basically a patch from Christoph Hellwig - "%variables for %llx
	  format specifiers must be caste to long long because %(u)int64_t
	  can just be long on 64bit plattfo."
	* Bug fix for handling RSCN type 3 bug fix to terminate RSCN mode
	  properly after ADISC handling completes.
	* Fix potential discovery bug, nlp list corruption and potential
	  memory leak.
	* Change log message number from 324 to 326 in lpfc_sli.c.
	* Longer waits 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 wich assume lock being held were called without lock
	  and kernel complained about unlocking lock which is not locked.
	* Add code in linkdown to unreg if we know login session will be
	  terminated.
	* Removed automap config parameter fix up use_adisc logic to
	  include FCP2 devices.
	* Removed automap config parameter.
	* Implemented full VPD support.
	* Abort handler will try to wait for abort completion before
	  returning. Fixes some panics in iocb completion code path.
	* Changed version string to reflect a build # as 4th element (ex:
	  8.0.16.1).  Added _rh and _sl prefixes to version string for
	  RHEL, SLES respectively.
	* Reworked BUILD_FC_TRANS target => replaced with OS=<name>
	  target. Only valid names are OS=RHEL and OS=SLES. Make exits if
	  it is not specified (with an error message).
	* Renamed defines: FC_TRANS_VER1 -> RHEL_FC, FC_TRANS_265_BLKPATCH
	  -> SLES_FC
	* Removed FC_TRANS_VER2 code.

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 proble 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 accomodate 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.
	* Backround nodev_timeout processing to DPC This enables us to
	  unblock (stop dev_loss_tmo) when appopriate.
	* Fix array discovery with multiple luns.  The max_luns was 0 at
	  the time the host structure was intialized.  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 loosing 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 unecessary 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 it's 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 then 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 accomodate 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 emtpy 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 unsed 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 occurences 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: seperate nodev_tmo and els_retry_delay into 2
	  seperate 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 argment 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 it's 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

	* Change lpfc_config_port_prep() to interpret word 4 of the DUMP
	  mbox response as a byte-count
	* Add info attribute to sysfs
	* Minor formatting (spaces to tabs) cleanup in lpfc_sched.h
	* Remove unused log message number 732
	* Completing MODULE_PARM -> module_param changes
	* Removed unused targetenable module parameter
	* Removed locks from lpfc_sli_issue_mbox_wait routine
	* Removed code that retry 29,00 check condition
	* Removed code that manipulates rspSnsLen.
	* Fix use of lun-q-depth config param
	* Fix severity inconsistency with log message 249
	* Removed lpfc_max_target from lpfc_linux_attach
	* Replace references to lpfcDRVR.pHba[] with lpfc_get_phba_by_inst()
	* Change lpfc_param to lpfc-param
	* Partially removed 32 HBA restriction within driver.  Incorported
	  lpfc_instcnt, lpfc_instance[], and pHba[] into lpfcDRVR
	  structure Added routines lpfc_get_phba_by_inst()
	  lpfc_get_inst_by_phba() lpfc_check_valid_phba()
	* Turn on attributes "set" & "params" by default.
	* Further formatting/whitespace/line length cleanup on: lpfc_ct.c
	  lpfc_els.c lpfc_fcp.c lpfc_hbadisc.c lpfc_init.c lpfc_ipport.c
	  lpfc_mbox.c lpfc_nportdisc.c lpfc_sched.c lpfc_sched.h
	  lpfc_scsi.h lpfc_scsiport.c lpfc_sli.c and lpfc_sli.h
	* Add log message 249 to log any unsupported device addressing
	  modes encountered.
	* Add support for 256 targets and 256 LUNs
	* Fixed panic in lpfc_linkdown.
	* Removed (struct list_head*) casting in several calls to list_del
	* Free irq reservation and kill running timers when insmod or
	  modprobe are killed via ctrl-c
	* Remove drivers/scsi from include path
	* Wrap use of log message 311 in macro
	* Detect failure return from pci_map_sg call in lpfc_os_prep_io
	* Fix use-after-free of IOCB in lpfc_sli_process_sol_iocb which
	  was causing an Oops on 2.6.5 kernel.
	* Cleanup use of several gotos not used for error exit.
	* Replace memcpy_toio() and memcpy_toio() with endian-dependent
	  lpfc_memcpy_to_slim() and lpfc_memcpy_from_slim() so that for
	  big endian hosts like PPC64, the SLIM is accessed 4 bytes at a
	  time instead of as a byte-stream.

Changes from 20040409 to 20040416

	* The scsi_register and scsi_alloc_host OS calls can fail and
	  return a zero-valued host pointer.  A ctrl-C on 2.6 kernels
	  during driver load will cause this and the driver to panic.
	  Fixed this bug.  Also found a bug in the error_x handling with
	  lpfc_sli_hba_down - it was in the wrong place and the driver
	  lock was not held, but needed to be (in lpfc_linux_attach) Fixed
	  both.  Did some minor comment clean up.
	* Removed unwanted (void *) castings.
	* Replace define of INVALID_PHYS, with kernel 2.6.5's
	  dma_mapping_error() and add a inline function for earlier
	  kernels.  Remove lpfc_bad_scatterlist().
	* Clean up formatting in hbaapi.h, lpfc.h, lpfc_cfgparm.h,
	  lpfc_crtn.h, lpfc_ct.c, lpfc_diag.h, lpfc_disc.h, lpfc_els.c,
	  lpfc_fcp.c, lpfc_hbadisc.c, lpfc_hw.h, lpfc_init.c,
	  lpfc_ipport.c, lpfc_logmsg.c, lpfc_logmsg.h and lpfc_scsiport.c
	  - mostly replacing groups of 8 spaces with hard tabs and keeping
	  lines to 80 column max..
	* Removed LPFC_DRVR_LOCK call from lpfc_unblock_requests for 2.4
	  kernels.  The lpfc_scsi_done routine already unlocks the driver
	  lock since it expects this lock to be held.
	* Removed global lock capabilities from driver lock routines
	* Remove SA_INTERRUPT flag from request_irq
	* Move dma_addr_t cast inside of getPaddr macro as everywhere
	  getPaddr is used, the return is cast to dma_addr_t.
	* Clean up formatting in lpfc_sli.c and lpfc_sysfs.c - mostly
	   replacing groups of 8 spaces with hard tabs and keeping lines
	   to 80 column max.
	* Fix build for RHEL 2.1 BOOT kernels by always #including
	  interrupt.h in lpfc.h.
	* Fix RHEL 3 build by #defining EXPORT_SYMTAB.
	* Replace sprintf with snprintf in lpfc_proc_info.
	* Fix build warnings on 2.6 kernels - remove no longer used calls
	  to  character device initialization.
	* Initial support code for discovery in tasklet conversion.
	* Removing char interface and ioctl code.
	* Change all elx prefixes to lpfc
	* Replace lpfc_write_slim() & lpfc_read_slim() with memcpy_toio(),
	  memcpy_fromio(), writel() & readl().

Changes from 20040402 to 20040409

	* Replaced lpfc_read_hbaregs_plus_offset and
	  lpfc_write_hbaregs_plus_offset functions with readl and writel.
	* Get rid of long mdelay's in insmod path
	* Changed the way our pci_device_id structures are initialized
	* Replace lpfc_read/write_CA/HA/HC/HS with calls to readl() &
	  writel() directly.
	* Increase SLI2_SLIM to 16K Increase cmd / rsp IOCBs accordingly
	* Removed lpfc_els_chk_latt from the lpfc_config_post function.
	  lpfc_els_chk_latt will enable the link event interrupts when
	  flogi is pending which causes two discovery state machines
	  running parallely.
	* Add pci_disable_device to unload path.
	* Move lpfc_sleep_event from lpfc_fcp.c to lpfc_util_ioctl.c
	* Call dma_map_single() & pci_map_single() directly instead of via
	  macro lpfc_pci_map().  Allow address 0 for PPC64.
	* Change sleep to uninterruptible in lpfc_sli_issue_icob_wait
	  because this function doesn't handle signals.
	* Move lpfc_wakeup_event from lpfc_fcp.c to lpfc_ioctl.c
	* Remove unneeded #include <linux/netdevice.h>
	* Remove unused clock variables lpfc_clkCnt and lpfc_sec_clk.
	* Get rid of capitalization of function names.
	* Removed lpfc_addr_sprintf.
	* Implemented gotos in lpfc_linux_attach for error cases.
	* Replace mlist->dma.list = dmp->dma.list; to mlist = dmp.
	* Remove functions lpfc_get_OsNameVersion and elx_wakeup. Change
	  elx_wakeup to wake_up_interruptible
	* Add function lpfc_get_os_nameversion and change
	  lpfc_get_OsNameVersion to lpfc_get_os_nameversion.
	* Remove lpfc_get_OsNameVersion
	* Change driver name to a consistent lpfc in every visible place.
	* Fix build warning: removed unused variable ret in lpfc_fdmi_tmo.
	* Remove lpfc_utsname_nodename_check function
	* Remove functions lpfc_register_intr and lpfc_unregister_intr
	* Fill in owner field in lpfc_ops file_operations struct and
	  remove now unnecessary open and close entry points.
	* Change function name prefixes from elx_ to lpfc_
	* Remove special case check for TUR in elx_os_prep_io()
	* Renamed elx_scsi.h to lpfc_scsi.h
	* Renamed elx_sched.h to lpfc_sched.h
	* Renamed elx_mem.h to lpfc_mem.h
	* Renamed elx_sli.h to lpfc_sli.h
	* Renamed elx_logmsg.h to lpfc_logmsg.h
	* Renamed elx.h to lpfc.h
	* Renamed elx_sli.c to lpfc_sli.c
	* Renamed elx_sched.c to lpfc_sched.c
	* Renamed elx_mem.c to lpfc_mem.c
	* Renamed elx_logmsg.c to lpfc_logmsg.c
	* Renamed lpfcLINUXfcp.c lpfc_fcp.c
	* Renamed elx_clock.c to lpfc_clock.c
	* Reduce stack usage in lpfc_info().
	* Move lpip_stats structure from lpfc_hba.h to lpfc_ip.h.
	* Move lpfc_stats and HBAEVT_t structures from lpfc_hba.h to
	  lpfc.h
	* Remove lpfc_hba.h
	* Remove duplicate rc definitions from 
	* Removed code which used next pointer to store mbox structure.
	* Cleaned up list iterations.
	* Removed non list manipulation of the next pointers.
	* Change list_del()/INIT_LIST_HEAD sequences to list_del_init()
	* In ELX_IOCBQ_t: Moved hipri_trigger field to iocb_flag. Combined
	  hipri_wait_queue and rsp_iocb in union
	* Replaced casting from list_head with list_entry macro.
	* Added ct_ndlp_context field to the ELX_IOCBQ_t.
	* Do not use DMABUf_t list to store ndlp context
	* Return 0 from lpfc_process_iotcl_util() when ELX_INITBRDS
	  succeeds.
	* remove elx_os_scsiport.h
	* Do not use DMABUf_t list to hold rpi context
	* Replace elx_cfg_* names with lpfc_cfg-*
	* Moved FCP activity to ring 0.  Moved ELS/CT activity to ring 2.
	* Clean up formatting of elx_sli.h (tabs for indents, 80 column
	  lines).
	* Remove unused elxclock declaration in elx_sli.h.
	* Since everywhere IOCB_ENTRY is used, the return value is cast,
	  move the cast into the macro.
	* Split ioctls out into seperate files

Changes from 20040326 to 20040402

	* Updated ChangeLog for 20040402 SourceForge drop.
	* Use safe list iterator for ndlp list
	* Added code to return NLP_STE_FREED_NODE from the discovery
	  state machine functions if the node is freed from the
	  function.
	* Fixes to DMABUF_t handling
	* Fix for load error in discovery
	* Remove loop_cnt variable from lpfc_rcv_plogi_unused_node.
	* Remove nle. reference.
        * Remove support for building 2.4 drivers
	* Remove elx_util.h and replace elx_disc.h with lpfc_disc.h
	* Implemented the Linux list macros in the discovery code.
	  Also moved elx_disc.h contents into lpfc_disc.h
	* Unused variable cleanup
	* Use Linux list macros for DMABUF_t
	* Break up ioctls into 3 sections, dfc, util, hbaapi
	  rearranged code so this could be easily seperated into a
	  differnet module later All 3 are currently turned on by
	  defines in lpfc_ioctl.c LPFC_DFC_IOCTL, LPFC_UTIL_IOCTL,
	  LPFC_HBAAPI_IOCTL
	* Misc cleanup: some goto's; add comments; clarify function
	  args
	* Added code to use list macro for ELXSCSITARGET_t.
	* New list implementation for ELX_MBOXQ_t
	* Cleaned up some list_head casting.
	* Put IPFC ifdef around two members of struct lpfc_nodelist.
	* Cleaned up iocb list using list macros and list_head data
	  structure.
	* lpfc_online() was missing some timer routines that were
	  started by lpfc_linux_attach().  These routines are now also
	  started by lpfc_online().  lpfc_offline() only stopped
	  els_timeout routine.  It now stops all timeout routines
	  associated with that hba.
	* Replace seperate next and prev pointers in struct
	  lpfc_bindlist with list_head type.  In elxHBA_t, replace
	  fc_nlpbind_start and _end with fc_nlpbind_list and use
	  list_head macros to access it.
	* Fix ulpStatus for aborting I/Os overlaps with newer firmware
	  ulpStatus values
	* Rework params_show/store to be consistent as the other
	  routines.  Remove generic'ness and rely on set attribute.
	* Remove unused log message.
	* Collapse elx_crtn.h and prod_crtn.h into lpfc_crtn.h
	* Ifdef Scheduler specific routines
	* Removed following ununsed ioclt's: ELX_READ_IOCB
	  ELX_READ_MEMSEG ELX_READ_BINFO ELX_READ_EINVAL ELX_READ_LHBA
	  ELX_READ_LXHBA ELX_SET ELX_DBG LPFC_TRACE 
	* Removed variable fc_dbg_flg
	* Fixed a bug where HBA_Q_DEPTH was set incorrectly for
	  3-digit HBAs.  Also changed can_queue so midlayer will only
	  send (HBA_Q_DEPTH - 10) cmds.
	* Clean up code in the error path, check condition.  Remove
	  ununsed sense-related fields in lun structure.
	* Added code for safety pools for following objects: mbuf/bpl,
	  mbox, iocb, ndlp, bind
	* Wrapped '#include <elx_sched.h>' in '#ifdef USE_SCHEDULER'.
	* Fixed 'make clean' target.
        * Build now ignores elx_sched.o, and includes lpfc_sysfs.o.
	* Wrapped lpfndd.o target in BUILD_IPFC ifdef.
	* Removed elx_os.h inclusion in implementation files.
	* Removed ELX_OS_IO_t data structure and put data direction
	  and non scatter/gather physical address into the scsi buffer
	  structure directly.  Moved DRVR_LOCK, putPaddr, getPaddr
	  macros and some defines into elx.h since they are required
	  by the whole driver.
	* Migrated following ioctls (debug) ELX_DISPLAY_PCI_ALL
	  ELX_DEVP ELX_READ_BPLIST ELX_RESET_QDEPTH ELX_STAT.
	* Step 1 of attempt to move all Debug ioctls to sysfs.
	  Implemented the following IOCTLs in sysfs: ELX_WRITE_HC
	  ELX_WRITE_HS ELX_WRITE_HA ELX_WRITE_CA ELX_READ_HC
	  ELX_READ_HS ELX_READ_HA ELX_READ_CA ELX_READ_MB ELX_RESET
	  ELX_READ_HBA ELX_INSTANCE ELX_LIP.  Also introduced
	  attribute "set" to be used in conjuction with the above
	  attributes.
	* Removed DLINK, enque and deque declarations now that clock
	  doesn't use them anymore
	* Separated install rule so that BUILD_IPFC has to be set when
	  make is called in order for the install rule to attempt to
	  copy the lpfndd.o driver.  This change fixes a bug that
	  occurs because the install rule by default attempted to
	  install lpfndd.o, whereas the default make rule did not by
	  default build lpfndd.o.
	* Keep track if hbaapi index numbers need to be refreshed.
	* Removed prod_os.h from include list.
	* Removed LPFC_LOCK and LPFC_UNLOCK macros.  Added OS calls
	  into elx_os_scsiport.c.  This file is now empty.
	* Added spin_lock_irqsave and spin_unlock_irqrestore calls
	  into code directly and removed LPFC_LOCK_ and _UNLOCK_
	  macros
	* Remove references to "elx_clock.h"
	* Added utsname.h to include list.  The previous checkin to
	  elx_os.h removed its inclusion of utsname.h since there is
	  precious little in the file.  However, lpfcLINUXfcp.c needs
	  it and now has it.
	* Removed some commented-out code
	* Removed elx_lck_t data structure, stray elxDRVR_t type, and
	  include from file.  No longer used.
	* Removed two PCI Sync defines.  Removed includes - not
	  needed.  Cleaned up macro lines.
	* Added two functions from elxLINUXfcp.c.  These functions
	  were IPFC specific.
	* Removed hipri lock abstractions and added OS call into code.
	  Removed elx_lck_t and added spinlock_t directly. Moved two
	  IPFC functions into lpfc_ipport.c
	* Moved IP specific structures to lpfc_ip.h file.
	* lpfc_ipfarp_timeout() uses system timer.  Remove all usages
	  of old internal clock support.
	* Made changes to compile without IPFC support for the default
	  build.  Added ifdef IPFC for all lpfc_ip.h includes.
	* Patched elx_free_scsi_buf
  	* Removed elx_sched.o from 2.6 dependencies
	* Reworked lpfc_pcimap.
	* Use Linux swap macros to replace ELX swapping macros
	  (SWAP_SHORT, SWAP_LONG, SWAP_DATA, SWAP_DATA16,
	  PCIMEM_SHORT, PCIMEM_LONG, PCIMEM_DATA).
	* move in_interrupt() check inside of elx_sleep_ms()
	* Moved location of pci.h include.
	* Restored elx_lck_t types in elxHBA_t.
	* Removed elx_pci_dma_sync call.  Also removed some PCI
	  defines from elx_hw.h and removed the spinlock_t locks that
	  are no longer used in elx.h
	* elx_iodone() now uses system timer.
  	* elx_qfull_retry() now uses system timer.
	* lpfc_put_buf(), lpfc_ip_xri_timeout() and
	  lpfc_ip_timeout_handler() now use system timer.
	* lpfc_fdmi_tmo() and lpfc_qthrottle_up() now use system
          timer.
	* Removed num_bufs and num_iocbs configuration parameters.
	* Fixed a memory corruption bug. This was caused by a memory
	  write to ndlp structure from lpfc_cmpl_els_acc function.
	  This ndlp structure was freed from lpfc_els_unsol_event.
	* lpfc_disc_timeout() and lpfc_establish_link_tmo() now use
	  system timer.  Also update lpfc_els_retry_delay() to do a
	  single lock release at the end.
	* Remove use of PAN (pseudo adapter number).
	* Reintroduced usage of the cross compiler for building on
	  ppc64 to remove build errors that were cropping up when
	  using the standard gcc compiler.
	* Fix no-unlock-before return in lpfc_els_retry_delay which was
	  causing  a deadlock on insmod in some environments.
	* Minor format changes fix up comments
	* Create utility clock function elx_start_timer() and
	  elx_stop_timer().  All timeout routines now use these common
	  routines.
	* Minor formating changes fix up comments
	* Minor formatting changes get rid of failover defines for
	  syntax checking
	* Minor formatting changes remove ISCSI defines.
	* Fix typo in install target for 2.4 kernels.
	* Removed unused elx_scsi_add_timer extern function
	  declaration.
	* Cleanup casting around DMA masks.
	* Comment out lpfndd.o modules_install section as lpfndd.o is
	  not generated if CONFIG_NET_LPFC is not set. Also refer to
	  BASEINCLUDE only in out of kernel source module builds as it
	  will not exist otherwise.
	* Removed unused malloc counters from lpfcLINUXfcp.c.
	* Remove some unnecessary #includes in lpfcLINUXfcp.c
	* Remove unncessary #includes in elxLINUXfcp.c
	* Minor formatting cleanups in Makefile to avoid some
          linewrapping.
	* Removed unused elx_mem_pool data structure.
	* Remove several unnecessary #includes.
	* Moving fix for memory leak in ioctl lip area to sysfs's lip.
	* Removed unused elx_dma_handle_t elx_acc_handle_t
	  FC_MAX_SEGSZ and FC_MAX_POOL.
	* Rewrite of Makefile. Fixes breakages with make -j4 during
	  kernel compile. Does not recompile all files on every
	  build. Uses the kernel build's definitions of CFLAGS,
	  MODFLAGS etc. Removed "make rpm" option.
	* Removed unused #defines CLOSED, DEAD, OPENED, NORMAL_OPEN
	  and unneeded #include of elx_sched.h in elx.h.
	* Several log message updates
	* Add PCI_DEVICE_ID_FIREFLY for LP6000
	* Fixed known issues in 20040326: driver crashes on rmmod in
	  both 2.4 and 2.6 kernels
	

Changes from 20040319 to 20040326

	* Updated ChangeLog for 20040326 SourceForge drop.
	* remove lpfc_isr / lpfc_tmr logic fixed up 8 spaces from
	  previous checkins with tabs
	* replace elx_in_intr() with in_interrupt()
	* Remove unused messages 1602 and 1603.
	* Fix the following issues with log messages: Remove unused
	  messages 406, 407, 409, 927, 928, 1201, 1202, 1204, 1205, 1206
	  and 1207.  Create a new message 738 to fix duplicate instances
	  of 736.
	* Removed remaining pci interface abstractions from elxLINUXfcp.c.
	  Implemented OS calls directly in all remaining files and cleaned
	  up modules.  Removed prototypes as well.
	* Removed following functions/structures elx_mem_dmapool
	  elx_idx_dmapool elx_size_dmapool elx_kmem_lock dfc_data_alloc
	  dfc_data_free dfc_mem struct mbuf_info elx_acc_handle_t
	  data_handle elx_dma_handle_t dma_handle struct elx_memseg
	  MEMSEG_t
	* lpfc_els_timeout_handler() now uses system timer.
	* Further cleanup of #ifdef powerpc
	* lpfc_scsi_timeout_handler() now uses system timer.
	* Replace common driver's own defines for endianess w/ Linux's
	  __BIG_ENDIAN etc.
	* Added #ifdef IPFC for all IPFC specific code.
	* lpfc_disc_retry_rptlun() now uses system timer.
	* lpfc_npr_timeout() now uses system timer.
	* Modified detect code, on insmod, to only wait a max of 2 secs if
	  link comes up and there are no devices.
	* Move remaining message logging functions into
	  elx_logmsg.c/elx_logmsg.h.
	* Added code to clear link attention bit when there is a pending
	  link event and the memory allocation for read_la mail box
	  command fails.
	* Removed function calls for mapping bar registers and allocating
	  kernel virtual memory mappings to the mapped bars Removed
	  prototypes, lpfc_driver_cache_line, and pci_bar1_map rename to
	  pci_bar2_map.
	* Allocate mbox only if the hba_state is in ready state.
	* Complete lip support via sysfs. To lip, echo brdnum >
	  /sys/bus/pci/drivers/lpfc/lip.
	* moving sysfs show/store implementations to lpfc_sysfs.c. Also add
	  support for lip.
	* Add files: lpfc_sysfs.c, lpfc_sysfs.h
	* move LPFC_DRIVER_NAME and LPFC_MODULE_DESC out of lpfcLINUXfcp.c
	  to lpfc_version.h, since it is now needed in lpfc_sysfs.c
	* elx_mbox_timeout now uses system timer
	* Changed lpfc_nodev_timeout, lpfc_els_retry_delay and
	  lpfc_linkdown_timeout to use the system timer instead of
	  internal clock support.
	* Move remaining message logging functions in elx_util.c to
	  elx_logmsg.c.
	* Remove some unnecessary typecasting.
	* Remove log message that is no longer used (was used by
	  elx_str_atox).
	* Replaced DLINK_t and SLINK_t by standard Linux list_head
	* Removed deque macro
	* Replaced ELX_DLINK_t ans ELX_SLINK_t by Linux struct list_head
	  (except for clock)
	* Removed following functions from code: linux_kmalloc linux_kfree
	  elx_alloc_bigbuf elx_free_bigbuf
	* Removed following abstract functions from the code.  elx_malloc
	  elx_free elx_ip_get_rcv_buf elx_ip_free_rcv_buf
	  elx_mem_alloc_dmabuf elx_mem_alloc_dmabufext elx_mem_alloc_dma
	  elx_mem_alloc_buf lpfc_bufmap
	* Removed custom PCI configuration #defines and replaced with
	  OS-provided #defines. Also added linux/pci.h to *.c files.
	* Remove elx_str_ctox.	Replace elx_str_atox with sscanf.
	* Many indentation/whitespace fixes.
	* Replace elx_str_ctox with isxdigit where it was only used to
	  check the value of a character.
	* Removed following functions from the code.  elx_kmem_free
	  elx_kmem_alloc elx_kmem_zalloc
	* Change use of 2.4 SCSI typedef Scsi_Host_Template to	struct
	  scsi_host_template for 2.6 kernels.
	* Change use of 2.4 SCSI typedefs (Scsi_Device, Scsi_Cmnd,
	  Scsi_Request) the their real struct names.
	* Move 2.6 compatibility irqreturn definitions to lpfc_compat.h.
	  Protect these definitions from conflicting with similar ones in
	  later 2.4 kernels.
	* Remove unused definitions: LINUX_TGT_t, LINUX_LUN_t,
	  LINUX_BUF_t, elx_lun_t, SET_ADAPTER_STATUS.
	* Convert pci_ calls to linux 2.6 dma_ equivalents.
	* Removed unused types: struct buf, struct sc_buf, T_SCSIBUF
	  typedef.
	* Fix Makefile so that 2.4 drivers don't always rebuild all files.
	* Remove unused _static_ and fc_lun_t definitions.
	* Cleaned up some memory pool implementation code.
	* Fix panic with char dev changes. Turns out that 2.6.4 code does
	  the same in kernel space with the 2.4 interface style
	  definitions. So remove the new char dev code altogether.
	* Remove typecasting from fc_get_cfg_param and consolidate
	  multiple instances of the parameter switch into a single
	  instance.
	* Use lpfc_is_LC_HBA() macro that tests pcidev->device directly
	  instead of saving a private copy that undergoes varied shifting
	  & casting.
	* Removed usage of all memory pools.

Changes from 20040312 to 20040319
	
	* Use dev_warn instead of printk for 2.6 kernels
	* Correct Iocbq completion routine for 2.6 kernel case
	* Change void *pOSCmd to Scsi_Smnd *pCmd
	* Change void *pOScmd to struct sk_buff *pCmd
	* Remove data directon code.
	* Removed memory pool for buf/bpl buffers and use kmalloc/kfree
	  pci_pool_alloc/free directly.
	* Move PPC check for DMA address 0 in scatter-gather list, into
	  lpfc_compat.h
	* Always use pci_unmap_single() instead of pci_unmap_page()
	* Clean up the 2.6 vs 2.4 #if blocks.
	* Conditionalize Scheduler
	* Add a comment to explain a little what the first Makefile
	  section does.
	* Removed lpfc_intr_post
	* Sysfs new display format. Also added write functionality. You
	  can [ echo "0 log_verbose 3" >
	  /sys/bus/pci/drivers/lpfc/params]. Hex support yet to be added.
	* Removed several #ifdef powerpc, including for a discovery issue
	  in lpfc_ValidLun()
	* Change elx_printf_log to use vsprintf.
	* Added lpfc_compat.h provides macros to aid compilation in the
	  Linux 2.4 kernel over various platform architectures.  Initially
	  support mapping to a DMA address.
	* Removed memory pool for nlp/bind buffers and use kmalloc/kfree
	  directly.
	* Removed memory pool for iocb buffers and use kmalloc/kfree
	  directly.
	* Removed memory pool for mailbox buffers and use kmalloc/kfree
	  directly.
	* Cleaned up back and forth casts
	* Initial support for sysfs for 2.6 kernel.
	* Changed elx_dma_addr_t to dma_addr_t
	* Fix a 2.6 kernel check to be >= 2.6.0 instead of > (was missing
	  2.6.0).
	* Remove elx_printf and elx_str_sprintf. Replace elx_print with
	  printk.
	* Replace elx_printf with printk.
	* Replace elx_str_sprintf with sprintf.
	* Removed the mem_lock, its prototype, function, macro, and
	  iflags.
	* Use kmalloc/kfree for ELX_SCSI_BUF_t
	* Use linux pci_pools for SCSI_DMA_EXT
	* Use linux pci_pools for BPLs.
	* Minor cleanup of DFC args for PPC64.
	* Several small indentation cleanups.
	* New Linux 2.6 style of char device registration.
	* Migrated members of LPFCHBA_t and LINUX_HBA_t into elxHBA_t
	* Use strcpy, strncmp, isdigit, strlen instead of abstractions
	* Cleanup of driver_template.
	* Facilitate compile time turn on/off of lpfc_network_on.
	* Split large source files into smaller, better named ones.

Changes from 2.10a to 20040312

	* Fix build for 2.4 kernels
	* Move driver version macros into lpfc_version.h file.
	* Fixed data miscompare with LIP.
	* Removed elx_sli, elx_ioc, elx_disc, elx_sch routines,
	  prototypes, and reference points.
	* Correct the space insertions with hardtabs
	* Remove routine call pointers in ELX_SLI_INIT_t struct.
	* Removed module locks except for drvr, mem, and clock.
	* Removed unused module locks from sourcebase. Kept drvr_lock,
	  mem_lock, and clock_lock.
	* Change NULL to 0
