Linux MPT Driver Release Notes
mptlinux-3.13.04.00
07/01/2008

Compatibility:
	53C1020, 53C1030
	FC909, FC919, FC929
	FC919X, FC929X, FC929XL, FC939X, FC949X, FC949ES
	SAS 1064, 1068
	SAS 1064E, 1068E, 1078

Special Notes For This Build:
	No special notes available at this time.
	Files that are generated as a result of a build will contain this configuration in their file names: 3.12.xx.yy-N, where 3.12.xx.yy is the driver version number.  The N portion is a build identifier.  Usually, this will be -1, indicting this is the first build for this driver version.  If subsequent builds are necessary for the same driver version, the build identifier will be bumped by one (-2, -3, etc).  When that occurs, the specifics of the build change will be described in the driver version listed below.


 
Current Errata

	There is a problem in SLES9 SP4 OS installer which prevents the MPT Linux Driver DUD getting loaded successfully. Novell has provided a patch for this in kernel-update-tool RPM. The end user may need to have the patch installed dynamically before using the MPT Fusion DUD. A better Work around is to install the OS using built-in drivers, then upgrade to newer driver using the RPM.

	SLES9, and all Service Packs prior to SP2 - Driver Update Disk installs dont work when installing from CDROM attached to SAS controller. Work around is to install the OS using built-in drivers, then upgrade to newer driver using the RPM. This work around only applies to SP2, as this was the first time SAS support shipped on the distro. In addition, this issue no longer is a problem for SP3, as SP3 distro ships with split drivers, and there are no more work arounds for migrating from monolithic to split drivers, which is what broke the CDROM installation support

	The isense.ko driver
o	This driver has been removed. To enable the printing of sense data that is available in the kernel do the following:
sysctl w dev.scsi.logging_level=0x1000

	Red Hat RHEL 4  Driver Update Disk
o	When doing a Driver Update Disk Installation, at the first screen, enter:
linux dd updates
This replaces workaround in previous versions of the driver when running the post_install.scr.  The updates signifies an anaconda update disk. This script handles copying mptctl.ko and mptlan.ko to the hard disk.

	RHEL4 Update 3 (only) - When doing an install using a Driver Update Disk, the customer will need to follow up the install by installing our Driver Update RPM
o	With Update 3, we provided split driver modules (mptspi, mptsas, mptfc).  Six months ago Red Hat requested we add a new dummy driver who's purpose is to auto-load the split drivers. This dummy driver is named the same as an existing driver module called mptscsih. This new dummy driver has broken DUD's from working properly. The problem occurs when the installer expects the dummy driver, however it doesn't exist on the floppy; e.g - we never introduced the dummy driver concept to our internal driver stream. To correct this, the object file on the DUD was renamed from mptscsih.ko to mptscsi.ko.  This fixes the problem, however may introduce confusion to the end customer. To prevent future confusion, we ask customers install the driver update RPM after the installation and reboot. 
o	Red Hat is working to fix their issue, but it is not expected until Update 5 or later.

	Driver Update RPM 
o	When upgrading from an older to newer version of the driver, first uninstall the older RPM doing:
rpm e mptlinux-<version>-<os>

Then install the new rpm doing:
rpm ivh mptlinux-<version>-<release>-<os>.<arch>.rpm

The rpm Uvh option was fixed in the 3.02.56 drivers version.  This rpm option will work if oldest version driver on the system is no older than the 3.02.56 driver.

Driver Release Package Contents

Source tarball
Source tarball is named as:
mptlinux-<version>-src.tar.gz
Full driver source suitable for inclusion with any publicly available kernels.  The flash utility is included in the utils/ subdirectory. 

RPM package
RPM images are named as:
mptlinux-<version>-<release>-<os>.<arch>.rpm
where:
	<version>	=	version tag for this rpm
	<release>	=	release tag for this rpm
	<os>		=	{rhel4, sles9, sles9sp1, sles9sp2, sles9sp3, nld9}
	<arch>	=	ia64 - Itanium Processor
	  		x86_64 - Opteron Processor, w/ x86_64 install
i686 - i686 or later processor (Red Hat)
	  		i586 - x86 installations (SuSE)
ppc64 - PowerPC

 
SuSE:

i686
	SLES 9
		Gold (2.6.5-7.97)	(kernel-default, kernel-smp,kernel-bigsmp)
		NLD9 (2.6.5-7.111)	(kernel-default, kernel-smp,kernel-bigsmp)
		SP1 (2.6.5-7.139)	(kernel-default, kernel-smp,kernel-bigsmp)	
		SP2 (2.6.5-7.191)	(kernel-default, kernel-smp,kernel-bigsmp)	
		SP3 (2.6.5-7.244)	(kernel-default, kernel-smp,kernel-bigsmp)
		SP4 (2.6.5-7.308)	(kernel-default, kernel-smp,kernel-bigsmp)

		KMP
			Gold (2.6.5-7.97)	rpm	src.rpm
			NLD9 (2.6.5-7.111)	rpm	src.rpm
			SP1 (2.6.5-7.139)	rpm	src.rpm
			SP2 (2.6.5-7.191)	rpm	src.rpm
			SP3 (2.6.5-7.244)	rpm	src.rpm
			SP4 (2.6.5-7.308)	rpm	src.rpm

x86_64	
	SLES9
		Gold (2.6.5-7.97)	(kernel-default, kernel-smp) 		
		SP1 (2.6.5-7.139)	(kernel-default, kernel-smp)		
		SP2 (2.6.5-7.191)	(kernel-default, kernel-smp)			
		SP3 (2.6.5-7.244)	(kernel-default, kernel-smp)			
		SP4 (2.6.5-7.308)	(kernel-default, kernel-smp)			

		KMP
			Gold (2.6.5-7.97)	rpm	src.rpm
			SP1 (2.6.5-7.139)	rpm	src.rpm
			SP2 (2.6.5-7.191)	rpm	src.rpm
			SP3 (2.6.5-7.244)	rpm	src.rpm
			SP4 (2.6.5-7.308)	rpm	src.rpm

ia64
	SLES9
		Gold (2.6.5-7.97)	(kernel-default, kernel-64k-pagesize, kernel-sn2)   
		SP1 (2.6.5-7.139)	(kernel-default, kernel-64k-pagesize, kernel-sn2)	   			SP2 (2.6.5-7.191)	(kernel-default, kernel-64k-pagesize, kernel-sn2)	   
		SP3 (2.6.5-7.244)	(kernel-default, kernel-64k-pagesize, kernel-sn2)	   
		SP4 (2.6.5-7.308)	(kernel-default, kernel-64k-pagesize, kernel-sn2)	   

ppc64	
	SLES9
		Gold (2.6.5-7.97)	(pseries64) 		
		SP1 (2.6.5-7.139)	(pseries64)		
		SP2 (2.6.5-7.191)	(pseries64)			
		SP3 (2.6.5-7.244)	(pseries64)			
		SP4 (2.6.5-7.308)	(pseries64)			

		KMP
			Gold (2.6.5-7.97)	rpm	src.rpm
			SP1 (2.6.5-7.139)	rpm	src.rpm
			SP2 (2.6.5-7.191)	rpm	src.rpm
			SP3 (2.6.5-7.244)	rpm	src.rpm
			SP4 (2.6.5-7.308)	rpm	src.rpm


RedHat:

i686
	RHEL4
		Gold (2.6.9-5.EL) 	 (normal, hugemem, smp)	DUD
		U1 (2.6.9-11.EL) 	 (normal, hugemem, smp)	DUD	
		U2 (2.6.9-22.EL) 	 (normal, hugemem, smp)	DUD
		U3 (2.6.9-34.EL) 	 (normal, hugemem, smp)	DUD
		U4 (2.6.9-42.EL) 	 (normal, hugemem, smp)	DUD
		U5 (2.6.9-55.EL) 	 (normal, hugemem, smp)	DUD
		U6 (2.6.9-67.EL) 	 (normal, hugemem, smp)	DUD

x86_64	
	RHEL4
		Gold (2.6.9-5.EL) 	(normal, smp)			DUD
		U1 (2.6.9-11.EL) 	(normal, smp)			DUD
		U2 (2.6.9-22.EL) 	(normal, smp)			DUD
U3 (2.6.9-34.EL) 	(normal, smp, largesmp)	DUD			
U4 (2.6.9-42.EL) 	(normal, smp, largesmp)	DUD		
U5 (2.6.9-55.EL) 	(normal, smp, largesmp)	DUD		
U6 (2.6.9-67.EL) 	(normal, smp, largesmp)	DUD		


ia64	
	RHEL4
		Gold (2.6.9-5.EL) 	(normal)			DUD
		U1 (2.6.9-11.EL) 	(normal)			DUD	
		U2 (2.6.9-22.EL) 	(normal)			DUD
		U3 (2.6.9-34.EL) 	(normal, largesmp)		DUD
		U4 (2.6.9-42.EL) 	(normal, largesmp)		DUD	
		U5 (2.6.9-55.EL) 	(normal, largesmp)		DUD
		U6 (2.6.9-67.EL) 	(normal, largesmp)		DUD

ppc64	
	RHEL4
U3 (2.6.9-34.EL) 	(normal, largesmp)		DUD		
U4 (2.6.9-42.EL) 	(normal, largesmp)		DUD		
U5 (2.6.9-55.EL) 	(normal, largesmp)		DUD
U6 (2.6.9-67.EL) 	(normal, largesmp)		DUD




Major Changes For Version 3.13.04.00-1
Release Date:  07/01/2008

Defect fixes

	SCGCQ00019660: When the diag reset is issued through lsitutil, the driver is not clearing the pending I/O requests and hence the requests got timed out and leads to error recovery. The error recovery actions  may lead to offlining of the device. Also the message frame allocated for event notification is not released when the diag reset is issued which leads to failure of message frame allocation after N number of diag resets. Both the issues are fixed in this version of the driver.
	SCGCQ00020608: When the diag reset are reset through SCSI mid layer is issued, the driver will refresh its device topology and in the refresh routine the driver will compare the devices in firmware entry with the devices in the drivers local inventory using the sas_device_page0 data and if there is a difference, then the driver will add or delete the devices into its local inventory. While doing this the logical volumes has to be exempted because there will not be any associated entry for them in the firmware in the sas_device_page0. But the earlier versions of driver were comparing the logical volumes too and since it couldnt find a sas_device_page0 for volumes, it marks the volumes as deleted and returns all further I/O requests with the Failed status indicating device not connected. This version fixes this by exempting logical volumes from the comparision.



Major Changes For Version 3.13.03.00-1
Release Date:  6/18/2008

General Changes
Functionality

General Changes
Functionality
	The HARDRESET IOCTL is modified to reset the firmware through diagnostic register instead of issuing MESSAGE_UNIT_RESET
	When issuing of task management function fails, The softreset handler will be executed instead of firmware reset.
	All supporting code for LAN has been removed.  This is a cosmetic change to remove unused code.
	The RHEL DUD is splitted based on the updates
	New DKMS framework is used to create dkms binaries.


Defect fixes
	When the probe routines exits early, there was no cleanup for that allocated scsi_host structure. Which creates panic if /proc/scsi is accessed after unloading the driver. This is fixed in this release.
	Cleaned up redundant PCI resource allocations.


Major Changes For Version 3.13.02.00-1
Release Date:  4/17/2008

General Changes
Functionality
	All supporting code for LAN has been removed.  This is a cosmetic change to remove unused code.
Defect fixes
	None.
	

Major Changes For Version 3.13.01.00-1
Release Date:  4/14/2008

General Changes
Functionality
	Code has been added to determine the amount of memory the system has.  If there is less that 4 GB of memory, all Scatter/Gather (SG) addresses can be contained in 32 bits, regardless of the machine type (32 bit or 64 bit).  This increases the number of SG entries in each Message Frame and the number of SG entries in each Chain Buffer.  The driver determines the maximum number of SGs needed per IO from the sg_tablesize value and adjusts the number of Chain Buffers needed for the maximum number of IOs possible (can_queue), allocating memory from that calculation.  For instance, the allocation of memory for Chain Buffers was reduced from 284,592 to 157,696 on a 64 bit machine with less than 4 GB of memory (example is for a SAS 1068 with sg_tablesize=128 and can_queue=127), a 43% reduction of memory needed for Chain Buffers for the same IO capability.  This reduction of memory allocation is per Host Adapter controlled by the driver; with several Host Adapters, the memory savings multiply rapidly.
	In addition, large IO performance is improved, since fewer Chain   Buffers are needed (generated by the driver and obtained by FW via the PCI bus).
	Prints were added to report the ReasonCode (Added or Deleted) when an Expander Status Change Event is received.
	Source code file mptscsih.c has been included in mptbase.c.  This results in the functionality in mptscsih.c to be contained in mptbase.ko.  File mptscsih.ko is no longer present.  All Makefiles have been modified to not produce mptscsih.ko.  The build procedures have been modified to eliminate mptscsih.ko.  Since this modifies the build procedures, a new 3.13 branch is created, keeping intact the 3.12 build procedures for legacy builds.
	Module mptlan has been eliminated.  All Makefiles have been modified to not produce mptlan.ko.  All build procedures have been modified to eliminate mptlan.ko.

 Defect fixes
	Created separate reply message frame storage (pDVLocal and localDVReply) for internal domain validation commands. Previously it was being shared with the generic internal command routines.
	Cleanup in mptscsih_ioc_reset surrounding  timer handling for internal commands.
	The mptsas_cleanup_fw_event_q was moved from MPT_IOC_PRE_RESET to MPT_IOC_POST_RESET, to avoid deadlock situations.
	When a Device Add Event is received, a ReportLUNs command is sent to the device.  A Test Unit Ready command is sent to each LUNs indicated in the data from the ReportLUNs command.  When the TUR is completed successfully, the device is added to the system via a scsi_add_device call.
	The Power Management code has been changed to not modify the DMA Mask settings that were established during initialization.  This maintains the settings during a resume operation.
	Some older kernels do not define msecs_to_jiffies or jiffies_to_msecs.  File linux_compat.h was modified to define msecs_to_jiffies_compat and jiffies_to_msecs_compat the same as the newer kernels define those functions.  File mptsas.c was modified to use the defines in linux_compat.h.
	Routine mptsas_add_device has been modified to reset tflag MPT_TARGET_FLAGS_DELETED if the sdev structure is present and vdevice is valid.  This occurs  if the disabling hotplug remove feature is invoked and a device is added.  Resetting the flag allows IOs to be received and processed normally to that device.
	The qdepth for Dummy LUNs can now be set and not default to a value of 1.  This allows LUNs which are not present during initialization to operate normally, if they are placed online later, replacing the Dummy LUNs.

Major Changes For Version 3.12.29.00-1
Release Date:  2/15/2008

General Changes
Functionality
	A mpt_fwfault_debug parameter has been added to mptbase, and utilized also in mptscsih and mptctl modules.  Setting this parameter will cause the driver, when a SAS chip fault is detected, write 0xC0FFEE00 to the Doorbell and the driver to panic.   This causes the FW and driver to halt for debugging purposes, and no recovery is done.
	SAS chip Power Management is implemented.
	DKMS version has been updated to 2.0.17.5-1.

 Defect fixes
	A unique work queue is now used when a Hot Plug operation is to be scheduled.  This allows the hot plug routine to execute without having to wait on other items on the general work queue.  Also, a list containing hot plug items has been implemented, allowing one or more hot plug operations to be done with one scheduled hot plug execution.


Major Changes For Version 3.12.28.00-1
Release Date:  1/18/2008

General Changes
Functionality
	None.

 Defect fixes
	When a 106xE with a B0 or B1 chip is used, the driver operates in 32 bit mode, regardless of the machine type (32 bit or 64 bit).  There was a flaw in mptctl.c and csmisas.c which generated 64 bit Scatter/Gather addresses in smp_passthru message generation, causing an error condition with any of the above chips.  This flaw has been fixed with this version.

Major Changes For Version 3.12.27.00-2
Release Date:  1/15/2008

General Changes
Functionality
	SLES 9 SP4 support has been added for i686, x86_64,ia64 and ppc64 machine types.  See above for the list of items indicating support for SP4.

 Defect fixes
	None

Major Changes For Version 3.12.27.00-1
Release Date:  12/28/2007

General Changes
Functionality
	None.

 Defect fixes
	A check for a NULL VirtualDevice pointer was added to prevent its use when the Event INTEGRATED_RAID with ReasonCode of VOLUME_STATUS_CHANGED is received.  This prevents a panic when a SAS Raid Volume is created by an application.

Major Changes For Version 3.12.26.00-1
Release Date:  12/6/2007

General Changes
Functionality
	Task Aborts for commands to a Volume are returned as FAILED and not sent to FW.

 Defect fixes
	An argument of a Memory allocation call for a Hot Plug structure was changed from CFG_KERNEL to CFG_ATOMIC to eliminate a stack trace when an Event causes a potential Hot Plug operation to be done.

Major Changes For Version 3.12.25.00-1
Release Date:  11/21/2007

General Changes
Functionality
	Dual Port support has been added.
	Support for RHEL 4.6 has been added to the rpm and DUD files, as shown above.

 Defect fixes
	The Internal Command Timer expired routine has been upgraded to first send a Target Reset to the device;  if that fails, a Bus Reset is sent;  if that fails, a Host Reset is done.  The Target Reset should clear the hang condition and allow full operation immediately wheras the Host Reset takes several seconds, leaving the system unresponsive during that time.
	During installation of diskdump, a spinlock call in the Host Reset code was not replaced by a MPT_HOST_LOCK macro.  This caused two spinlocks to be executed, causing an NMI interrupt.  The spinlock call was removed.
	The rpm generation spec files are restored to using the /tmp directory for file storage.  Since previous rpm installations used the /tmp directory, this will allow the rpms to remove prior installations properly.
	The LSI Logic string has been removed from the DUD files.

Major Changes For Version 3.12.24.00-1
Release Date:  11/9/2007

General Changes
Functionality
	None.

 Defect fixes
	During SAS device hot plug adding a device, the driver sends a limited sequence of commands to the device (TURs, Report LUNs, etc).  They are sent one command at a time with a timer and a wait for completion.  If the timer expires, a routine is executed to clear the hang and continue device initialization.  
 When a JBOD is attached to a SAS HBA, a drive is plugged in, and then unplugged before device discovery completes in a SLES 9 system, the first Internal command does not complete and the system was not responsive.  The Internal command timer expired routine was not successfully clearing the Internal command process.  This has been corrected (a Host Reset is done and, when complete, the waiting routine is woke up with an error indication).  This allows the process to continue and complete initialization, although the device wont be added to the system, since it is now unplugged.
 
Major Changes For Version 3.12.23.00-1
Release Date:  10/6/2007

General Changes
Functionality
	If a BUSY SCSI Status is received by the driver, the driver will return that status to the scsi mid-layer.  This will cause the command to be retried until successful.

 Defect fixes
	None.

Major Changes For Version 3.12.22.00-1
Release Date:  10/3/2007

General Changes
Functionality
	The High Priority Request queue feature is implemented.  This is used to send Task Management messages to the chips that support that feature, rather than use the Handshake method.
	A command line option mpt_disable_hotplug_remove has been implemented.  If set, a Hot Plug device delete event does not notify the scsi mid-layer that this device is deleted.
 Defect fixes
	When an IOCTL reply frame is received, the CONTINUATION_REPLY bit in the MsgFlags field is checked.  If that bit is set, the message frame is not returned to the free message frame pool.  Eventually there will be another message reply with this MessageContext without this bit set, allowing the message frame to be placed in the free message frame pool.   This sequence of events in normally done when Diagnostic Buffers are utilized via an application such as lsiutil and the IOCTL interface.
	When A DIAG_RELEASE message is sent, the operation is successful if the replys IOCStatus indicates SUCCESS or DIAGNOSTIC_RELEASED.
	If Scatter/Gather addresses are 32 bit values (1064E or 1068E with B1 or earlier chips, or sizeof (dma_addr_t) is 4 bytes), the data address portion will be 4 bytes long and the FlagsLength will so indicate.  The result is that each Scatter/Gather List item is 8 bytes rather than 12 bytes, resulting in more items per Message Frame and Chain Buffer, improving performance.

Major Changes For Version 3.12.21.00-2
Release Date:  9/18/2007

General Changes
Functionality
	None.
 Defect fixes
	A RHEL 4 pcitable file in the x86, x86_64 and ia64 builds did not have the Brocade HBA entry.  This caused the DUD to not recognize the Brocade HBA and not recognize any disk drives attached to it.  The Brocade HBA entry has been added to those pcitable files.  The -2 build includes this change in the build procedure.

Major Changes For Version 3.12.21.00-1
Release Date:  9/10/2007

General Changes
Functionality
	Support for RHEL 4 diskdump has been added.
 Defect fixes
	The KMP rpm places the driver object files in /lib/modules/`uname r`/updates.  A later rpm install from the LSI build process will remove those files, place the driver object files in /lib/modules/<kernels>/kernel/drivers/message/fusion and generate ram disk images for the installed kernels.
	The LSI build rpm will generate a directory /mpt_rpm_install to contain the driver object modules rather than use /tmp.  This is due to a customer request.
	DMA addressing is forced to 32 bit (lower 4 GB of memory for Scatter/Gather) for  B1 or earlier SAS 1064E and 1068E chips, due to a hardware defect that may cause data corruption if 64 bit addressing is allowed.

Major Changes For Version 3.12.19.00-1
Release Date:  8/28/2007

General Changes
Functionality
	Added ioc->broadcast_aen_busy flag.  This flag will be set when the mptsas_broadcast_primative_work thread is running.  When additional aen events are posted, they will be ignored while this flag is set.    The flag is cleared when the work thread completes.   Also when this flag is set, SCSI_IO commands will be frozen, and requeued later.
	mptscsih_change_queue_depth  set the queue depth to 1 when sdev->tagged_supported flag is cleared.   This insures that devices queues are set to 1 when the device reports they dont support tags.
	Cleaned up mpt_interrupt.
	Commented  some verbose debug prints during MPT_DEBUG_EVENTS.
	Added MYIOC_s_DEBUG_FMT  so there is availability of KERN_DEBUG level printks.



Major Changes For Version 3.12.18.00-1
Release Date:  8/24/2007

General Changes
Functionality
	None.
 Defect fixes
	A for loop in the mptlinux.dkms.spec file did not include the RHEL 4 Update 4 or Update 5 kernels when determining if pre-build binary files should be installed.  On machines with the kernel source files installed, a compile of the source code would be done and those object files installed.  If the kernel source files are not installed, an error message would occur.  The for loop has been corrected.
	The PrimeIocFifos routine now has a 1078 fix forcing message and sense buffer allocations from low 4 GB memory.


Major Changes For Version 3.12.17.00-1
Release Date:  8/22/2007

General Changes
Functionality
	Support for 1078 scatter/gather entries in systems with greater than 36 GB of memory has been added.
 Defect fixes
	A change was made in mptctl to fix SR 2-188096080.  This will allow the lsiutil application to program SAS WWN.

Major Changes For Version 3.12.15.01-2
Release Date:  8/21/2007

General Changes
Functionality
	None.
 Defect fixes
	The KMP files were not included in an OEMs package file.  The build procedure has been corrected, resulting in this -2 build.


Major Changes For Version 3.12.15.01-1
Release Date:  8/20/2007

General Changes
Functionality
	None.
 Defect fixes
	The issuing of Broadcast AEN support now matches the 4.00 driver.


Major Changes For Version 3.12.15.00-1
Release Date:  8/11/2007

General Changes
Functionality
	Support for handling Event MPI_EVENT_SAS_BROADCAST_PRIMITIVE (0X17) with primitive value of MPI_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT (0X04) has been added.  When this event is encountered, a routine will be scheduled for execution.   This routine will examine the ScsiLookup list of outstanding commands.  When a non-Raid Volume command is found, a Task Management QUERY_TASK will be issued.  If that is  successful, a Task Management ABRT_TASK_SET is issued.  That will terminate all IOs to that Bus, Id and Lun.   The ScsiLookup list will continue to be searched for an IO command with a different Bus, Id and LUN; when found, the same sequence of Task Management commands as listed above will be generated.

Defect fixes
	None.

Major Changes For Version 3.12.14.00-1
Release Date:  8/10/2007

General Changes
Functionality
	None.

Defect fixes
	When a Raid Volume fails, a flag is set causing all IOs to that volume to be returned to the scsi mid-layer with error status DID_NO_CONNECT.  The Volume is not hot plug removed from the system.  If the Volumes disk drives are restored, the volume will then accept IOs.
	If an IO completes with an IOCStatus of TASK_TERMINATED, the IO wil be returned to the scsi mid-layer with status DID_RESET.  This causes the IO to be retried but the IOs retries counter is not incremented.  This causes IOs to be retried during and after a Bus Reset operation without an error indication.

Major Changes For Version 3.12.13.00-1
Release Date:  8/7/2007

General Changes
Functionality
	Tunables have been added in mptsas.c, mptspi.c and mptfc.c.  These tunables allow modification of queue depth for devices attached to those chips.  The tunables are: mptsas_device_queue_depth, mptspi_device_queue_depth and mptfc_device_queue_depth and can set when the respective modules are loaded.  The current default is 48 for all types.

Defect fixes
	When a Task Management request via an IOCTL completes, the associated IOCTL timer is now deleted.  This prevents the timer from expiring, resulting in a Host Reset, even when the Task Management completes successfully.

Major Changes For Version 3.12.12.00-1
Release Date:  7/12/2007

General Changes
Functionality
	None.

Defect fixes
	The #if defined CPQ_CIM and associate endif lines of code were removed from all files except for mptctl.c.  This generates the same object files, except mptctl.ko, with or without CPQ_CIM being defined.  This is as intended so the baseic driver will operate the same without the CSMI IOCTL code.

Major Changes For Version 3.12.11.00-1
Release Date:  7/25/2007

General Changes
Functionality
	An sdev attribute named suse_sas_address is added for use by show_of_path.sh to obtain the sas address of a device.  This is a SLES 9 SP3 specific change to address Novell bugzilla 288545.

Defect fixes
	None.

Major Changes For Version 3.12.10.00-1
Release Date:  7/24/2007

General Changes
Functionality
	Included changes  for common CSMI functionality.
	The MPI 1.05.16 header files are in use.

Defect fixes
	None.

Major Changes For Version 3.12.08.00-1
Release Date:  7/19/2007

General Changes
Functionality
	None.


Defect fixes
	If a Task Abort is requested and the TM reply indicates failure (this is the normal sequence for SAS IR FW), the ScsiCmd pointer is retained.  The scsi mid-layer will then request a Target Reset and a TM Target Reset is sent to the FW.  At that point, all outstanding commands receive a reply with TASK_TERMINATED status.  Those commands will be sent to the scsi mid-layer requesting they be retried.

Major Changes For Version 3.12.07.00-1
Release Date:  7/16/2007

General Changes
Functionality
	The RHEL4 and SLES9 rpm files have been changed to check the rpms architecture against the systems architecture.  If they do not match, an error message is printed and the rpm is not installed.  This change was requested by a customer who noted that an x86 rpm can be installed on a x86_64 system, but the driver cannot be successfully loaded.


Defect fixes
	The Domain Validation timeout routine has been modified to issue a Bus Reset rather than a Target Reset.  This is due to the fact that a target reset is attempted by entering a MSG OUT bus phase to sent the target reset message.  If the bus is hung, this is not possible.  A Bus Reset simply raises the reset line high for a specific period of time, causing all connections to be terminated.  Then a Fallback to a slower speed is requested and Domain Validation is re-attempted at that speed.
	The command timeout period is changed to 1 second rather than 10 seconds.  Since DV commands do not access the disk drive, this time period is sufficient and greatly reduces the total DV time period for a device that hangs the bus.  Eventually, a fallback to Async/Narrow may result.
	The fusion.mptctl file has been modified to accept as valid the Vendor ID 0x1657 and FC 949E device combination.
		
Major Changes For Version 3.12.06.00-1
Release Date:  6/26/2007

General Changes
Functionality
	None.

Defect fixes
	The CSMI IOCTL routine csmisas_get_raid_config has been changed to report the correct drive count when either DRIVES or DEVICE_ID is requested.

Major Changes For Version 3.12.05.00-1
Release Date:  6/26/2007

General Changes
Functionality
	None.

Defect fixes
	 A customer requested that the internal command timeout routine issue a Diagnostic Reset to clear a hang condition when a Sync Cache command is issued due to driver unload.  To accommodate this request and maintain the capability to fallback to a lower speed when a device hangs during Domain Validation, two timout routine have been created.  One handles all internal commands not associated with Domain Validation.  The other handles only Domain Validation commands, thus segregating the different handling that is needed.

Major Changes For Version 3.12.04.00-1
Release Date:  6/26/2007

General Changes
Functionality
	None.

Defect fixes
	 1030 errata fix - on a slower PCI bus (75 MHz or less) on a non-
paced (below U320 speed) 1030 data transfer the DMA engine can be prematurely shut off, resulting in a data underrun condition (even though the target device transferred all of the data).  This happens on a Read or Verify only (not on a Write).

Major Changes For Version 3.12.03.00-1
Release Date:  6/25/2007

General Changes
Functionality
	The VendorId of 0x1657 will be displayed as BRE040.
	The pcitable file for RHEL 4 has been updated to include VendorId of 0x1657 and the same DeviceID as the FC949E.  This allows this device to be fully supported with RHEL 4.  The device is fully supported in SLES 9 via the driver code change.

Defect fixes
	The CSMI_GET_RAID_CONFIG  IOCTL handler is modified to provide at least drive serial number of the pulled hard drives of a RAID volume even after system reboot. 
	Changed the code to allocate memory for input/output buffer from kernel slab rather than the stack in the functions csmisas_stp_passthru and csmisas_get_phy_info to avoid possible stack overflow.
	Checks for request_data_sz > 0xffff in csmisas_stp_passthru and csmisas_smpt_passthru that would have resulted in an error return status were removed.  The requests can now proceed with a data length greater than 64 KB.
	Checks for request_data_sz > 0xffff in csmisas_stp_passthru and csmisas_smpt_passthru that would have resulted in an error return status were removed.  The requests can now proceed with a data length greater than 64 KB.

Major Changes For Version 3.12.02.00-1
Release Date:  6/15/2007

General Changes
Functionality
	The VendorId of 0x1657 will be displayed as BRE040.

Defect fixes
	None.

Major Changes For Version 3.12.01.00-1
Release Date:  6/14/2007

General Changes
Functionality
	The mptfc module will now recognize a VendorId of 0x1657.  This device will operate as a FC949E.

Defect fixes
	With drives attached to a 1030 HBA, an unexpected Domain Validation Needed Event is received when a Raid Volume is being created via a Linux application.  IOC Page 3 that associates the PhysDiskNum to the actual Bus and Id for the disk drive being added to the volume is not present and its pointer is NULL.  The driver was attempting to use that pointer, causing a panic.  A check for the pointer being Null is added and the event is essentially ignored.  This causes no issue since the disk drive has previously had Domain Validation performed during mptspi initialization.
	The udelay routine is being used rather than the mdelay routine for a time delay during Task Management handshaking.  This prevents a panic when a cable attached to a disk drive is pulled on a SAS HBA.
	The CSMI_GET_RAID_CONFIG  IOCTL handler is modified to provide at least drive serial number of the pulled hard drives of a RAID volume even after system reboot. 

Major Changes For Version 3.02.99.00-2
Release Date:  6/5/2007

General Changes
Functionality
	RHEL 4, Update 5 has been added to the builds.  The kernels and  contents of the DUDs are listed above.

Defect fixes
	None.

Major Changes For Version 3.02.99.00-1
Release Date:  5/31/2007

General Changes
Functionality
	None.

Defect fixes
	The Fibre Channel driver, mptfc, was using the same routine for event processing as the SCSI driver, mptspi.  When a SCSI Integrated Raid drive is inserted, a Domain Validation needed event is generated and sent to the driver.  All event processor are called to process the event.  This caused both mptspi and mptfc event processors to start Domain Validation on the drive.  This eventually resulted in a recursive loop, causing the system to lockup.  The mptfc event processor was given its own routine, which does not include processing Domain Validation needed events.
	When a Domain Validation event is received in the SCSI driver, flags and code were added to ensure that DV is performed only on that physical drive.
	Code was removed in the Get NVRAM portion of the Domain Validation routine.  This code was preventing the NVRAM negotiation parameters from being obtained, causing the drive to remain at Async/Narrow, causing subsequent IO throughput loss with IM Raid Volumes.

Major Changes For Version 3.02.98.00-1
Release Date:  5/23/2007

General Changes
Functionality
	None.

Defect fixes
	A couple of calls to mptscsih_initTarget were occurring during Domain Validation.  These calls were not necessary due to the change with Domain Validation now being scheduled and done on a per device basis after the first successful Inquiry command completion (those calls were done previously).

Major Changes For Version 3.02.97.00-1
Release Date:  5/18/2007

General Changes
Functionality
	None.

Defect fixes
	A Task Management (TM) timer is started when a TM message is sent to the FW.  If the TM doesnt complete within the desired time period, the request that caused the TM will be returned as failed.
	A TM event is started when a TM message is sent to the FW.  The driver will wait on the TM completion and examine its completion status to determine the result to be assigned to this TM request.  This replaces a called routine that looped through a spinlock, a flag examination, a spinunlock and a wait  this caused a someone is hogging the interrupts message on certain systems.

Major Changes For Version 3.02.96.00-1
Release Date:  5/16/2007

General Changes
Functionality
	Whenever the FC Link comes up, check its speed, and if has changed since the last time it was up, write a warning into /var/log/messages.

This helps to identify FC adapters that are incorrectly determining the link speed, and as a result run slower than expected.

Defect fixes
	When a Target Reset is issued for a SCSI (1030)  ID, the IDs SCSI_SPI Device Page 1 is written with the parameters that were established during Domain Validation.  This will cause SCSI negotiations on the next IO to the device.
	For SCSI devices attached to 1030 HBAs, the initial setting of tflags is for no Queuing.  This allows the first Inquiry command to be sent Untagged.  The Inquiry data will then be checked for Queuing support and the device tflags is set accordingly.  This allows a PlexStore CDROM, which doesnt support queuing to operate properly.

Major Changes For Version 3.02.95.00-1
Release Date:  5/7/2007

General Changes
Functionality
	None.
Defect fixes
	When a MESSAGE_UNIT_RESET is issued for a SCSI (1030) channel, SCSI_SPI Device Page 1 is written for each ID with the parameters that were established during Domain Validation.  This will cause SCSI negotiations for each device on the next IO to the device.

Major Changes For Version 3.02.94.00-1
Release Date:  4/24/2007

General Changes
Functionality
	None.
Defect fixes
	If a Task Management request times out, the driver will issue a MESSAGE_UNIT_RESET to only the HBA channel involved, rather than a Diagnostic Reset.  This causes only  that HBA channel to be reset and a bus reset to its SCSI bus to be issued.  An IOC recovery for only that HBA channel is done to bring it back to operational status.  The IOs that were outstanding  on that HBA channel will be returned to the scsi midlayer requesting they be retried.  The other HBA channel, if any, will not be affected.  This change primarily affects SCSI (1030) HBAs which may have a disk drive that hangs, causing Task Aborts to not complete properly.
	The csmisas_get_cntlr_config routine has been modified to look for the IO Port address and the Memory Mapped addresses in either order within PCI Config Space.  The 1078 has that data in the reverse order from the other SAS HBAs.  Now the Base IO Address will be obtained properly for all SAS HBAs.
	When the first successful Inquiry to a SCSI (1030) device is completed, a Domain Validation task is scheduled and executed if the device is not part of a Volume, or for each device in the Volume.  If Domain Validation is requested by IR FW, for a device in a Volume, a Domain Validation task is scheduled and executed.  If a command to that device is received while Domain Validation is in progress, that command is queued and executed after Domain Validation completes.

Major Changes For Version 3.02.83.23-2
Release Date:  4/16/2007

General Changes
Functionality
	None.
Defect fixes
	The SLES 9 PowerPC build procedures now generate DUDs for Base, SP1, SP2 and SP3.

Major Changes For Version 3.02.83.23-1
Release Date:  4/11/2007

General Changes
Functionality
	None.
Defect fixes
	The loop through all devices to send a target reset has been modified to do that only for 1030 (SCSI) IOCs.
	Increase timeout for internally generated TUR and Log Sense  commands from 60 seconds to 144 seconds.
	Move the 1 second msleep code so it is called only after a device has returned busy or the sense data indicates the device is becoming ready on the above internally generated commands.
	If a Task Abort reply message is received and its Termination Count is 1, set the completion status to SUCCESS.

Major Changes For Version 3.02.83.21-1
Release Date:  3/28/2007

General Changes
Functionality
	IOCTL to support FirmWare DownLoad Boot from applications has been added under conditional compilation flag MPT_SUPPORT_FWDLB_IOCTL.  By default this is enabled. 
	Detection of SAS IOC with blank flash part has been added. This feature can be enabled/disabled by changing the module parameter mpt_enable_deadioc_detect. By default this feature is disabled.

Major Changes For Version 3.02.83.20-1
Release Date:  1/23/2007

General Changes
Functionality
	RHEL4 Update 3 has been added to the build procedure for the ppc64.
	DUD installs with RHEL 4 on a ppc64 system do not update the /lib/modules files correctly.  After installation completes and the reboot has completed, install the driver via the rpm facility to get the /lib/modules files updated with the current driver.
	Support for SLES 9 on the ppc64 is not available at this time.
Defect fixes
	The ppc64 has been added to the list of supported machine types.
	When a Reply Frame is received and MPT_DEBUG_REPLY is turned on, the Function, IOCStatus, the contents of the Reply Frame and the contents of the Request Frame, including Chain Buffers,  are printed.
	Manufacturing Page 0 is obtained for all board types, not just SAS, during IOC_BRINGUP.
	Added argument reqBytes back in routine mpt_send_handshake_request so Target Driver can utilize this routine during a Target Assist operation.
	Added csmisas_get_raid_element and csmisas_set_raid_operation support.
	For all HBA types (SAS, FC and SPI), the sg_tablesize returned to the scsi mid-layer is returned as was calculated during initialization, for consistent operation.
	For SAS IOs which have an IOCStatus of MPI_IOCSTATUS_SCSI_IO_TERMINATED, the IO result is set to DID_SOFT_ERROR rather than DID_RESET, unless there is also a LogInfo of DID_BUS_BUSY which causes a result of DID_BUS_BUSY (no change from previous driver).  The DID_SOFT_ERROR results in the IO being retried.
	If an IO request is received for a LUN greater than what the device supports, the IO will be completed with a DID_BAD_TARGET and the return value is changed from FAILED to 0.  This prevents the scsi mid-layer host_busy and device_busy values for the adapters host structure to be decremented only once instead of twice, as was the case if FAILED is returned.
	Memory allocation in csmisas.c was changed from kmalloc to get_free_pages where more that 128 KB of memory may be requested.  This allows the IOCTL to proceed normally rather than failing due to a memory allocation failure.  This was noticed in the ssp_passthru routine that was being used by an application to flash disk drive FW that was about 750 KB.

Major Changes For Version 3.02.83.12-5
Release Date:  1/11/2007

General Changes
Functionality
	Due to a change in the ftp site location where the build data is maintained, some of the DUD files were not present with the -4 version.  This has been corrected with the -5 version.


Major Changes For Version 3.02.83.12-4
Release Date:  1/4/2007

General Changes
Functionality
	TheDKMS files are now available with the -4 release.

Defect fixes
	None.


Major Changes For Version 3.02.83.12-3
Release Date:  12/1/2006

General Changes
Functionality
	Red Hat 4.0 with Update 4 ppc64 rpm and DUD packages are now available with the -3 release.
	SuSE 9 with SP 3 ppc64 rpm and DUD packages are now available with the -3 release.

Defect fixes
	None.

Major Changes For Version 3.02.83.12
Release Date:  11/16/2006

General Changes
Functionality
	None.

Defect fixes
	Issue:  System hang at bootup after installing csmi agents.
Defect fixes
	Issue:  System hang at bootup after installing csmi agents.
Reported by: Test
To Reproduce: Install csmi agent.
Description of Change: Fixed a panic in csmisas_fill_location_data_raid() due to NULL pointer.

Major Changes For Version 3.02.83.11
Release Date:  11/15/2006

General Changes
Functionality
	Change ioc->DevicesPerBus max value based on port_facts->PortSCSIID, instead of ioc->MaxDevices.    This is to insure proper device scan at driver load time.  The MaxDevice fields means max number of targets the firmare will enumerate, but with persistant ids, its does not reflect the maxium number of target_ids that firmare could assign.   The firmware reserves some target_ids for persistent_ids, but it will not exceed PortSCSIID, thus this required change.

Defect fixes

	Issue: SSP_PASSTHRU doesnt display info on resyn IM volume
Reported by: Test
To Reproduce: Create an IM volume, remove a drive and resinsert. While IM volme is resyncing, issue SSP_PASSTHRU, and observe data being returned for all drives.
Description of Change: Incorrect implementation for semaphores that were added to control access to sas_device_info_list.  This resulted in memory corruption which would over write the ioc->num_ports parameter to zero. This resulting in ssp_passthru failing due to a sanity check on bPhyIndentifier; a parameter passed in from user space.


	Issue: SSP_PASSTHRU doesnt display info for drives that are members of inactive volumes.  GET_RAID_CONFIG not displaying info for inactive volumes. 
Reported by: Test
To Reproduce: Create an Inactive volume, and observe data returned for both SSP_PASSTHRU and GET_RAID_CONFIG.
Description of Change: Adding support for inactive volumes. This involved adding devices found in inactive volume into the sas_device_info_list at driver load time, and when driver received MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED event.  A separate inactive_list was implemented to maintain PHY_DISK info for inactive volumes (which is not provided in ioc_page_3), required inside mptscsih_is_phys_disk and csmisas_is_phys_disk.




Major Changes For Version 3.02.83.10
Release Date:  11/11/2006

General Changes
Functionality
	None

Defect fixes

	Issue: CSMI GET_RAID_CONFIG Ioctl shows RAID volume status as Degraded when actually the drives in the volume are rebuilding
Reported by: Customer
To Reproduce: Create a 2-drive SAS IM volume. Remove one of the SAS drives and replace with a new unconfigured SAS drive. Issue GET_RAID_CONFIG Ioctl and note that Raid status shows as Degraded
Description of Change: Updated check for volume status using VolumeStatus.Flags field instead of VolumeStatus.State

	Issue: Both SSP_PASSTHROUGH and GET_LOCATION CSMI Ioctls does not show information of new drives hotswap inserted in a RAID volume
Reported by: Customer
To Reproduce: Create a 2-drive IM volume using drives SAS1 and SAS2. Remove SAS2 drive and insert a new drive SAS3 in same location. SAS1 and SAS3 drives will start rebuilding. Issue SSP_PASSTHROUGH and GET_LOCATION and note that they do not show information for SAS3 drive. Insert new unconfigured drive SAS4 in a new location and note that both Ioctl do not show information for SAS4 drive too
Description of Change: Added device link list to retain 
sas_addresss when devices are added.  Devices are not removed 
from the list after they have been deleted, however when a device 
is added, there are sanity checks to insure there are unique target 
id and/or sas address populated in the list.   

	Issue: CSMI GET_RAID_CONFIG Ioctl shows same SAS Address for a replaced drive and a pulled drive from a raid set
Reported by: Customer
To Reproduce: Create a 2-drive IM volume using drives SAS1 and SAS2. Remove SAS2 drive and insert a new drive SAS3 in same location. Issue GET_RAID_CONFIG Ioctl and note that SAS Address of inserted SAS3 drive is same as that of pulled SAS2 drive
Description of Change: Added device link list to retain 
sas_addresss when devices are added.  Devices are not removed 
from the list after they have been deleted, however when a device 
is added, there are sanity checks to insure there are unique target 
id and/or sas address populated in the list.   



Major Changes For Version 3.02.83.09
Release Date:  11/07/2006

General Changes
Functionality
	None

Defect fixes

	Issue: Deleting a hot spare drive does not return the drive back to OS
To Reproduce: Create an IM volume and then create a hot spare drive using CFGGEN. Note that /proc/scsi/scsi does not have the hot spare drive listed. Now delete the hot spare drive using CFGGEN and note that the drive is not returned to OS (/proc/scsi/scsi does not list the drive)
Description of Change:  When the hot spare is deleted, scsi mid-layer sends an inquiry to the new device, FW responds with no device found. The solution is to set ev->isRaid=0 for PHYSDISK_DELETE event before mptsas_hotplug_work thread is spun. This sends a TUR and REPORT_LUNS to the device before an inquiry command from scsi mid-layer is sent down to FW


Major Changes For Version 3.02.83.07
Release Date:  11/1/2006

General Changes
Functionality
	Update 4 has been added to the builds.  Update 1 has been removed from the DUDs in order to include Update 4.

Defect fixes

	Issue: When a Raid Volume fails or becomes optimal, the proper operations are not done to remove or add the volume from the OS.
Reported by: Development.
To Reproduce: Create a IS volume and pull a drive.  Execute cat /proc/scsi/scsi and notice the volume is still present.  Reboot the system or unload and load the sas modules.  Notice the volume is not present in /proc/scsi/scsi.  Add the drive.  Notice the volume is still not present in /proc/scsi/scsi.
Description of Change:  When the driver receives an Integrated Raid Event with ReasonCode of VOLUME_STATUS_CHANGED and the state is STATUS_STATE_FAILED, a hot plug of DEL_DEVICE  is scheduled and executed; if the state is STATUS_STATE_OPTIMAL, a hot plug of ADD_DEVICE is scheduled and executed.  The /proc/scsi/scsi file will show the correct devices and the devices  are removed or added as appropriate to the OS.
	Issue: CSMI IOCTL results are inconsistent between the 2.4 and 2.6 drivers.
Reported by: Customer.
To Reproduce: The same csmitest application is executed on both OS versions.  Some of the output differs.
Description of Change:  Common csmisas files are used in both drivers.  Code to handle the different interfaces (mainly timer and completions) are separated by ifdef DRVR_206 or ifdef DRVR_302, with corresponding declarations added to the  Makefiles.

Major Changes For Version 3.02.83.05
Release Date:  10/20/2006

General Changes
Functionality
	All Debugging printks in csmisas.c module are moved under MPT_DEBUG_CSMISAS.  Also added more enhanced debugging for ssp_passthru.
	CSMI GET_LOCATION  add hot spare support when the target id is for a logical volume.
	CSMI SSP_PASSTHRU  move code to read in payload buffer for a WRITE to the top of function, where the entire buffer could be properly read in from user to kernel space.
	CSMI GET_RAID_CONFIG  fix volume size for greater than 2TB, but in raid component calculation and hot spare sanity checks
	Ioctl status flags cleanup, in both mptctl and csmi.
	Task aborts were returning FAILED to scsi mid-layer, even though the task management request succeeded.  Thus was fixed in the hd->tm_iocstatus check in mptscsih_IssueTaskMgmt function, adding TASK_TERMINATED and IOC_TERMINATED.

Defect fixes

	Issue: csmitool  GET_RAID_CONFIG doesnt show fault tolerant volume with rebuilding status when its rebuilding.
Reported by: Customer.
To Reproduce: Create a IM volume, and pull a drive, and reinsert. Use csmitool to display raid_config, and notice the RaidStatus.  
Description of Change:  The driver wasnt looking at the correct member in the volume_page0 structure to determine if the array was rebuilding, or if the array was inactive.


	Issue: csmitool  SSP_PASSTHRU was sending passthru to incorrect target after a logical volume is created. 
Reported by: Development.
To Reproduce: Create a volume, and send INQUIRY via SSP_PASSTHRU. Notice that one of the sas_addresss will return data to the logical volume instead of the hidden physical disk.
Description of Change:  The change is to look at the phy_info->attached.phys_disk_num to determine if the device is a hidden raid component, and for RAID_PASSTHRU, send the correct target phys disk number for the target_id. 
















Major Changes For Version 3.02.83.03
Release Date:  10/4/2006

General Changes

Functionality
	None

Defect fixes
	Issue: Incorrect Inquiry data returned as a result of a ssp passthrough Inquiries.
Reported by: Customer
To Reproduce:  Have a OEM System Health agent running on a system with a PCI-E SAS host adapter with a disk drive attached.  Run a script that repeatedly issues ssp passthrough Inquiries to the SAS disk drive.  Note that some of the Inquiries only return 4 bytes of data and the data is incorrect.
Description of Change: Changed code top clear driver IOCTL status flags before each IOCTL request is issued, instead of after.  Some IOCTL requests were not clearing those flags so that subsequent request completions were examining stale data, causing the command to fail with no status data.  The issue only occurred with PCI-E SAS HBAs since they return an IOCStatus of 0x07 (Invalid Field) whereas PCI-X SAS HBAs return IOCStatus of 0x02 (Busy) for Toolbox commands with ISTWI_READ_WRITE_TOOL that are issued by the System Health agent.

Issue: The 32 bit DataLength field in IOCTL SCSI requests was being filled with cpu_to_le16 (16 bits) rather than cpu_to_le32 (32 bits), causing a possible problem.
Reported by: Developer
Description of Change: Changed code to cpu_to_le32 for those requests.

Issue: TotalUserBlocks fields were being computed incorrectly in routine get_raid_config.
Reported by: Developer
Descritpion of Change: TotalUserBlocks fields were being computed incorrectly in routine get_raid_config.  The calculations for the uLowPart and uHighPart are now based on the 64 bit MaxLBA values, due to the 2 TB data range that is now possible.

Major Changes For Version 3.02.83.01
Release Date:  9/12/2006

General Changes

Functionality
	None

Defect fixes
	Issue: SAS Address of pulled drive that is part of an IR volume is all zeros in the data returned from CSMI GET_RAID_CONFIG Ioctl call
Reported by: Customer
To Reproduce: Create an IM/IS volume and pull out one of the drives in the volume. Using csmitest tool issue CC_CSMI_SAS_GET_RAID_CONFIG call to display Drives information and note the SAS Address field of the drive that was pulled is all zeros
Description of Change: Changed code to NOT update the SAS address list when a drive that is part of a volume is pulled/inserted

	Issue: Hot spare drive (of same drive type as that of drive in volume) is listed as member of an IS  (RAID 0) volume when CSMI GET_RAID_CONFIG Ioctl call is issued
Reported by: Customer
To Reproduce: Create a 2 drive IM volume with a hot spare and a 2 drive IS volume all of the same drive type. Using csmitest tool, issue CC_CSMI_SAS_GET_RAID_CONFIG call to display Drives information and note that the hot spare drive is also listed as member of the IS volume
Description of Change: Added a check for IS volume type and ignored while trying to add a hot spare drive as a member of the volume


Major Changes For Version 3.02.83
Release Date:  8/04/2006

General Changes

Functionality
	None

Defect fixes
	Issue: SAS Address of hot spare drive is all zeros in the data returned from CSMI GET_RAID_CONFIG Ioctl call
Reported by: Customer
To Reproduce: Create an IM volume with a hot spare drive and using csmitest tool issue CC_CSMI_SAS_GET_RAID_CONFIG call to display Drives information and note the SAS Address field for the hot spare drive
Description of Change: Moved memset of buffer before filling in SAS Address for a hot spare drive

	Issue: uChangeCount field in CSMI Ioctl is being incremented for all RAID actions and phys disk status changes for non-SAS controllers too
Reported by: Developer
To Reproduce: Attach a 1030 SCSI controller and create and delete a volume. Run the csmitest tool to display fields in GET_RAID_INFO Ioctl and notice that Change Count value is incremented which should reflect the change count events only for SAS controllers
Description of Change: Moved incrementing csmi_change_count from mptbase to mptsas so it is confined to changes to SAS events

	Issue: Some of the fields returned by GET_RAID_CONFIG CSMI Ioctl call are not filled-in or returns default values for hot spare drives
Reported by: Developer
To Reproduce: Create an IM volume with a hot spare drive and using csmitest tool issue CC_CSMI_SAS_GET_RAID_CONFIG call to display Drives information and note that usBlockSize, uDriveIndex are returned zero and bDriveType is returned UNKNOWN
Description of Change: Filled in usBlockSize, uDriveIndex, and bDriveType fields for hot spare drives in GET_RAID_CONFIG Ioctl


Major Changes For Version 3.02.82
Release Date:  7/25/2006

General Changes

Functionality
	Implemented following CSMI 0.90 Phase I and II changes and additional features:
-	CSMI_SAS_GET_CNTLR_CONFIG  updated uControllerFlags
-	CSMI_SAS_GET_RAID_INFO  updated uMaxDriverPerSet and implemented new fields
-	CSMI_SAS_GET_RAID_CONFIG  updated bDriveCount, bStatus, bInformation, union.Drives and implemented new fields
-	CSMI_SAS_GET_RAID_FEATURES  new IOCTL
-	CSMI_SAS_GET_RAID_CONTROL  new IOCTL
	Updated CSMI_SAS_GET_CONNECTOR_INFO Ioctl by filling in data from Manufacturing Page 7

Defect fixes
	Issue: mptsas and mptctl drivers not automatically loaded when SAS1078 controller is installed on either RHEL or SLES systems
Reported by: Developer
To Reproduce: Install a SAS1078 card on RHEL or SLES and upgrade the driver using DUD or RPM installation. On loading the OS, the mptsas and mptctl modules are not loaded automatically
Description of Change: The Device Id for SAS1078 has been updated from 0x60 to 0x62 in fusion.mptctl, update.kernel and suse-install.sh scripts that is packaged in RPM and DUD images for both RHEL and SLES, as well as in DKMS package


Major Changes For Version 3.02.81
Release Date:  7/20/2006

General Changes

Functionality
	None

Defect fixes
	Issue: A kernel panic occurs during Domain Validation to physical drives in a Raid volume on drives attached to a 1030.
Reported by: Customer.
To Reproduce: Run version 3.02.80.  Have drives configured as a Raid volume and attached to a 1030.  Domain Validataion occurs when driver module mptspi is loaded and a panic occurs in routine mptscsih_doDv.
Description of Change: A NULL pointer was being used when checking if the drive is part of a Raid volume.  A check for a NULL pointer has been inserted before it is used.

An additional change has been made in mptscsi_qas_check to send the proper negotiation parameters to Raid Volume drives rather than Async, Narrow if QAS support is not allowed on the bus (mixed QAS and non-QAS devices are present or they have been throttled back to Ultra 160 or slower speeds via the Configuration Utility).

Major Changes For Version 3.02.80
Release Date:  7/7/2006

General Changes

Functionality
	None

Defect fixes
	Issue: A kernel panic occurs with SLES 9 when the driver modules are unloaded.
Reported by: Customer.
To Reproduce: Run version 3.02.79 with SLES 9.  Have devices attached to a 1030 where the boot device is not attached to any 1030 HBAs.  Issue rmmod mptspi.
Description of Change: The call to routine scsi_host_remove was replaced with a loop through all the devices attached to the IOC, calling routine scsi_remove_device.  This removes the device entries in /proc/scsi/scsi, sg_map and lsscsi for that IOC.  A Bugzilla has been generated with SuSE but no response has been received at this time.


Major Changes For Version 3.02.79
Release Date:  6/21/2006

General Changes

Functionality
	During device discovery, in routine mptsas_scan_target, a loop has been added to send a Test Unit Ready command to the device every second until the device responds with a good status.  A command line parameter, mpt_cmd_retry_count, is available to control the number of loop iterations, with the default set to 60.  Once a good status is received or the loop is exhausted, a Report Luns command is sent (this may be done up to 10 times with a 1 second interval until a good status is received).  This is done to ensure certain Raid controllers are on-line and have their devices available.

Defect fixes
	Issue: If MaxDevices reported by a PortFacts request is not a multiple of 256, the NumberOf Buses is off by one, due to rounding down of the calculation.  For example, if MaxDevices is reported to be 500, the NumberOfBuses would be 1 rather than the expected 2.
Reported by: Development
To Reproduce: Run version 3.02.77 with FW that reports MaxDevices that is not a multiple of 256 (FC FW does that).  With MPT_DEBUG_INIT compiled in, the NumberOf Buses will be one short of the expected.
Description of Change: Code was changed to round up the NumberOfBuses calculation, allowing for an additional bus allowing for the extra number of devices that is greater than the multiple of 256.  In the example above, the NumberOfBuses is 2.

	Issue: Routine mptscsih_writeFCPortPage3 always writes with bus=1.
Noticed by: Development
To Reproduce: Run 3.02.77 with a FC HBA and FC devices attached.
Description of Change: An additional parameter, bus, was added to the routine and the routine calls.  This values is used to write the proper bus value.

	Issue: A panic occurs if a Target only mpt HBA is in the system and lsiutil is executed for IOCInfo.
Reported by: Development
To Reproduce: Run version 3.02.77 with a Target only mpt HBA and execute GetIOCInfo.
Description of Change: Code was added in mptctl to ensure the Target_List pointer is not NULL, as it is with a Target only HBA.


Major Changes For Version 3.02.77
Release Date:  6/14/2006

General Changes

Functionality
	Added check for IOC Status from Task Management Reply Message and return FAILURE to SCSI mid-layer on all TasK Management call back functions. A FAILURE is returned when IOC Status returned by Firmware is not MPI_IOCSTATUS_SUCCESS

Defect fixes
	Issue: Panic occurs when creating an IME Raid Volume immediately after deleting all Raid Volumes using the cfggen utility.
Reported by: Test Team
To Reproduce: Establish an IME Raid Volume with drives attached to a SAS HBA.  Reboot the system.  Have the cfggen utility installed and execute: 
cfggen <HBA Number> delete noprompt
cfggen <HBA Number> create ime max <disk drive numbers of prior volume> noprompt
Panic occurs but nothing is displayed on console screen; two lights are blinking.
Description of Change: Code was changed to prevent use of invalid pointer in interrupt routine.

	Issue: NumberOfBuses calculation was incorrect and was not reported to the scsi mid-layer.
Reported by: Developer.
To Reproduce: Using a SAS HBA with FW that supports 1024 devices, enable MPT_DEBUG_INIT, compile and load the driver modules.  Examine the dmesg output when mptsas is loaded.  The NumberOfBuses is set to 1 and no buses other than bus 0 is scanned in mptsas_slave_alloc.
Description of Change: Code was changed to correctly calculate the NumberOfBuses from the PortFacts MaxDevices and the DevicesPerBus.  Code was changed to set the scsi mid-layer max_channels to NumberOfBuses.  This causes logical buses 0, 1, 2 and 3 to be scanned for devices if the MaxDevices is 1024, as is the case for this FW.

	Issue:  System crashes caused by doubly-completing a SCSI command.
Reported by: Customer.
To Reproduce: Bad FC cables cause CRC errors and lost SCSI commands.  These commands time out and the mid-layer attempts to abort them.  If the abort times out, FC firmware will complete the abort with failure status, but the driver was not checking  it was looking only for the abort to complete.  When the abort finishes, the mid-layer completes the outstanding SCSI command, while unfortunately the firmware continues to work on it, and might complete it later itself.  If this happens, the driver will complete the SCSI command a second time, and the system will typically crash.
Description of Change: Keep track of the message frame assigned to a SCSI command (using the host_scribble field).  Validate this field before completing any SCSI command.  When aborting a SCSI command, check to see if its still outstanding when the abort completes from the firmware, and if so, fail the abort to the mid-layer (If the mid-layer sees the abort fail, it will not complete that SCSI command)


Major Changes For Version 3.02.74
Release Date:  5/31/2006

General Changes

Functionality
	The capability of having 1024 devices attached to single SAS controller has been implemented.  These devices can be allocated to four buses with up to 256 devices per bus.  The driver will obtain the actual number of buses and devices per bus and that information will be provided to the scsi midlayer during initialization.  A device discovery scan over those buses and ids will occur.  Normal IOs will occur, since all IO requests contain a bus and id uniquely identifying each device on a particular HBA channel.
	Revoked all CSMI 0.89 changes back to CSMI 0.83. CSMI 0.89 is not backward compatible to previous versions

Defect fixes
	None

Major Changes For Version 3.02.73
Release Date:  5/22/2006

General Changes

Functionality
	Implemented following CSMI 0.89 Phase II changes and additional features:
-	CSMI_SAS_GET_CNTLR_CONFIG  updated uControllerFlags
-	CSMI_SAS_GET_RAID_INFO  updated uMaxDriverPerSet and implemented new fields
-	CSMI_SAS_GET_RAID_CONFIG  updated bDriveCount, bStatus, bInformation, union.Drives and implemented new fields
-	CSMI_SAS_GET_RAID_FEATURES  new IOCTL
-	CSMI_SAS_GET_RAID_CONTROL  new IOCTL

Defect fixes
	Issue: Hang condition during SAS cable pull case
Reported by: Customer
To Reproduce: Run IO to mounted partition
Description of Change: Target Reset in slave_destroy entry was causing the hang. To fix, we moved the target reset to hotplug_work threads.  Also inhibit IO to end device once device is known to be removed.

	Issue: Port down retry situation is not returing DID_BUS_BUSY during SAS cable pull case
Reported by: Customer
To Reproduce: Pull cable.
Description of Change: The msb of the ioc status was being over written with zero during the masking of the register.  

	Issue: Luns greater than zero ignored during cable push case
Reported by: Customer
To Reproduce: Cable push to end device having more than one lun
Description of Change:  The isRaid field in the mptsas_hotplug_event structure was not being initialized, thus garbage was there, and the incorrect path was taken in the hotplug_work thread which resulted in REPORT_LUNS not being called.


Major Changes For Version 3.02.71
Release Date:  4/19/2006

General Changes

Functionality
	Added Hot Plug support for Multi-LUN devices
	Added Tape TLR support
	Added RHEL 4 U3 support  kernel 2.6.9-34

Defect fixes
	None



		
Major Changes For Version 3.02.69
Release Date:  4/11/2006

General Changes

Functionality
	If a Raid Volume contains SATA drives, the CSMI IOCTL that requests the Serial number has been changed to include 4 bytes of data from the ExtDiskIdentifier field, producing a total of 20 bytes of data, including the 16 bytes of data from the DiskIdentifier field.  If the drives are not SATA drives, the 16 bytes of data in the DiskIdentifier field is provided.
	If the LogInfo field in an IOC_TERMINATED reply indicates NEXUS_LOSS, a DID_BUS_BUSY result is returned to the scsi mid-layer.  This causes a retry of the command.
	The 1.05.13 MPI Header files are used with this driver.
	Support for the 1035, 1066 and 1066E chips has been removed, since those chips are not going to be released to customers.


Defect fixes
	None.


Major Changes For Version 3.02.68
Release Date:  3/30/2006

General Changes

Functionality
	A command-line parameter, mpt_qas_disable, has been added to the mptspi module.  Turning on this parameter disables QAS in all Ultra 320 negotiations.  The default is for QAS to be included in all Ultra 320 negotiations, if all devices on the SCSI bus operate at Ultra 320.
	Routine mptctl_open has been added and the routine has been added to the mptctl_fops structure.  The routine simply returns a zero value.

Defect fixes
	Issue: Panic when power is turned off to a SAS device during IOs.
Reported by: Test Team.
To Reproduce: Start an IO stream to a SAS tape drive; power down the tape drive.
Description of Change:  When a SAS event indicates a device is not responding (ReasonCode=MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING), routine mptsas_hotplug_work is scheduled to perform the hotplug device removal.  That routine was modified to:
	Issue a Task Management Target Reset
	Execute scsi_remove_device
	Execute scsi_device_put
The Task Management Target Reset causes the SAS Firmware to return all outstanding commands that are present at the Firmware to be returned with an IOCStatus of IOC_TERMINATED, causing the driver to return those commands to the scsi mid-layer with an error status.  Prior to this version, the Task Management Target Reset was being done after the device had been removed at the scsi mid-layer by scsi_remove_device, causing a panic when outstanding commands are returned to the scsi mid-layer.

	Routine mptscsi_remove has been modified to eliminate a panic when module mptspi is uloaded in a SLES 9 system.  The scsi_remove_host routine call was replaced, for each attached target, with:
1) A Task Management Target Reset, to clear all outstanding commands in the Firmware.
2) A scsi_remove_device call.
3) A scsi_device_put call.
	Issue: Domain Validation may not be performed when a device is added.
Reported by: Developer.
To Reproduce: Power on a device and access it.  Observe Domain Validation IOs.
Description of Change:  Code that set a flag indicating valid Inquiry data has been received in routine mptscsi_slave_alloc has been removed.  This allows Domain Validation to be performed when the added device is accessed.

Major Changes For Version 3.02.66
Release Date:  3/15/2006

General Changes

Functionality
	SAS Hot Plug support has been added.

Defect fixes
	Issue: Hang condition when Ultra 80 drive is used in an OEMs enclosure.
Reported by: Customer
To Reproduce: Bring system up with that drive and enclosure.
Description of Change:  If the initial Inquiry data received is less than 57 bytes, the drive is assumed to not be capable of Ultra 160 or Ultra 320 speeds.  Domain Validation will start with Ultra 80 (WDTR, SDTR) unless throttled further by NvRam data.  This prevents a hang condition when Ultra 2 drives are used in one OEMs enclosure.


Major Changes For Version 3.02.65
Release Date:  3/15/2006

General Changes

Functionality
	Support for SAS Enclosures with SMART drives for a particular OEM has been added.

Defect fixes
	None.


Major Changes For Version 3.02.64
Release Date:  3/15/2006

General Changes

Functionality
	SAS 1078 support has been added.

Defect fixes
	None.

Major Changes For Version 3.02.63.01
Release Date:  2/24/2006

General Changes

Functionality
	None

Defect fixes
	Issue: Offensive comments, code.
Reported by: IBM.
To Reproduce: View the driver source code and application files.
Description of Change:  The code base has been sanitized, removing as many references to particular OEM customers as is practical.  Also an offensive panic in one of the mptlan.c routines has been replaced with a more definitive print statement and a return with error indication.
	Issue: Onboard 1030 Channel B reset fails.
Reported by: Developer.
To Reproduce: Use lsiutil to reset Channel B of Onboard 1030.
Description of Changes: A Firmware downloadboot will be included when either channel of an onboard 1030 is reset.  This is necessary in order for the onboard 1030 to become operational.
	The code that checks for the necessity for a Firmware downloadboot when a chip is reset was not verifying if the HBA was a single channel adapter.  This caused a panic when a SAS HBA is  reset via a lsiutil request.  This check has been added.


Major Changes For Version 03.02.63
Release Date:  12/21/2005

General Changes

Functionality
	Added SuSE SP3 Support  2.6.9-7.244
	Added SuSE NLD9 Support  2.6.9-7.111 (only i568)
	Added debug messages for new firmware asynchronous events: MPI_EVENT_IR_RESYNC_UPDATE, MPI_EVENT_IR2, MPI_EVENT_SAS_DISCOVERY, MPI_EVENT_LOG_ENTRY_ADDED
	Service Script `fusion.mptcl` used for loading the mptctl driver, has been modified so the ioctl driver is always first to be loaded, and last to be unloaded.
	Source RPM has a couple suggested changes from a customer.

Defect fixes
	SuSE Driver Update Disks  added support for USB Floppy and USB CDROM  handles issues with drive letter assignments so the USB devices obtain drive letter assignments after mpt fusion. 
	Fix in dkms kit. A change in the dkms.conf to fix problem where not all the scsi llds were included in the ramdisk image, and rebooting resulted in a panic.

	Issue: SPI/53C1030 panic 
Reported by: Testing.
To Reproduce: Install using Driver Update Disk, results in driver not loading.
Description of Change:  The fix is to write MPI_HIM_DIM to the Host Interrupt Mask register, when enabling interrupts.  Apparently in previous release of driver, writing a 0 to the HIM, was incorrect, as the doorbell interrupts were enabled.  The ISR doesnt properly handing this type of interrupt, thus we need to mask this.

	Issue:  SPI/53C1030 panic and freezes.
Reported by: Customer.
To Reproduce: Install SuSE SLES9 SP2 onto RAID1 volume.  Install customers application.  Pull drive, and reinsert.  Mirror then is resyncing.  In time, the system will freeze.
Description of Change:  The ioctl driver stack is using wait_event_interruptible_timeout(), for waiting on firmware request to complete.   It appears that sometimes we are getting control back from this function before the application actually completed this command, thus resulting in the returning of stale data back to the application.  Its believed the application is using signals for inter thread communication, thus resulting in the problem.  The fix is to using wait_event_timeout(), which will not be interrupted by outside signals.

	Issue:  SPI/53C1030 driver hang when unloading the driver for a flash less controller.
Reported by: Testing.
To Reproduce: Unload the driver when the controller is an embedded controller with no flash.
Description of Change:  When unloading the driver, the downloading of firmware to flash has changed from download to the first ioc, to downloading to the second ioc. Apparently the driver hang is due to SYNCHRONIZE_CACHE being sent to devices on the 2nd ioc after the first ioc had downloaded the firmware.



Major Changes For Version 03.02.62
Release Date:  11/28/2005

General Changes

Functionality
	Change in slave_destroy  target reset issued when devices are being removed is changed so only devices detected from the  slave_configure entry point will have a target reset issued.  
	DV poor performance  another fix (look at 3.02.61 release notes). The synchronization between alt_ioc bringup and domain validation is moved around mptscsih_doDv; because config pages which issue negotiation could fail due to alt_ioc bringup.

Defect fixes
	Issue: SAS PCI Express HBAs dont work. 
Reported by: Customer.
To Reproduce: Loading the driver with an appropriate SAS card having PCI Express, would result in error recovery.
Description of Change: Root caused to lost interrupts.  The fix is to write  0 to the Host Interrupt Mask register, when enabling interrupts.  Apparently writing 1s to some of the reserved bits was causing problems with lost interrupts.



Major Changes For Version 03.02.61
Release Date:  11/16/2005

General Changes

Functionality
	Change bus_type = SCSI, to SPI
	Added "module=THIS_MODULE" in mptfc/mptsas/mptspi - scsi_host_template, so the driver will not unload when a device handle is opened
	Proper handling of return error codes in probe functions for mptfc/mptsas/mptspi
	flush the hot plug work queue when the mptsas driver unloads
	DATA OVERRUN replies will report good status and resid = 0.  This allows wide SCSI tape drives negotiated at Ultra 80 or slower to operate properly when an odd number of data bytes are requested

Defect fixes
	Issue: panic - when calling ioctl HP_GETHOSTINFO
Reported by: Customer.
To Reproduce: This ioctl calls toolbox f/w call to gather the
backplane info for HP.  The interrupt handler was accessing a NULL pointer, thus resulted in panic.
Description of Change: A rewrite of the code to use the existing wait_event_interruptible_timeout() mechanism that is there in mptctl.  The old toolbox code is deleted.

	Issue: poor performance on Ultra 320 controllers, 1030, 1020A, 1020
Reported by: People from the linux community.
To Reproduce: Domain Validation is failing to negotiate better than asyn-narrow speeds.  Domain Validation is done thru work queue spawned in thread.  The problem occurs when the thread on the first channel is still running when the second channel is being initialized. When the 2nd channel is brought up, the Domain Validation on the other channel is killed.
Description of Change: Add synchronization between domain validation thread and initialization of controller. This is done by using spin_lock called initializing_hba_lock.


Major Changes For Version 03.02.60
Release Date:  10/26/2005

General Changes

Functionality
	Red Hat RHEL4 Update 2 support added in RPMs and Driver Update Disks.
	DKMS  Combined RedHat and SuSE into single RPM.
	Added service script that will auto load the mptctl driver at boot time. This driver is a character driver which handles the IOCTLs. This is added to RPMs (binary and DKMS), and SuSE Driver Update Disks. This was not added to RHEL4 series Driver Update disks.
	lsiutil version 1.40 update.
	mpt_get_msg_frame()  this function is used for obtaining a message frame.  With this release, the failure of this call will be using the dfailprintk mask debug option.   This will improve debugging this particular failure case. Its enabled by uncomment `EXTRA_CFLAGS += -DMPT_DEBUG_FAIL` in the driver makefile, and re-compiling the driver. 
	Increased port enable timeout for SAS(both IR and IT Firmwares) to 300 seconds.  

Defect fixes
	Issue: CSMI IOCTL get_raid_config  mixing sata and sas hot spares assigned to raid volumes shouldnt be allowed.
Reported by: Customer.
To Reproduce: Create a RAID volume.  A SATA hot spare should be assigned only to SATA volumes, and SAS hot spares should be assigned only to SAS  volumes.
Description of Change: The device type is checked when assigning hot spares to active raid volumes.  Also capacity check was added to insure the hot spares are large enough to fit into its assigned raid volume.

	Issue: Adding/Removing SAS devices could result in a panic.
Reported by: Internal Test Labs.
To Reproduce: Hot adding/removing many devices(at least 4), or turning power on/off many times, could result in panic.  This can be reproduced as well by creating/deleting raid volumes.
Description of Change: Adding a semaphore around the hot plug thread.  It seems this thread was being re-entered causing a device link list to become corrupted.

	Issue: Panic unloading driver  FC949.
Reported by: Customer.
To Reproduce: The panic occurs during unloading the driver.  When the first channel has been unloaded, the 2nd channel is trying to be freed, but wait, a host reset occurs, then there is panic. This driver fixs the panic, not the host reset.  
Description of Change:  There is a pointer in the per host adapter data area that points to the other channel per host adapter data area. This pointer is called ioc->alt_ioc. Its used so one channel can see the other channel data configuration.  The panic occurs because this pointer was not reset back to zero when the first channel was freed during driver unload time.  When the 2nd channel begins to be unloaded, a host reset occurred for some reason. IN the host reset code, it was accessing the ioc->alt_ioc pointer which now is invalid pointer since the other channel has already unloaded.   The fix is to set those pointers to zero when a respective channel has unloaded. 

	Issue: CSMI IOCTL get_location  memory leak
Reported by: Developer
To Reproduce: N/A
Description of Change: Several exit paths in this ioctl were not properly cleaning up the freeing of allocated memory.



Major Changes For Version 03.02.59
Release Date:  09/29/2005

General Changes

Functionality
	CSMI Ioctls  Timeout values are honored by the application timeout value, which is sent by the ioctl header.  Previously the driver was hard coding a 10 second timeout.
	Add command line option mpt_sas_hot_plug_enable.  This will allow the end user to disable hot swap support for when SCSI devices are not responding.   Hot swap support for SCSI devices being added, is not affected by this change.
	The power management suspend function  the definition of the input parameter called state has changed in the 2.6.12 kernel; this driver adds support for this change so the driver can compile in the newer kernels.
	  CSMI Phase III support  modifications are added in both driver and hptest application. Support was added in sas_phy_control, which allows link rate change, disabling/enabling phys, and returning default phy settings.  Support was also added in sas_get_location which returns locate array info for raid volumes.  Using the updated hptest provided in the driver source, one can validate these changes.  The hptest tool selection items 18 and 19 will test these updated ioctls.  

Defect fixes
	Issue: CSMI IOCTL get_raid_config  driver was not recognizing smart errors for hot spares.
Reported by: Customer.
To Reproduce: Create a RAID volume, attach a hot spare with known smart error.  Then use the hptest application provided in driver source to verify that the hotspare drive status has been set to CSMI_SAS_DRIVE_STATUS_DEGRADED, instead of CSMI_SAS_DRIVE_STATUS_OK.
Description of Change: Check SAS Phys disk Page 0 for Smart Errors, then for Hot Spare return degraded drive state. 

	Issue: Panic in mptlan driver during any type of error recovery; as long as there are no Fibre Channels controllers present in configuration.
Reported by: Developer test.
To Reproduce:  Using sg_reset h /dev/sg0 will replicate this issue as long as mptlan.ko is loaded, ( there are no Fibre Channel controllers present).
Description of Change: When there are no Fibre Channel Controllers present in the configuration, and when mptlan.ko is loaded, the net_device instance will not be created.  If the error handling entry point is called, the driver was not checking whether the net_device pointer was a NULL pointer.


Major Changes For Version 03.02.58
Release Date:  09/08/2005

Driver General Changes

Functionality
	MPI Headers v1.05.12 upgrade 

Defect fixes
	IR Performance fix  The performance problem is due to a fix made in the 3.02.16 driver, where a target reset was added in mptscsih_slave_destroy() function.  This target reset would be killing domain validation on hidden physical disks in a raid volume, resulting in some disks to negotiate at 2MB/s ( async narrow speeds). The fix is to only prevent the target reset for SPI, and disk hidden in a raid volume. The previous fix made in 3.02.16 is not backed out for FC and SAS, as well as SPI for disks not members of raid volumes.

Major Changes For Version 03.02.57
Release Date:  08/26/2005

Driver General Changes

Functionality
	Verbose kernel messages for Integrated RAID events.

Defect fixes
	Mptlan  Fix for the Lan driver. In the interrupt handler, message frames were not being freed in certain circumstances.
	Fix for ioctl= MPTEVENTQUERY. The event log size was returning 0 instead of 50, when driver first loaded.  Previously the driver would only initialize the event log size after ioctl=MPTEVENTENABLE was called.
	Fix for Asyn event notification logic.  The aen_event_read_flag was never getting turned on when SIGIO event was raised. This flag is used to inhibit SIGIO notification between reading the event log.
	Fix for CSMI get_raid_config_info.  This fix involves recognizing smart errors, and marking a drive as degraded when smart errors are detected.

Major Changes For Version 03.02.56
Release Date:  08/18/2005

Driver General Changes

Functionality
	MPI Headers v1.05.11 upgrade
	The function mpt_interrupt is split into two separate functions, for cleaner readable code. This requested by patch on linux-scsi@ mailing list

Defect fixes
	Fix oops when loading mptctl.ko, with initiator mode disabled.  This fix in SCSI LLD probe routines, when in initiator mode, the routine was returning a failure code = ENODEV.  When the probe routine returned a failure code, the pcidev->driver pointer was not initialized, thus causing a oops later when mptctl.ko registered itself to mptbase.ko
	CSMI  Get Raid Config  Fix for setting Phys Disk to REBUILDING state when the volume was being resyned.
	Several build environment RPM fixes.  The rpm was not properly handling rpm Uvh upgrade, which is when upgrading from an older to newer version driver.  Also fix problem with driver loading order in ramdisk image, so drive mapping is conserved when other scsi controllers are listed in the initrd configuration files.








Major Changes For Version 03.02.55
Release Date:  08/05/2005

Driver General Changes

Functionality
	CSMI  CC_CSMI_SAS_SSP_PASSTHRU and CC_CSMI_SAS_STP_PASSTHRU  remove the quiece io surrounding raid  passthru request. 

Defect fixes
	CSMI  CC_CSMI_SAS_SSP_PASSTHRU, CC_CSMI_SAS_STP_PASSTHRU  add check in code to insure that driver doesnt write beyond user space when returning data for scsi passthrus request.
	CSMI  CC_CSMI_GET_RAID_CONFIG  Initialize the bDriveCount field to zero.  In some cases the application was sending an non-zero value, and the driver incremented the drive count assuming bDriveCount was zero.   Thus if bDriveCount was non-zero, the driver would report more drives in raid volume than actually existed
	CSMI  CC_CSMI_GET_RAID_CONFIG  The application was sending a buffer size larger than what was actually allocated by the application.  The driver would overwrite the entire buffer when data was returned to user space.  When the application freed the memory allocated for this transaction, the application would crash.
	CSMI  CC_CSMI_GET_RAID_CONFIG  Fix a panic in the driver when divide by zero occurred.   This occurred due to firmware falsely reporting that raid1 volume was re-syncing.  The driver was calculating the rebuilding rate expecting the divisor to be non-zero value, thus resulting in the panic.

Major Changes For Version 03.02.54
Release Date:  07/22/2005

Driver General Changes

Functionality
	lsitutil v1.38  update
	Added pci id support for FC949ES
	CSMI support compiled in for RHEL4
	Added SLES9 SP2 support. Details follows.
	SLES9 SP2 Support: msleep was changed to msleep_compat, and msleep_interruptible changed to msleep_interruptible_compat.  The msleep API was a backported to SLES9 SP2, thus we had to change this to compat from linux-compat.h.  Also both msleep and msleep_interruptible implementation was updated to 2.6.13 kernel implementation.
	Some backports from kernel.org - from 2.6.11, 2.6.12, and 2.6.13 kernels  Details follows:
	Backports: eh thread are now called with interrupts enabled
	Backports: mptscsih_shutdown - change parameters being passed - from device to pci_dev
	Backports:  ioctls - interface changes - x86_64 compatibility for 32 apps 
	Backports: change_queue_depth API - added new sysfs attribute
	Backports: mptscsih_suspend - change to parameters being passed - from u32 to pm_message_t
	Kconfig - added `default m` so the new modules {mptspi, mptfc, mptsas} are compiled as modules by default 

Defect fixes
	endian fix's thru out code, but mostly in ioctls 
	csmi ssp_passthru and stp_passthru - check to see if there is data transfer to device. If there is not going to be data transfer, then eliminate the need to allocate memory with zero data length.
	csmi ssp_passthru and stp_passthru - remove the commented code for quiesing io. This was commented out in previous 3.02.53. There has been a fix for this in the 4.01+ firmware for thus.
	csmi get_raid_info - max drives per set was returning 0 when there were no volumes created. This release will always return valid data for this member even if there are no volumes. Typical value for this is 10. 
	Remove scsi_device_online from linux-compat.h, as well as from mptscsih_flush_running_cmds(). This check if device is online is no longer needed as eh_threads in the driver are more robust, and task managment request will be completed in the contents of the eh handlers.  Before we were using timers in the driver, and it was possible that scsi-mid layer would offline devices before the host reset.





Major Changes For Version 03.02.53
Release Date:  07/07/2005

Driver General Changes

Functionality
	MPI Headers v1.5.10 update
	lsitutil v1.37 - update
	mptutil v00.00.06 - update
	CSMI initial implementation - CC_CSMI_SAS_GET_LOCATION 
	CSMI initial implementation - CC_CSMI_SAS_PHY_CONTROL  
	CSMI initial implementation - CC_CSMI_SAS_GET_CONNECTOR_INFO 

Defect fixes

	Added Steve Shirrons SCSI_RESIDUAL_MISMATCH data corruption fix.
	Changed MPT_IOCTL_INTERFACE_SAS from (2) to (3).  This is used in the ioctl path, and returned in GET_IOC_INFO.
	CSMI  CC_CSMI_SAS_SSP_PASSTHRU and CC_CSMI_SAS_STP_PASSTHRU  comment out quiece io  due to bug in firmware, the driver would timeout waiting for a reply message frame.  Its recommended to not issue passthrus that write data to the media, as this could result in data corruption.
	mpt_reply_depth  This command line option default value is increased from 64 to 128.  This prevents certain cases in which the device driver becomes depleted of message frames.









Major Changes For Version 03.02.52
Release Date:  06/22/2005

Driver General Changes

Functionality
	Added support for displaying a string which translates the meaning of SAS loginfo dword returned from the firmware into something more meaningful to the enduser.
	Added bounds check in ISR that validates the cb_idx value in the message context of the reply frame.  The cb_idx is an index to which driver issued the original request to firmware.
	Added bus reset after port enable. This only for SCSI.  SCSI port page 2 , PortFlags is read to determine whether we can issue bus reset or not.   This was added for cases when there is no BIOS, and its possible for initiator and target to not be at the negotiation parameters when the driver loads, which could result in command timeout at driver load time.

Defect fixes

	CSMI  get controller config  was not returning the proper data for usSlotNumber.  The driver returns the slot number from IOC Page 1.  If the ioc_page1->pci_slot_number = 0xFF, then return SLOT_NUMBER_UNKNOWN
	CSMI  get phy info  was not returning the proper device type for the attached device. This driver returns the Attached Device Info bits regarding device type from Phy Page 0. 
	CSMI  get raid config  was not returning spare drive info.  This driver returns the spare pool info from IOC page 5.
	SuSE driver update disks - were broken for SCSI, and FC parts older than FC949/FC939.  This release will solve those issues where there are older SCSI/FC parts, and when there are combinations of SCSI/FC/SAS in same system.  This release also will only load the drivers(mptspi/mptsas/mptfc) that are present at time of installation, e.g. the dud will auto detect the chips.
	SuSE binary rpms  added support for auto detecting the chips present at time of installing rpm, and only the respective split driver (mptspi/mptsas/mptfc) for those chips detected will be loaded.

 





Major Changes For Version 03.02.51
Release Date:  06/01/2005

Driver General Changes

Functionality
	Added dumping Response Code for task management request on reply.
	For valid FC Response Info, added to the debug print string are the host, target, and lun ids.   This give better understanding of where this info came from.


Defect fixes

	Fix Loading driver with SAS and SCSI at the same time.  The fix was mptsas.c was registering MPTSPI_DRIVER when it called mpt_register, when it should off have been MPTSAS_DRIVER.



















Major Changes For Version 03.02.50
Release Date:  05/25/2005

Driver General Changes

Functionality
	Introducing the split drivers format.  There are three new drivers for each bus type; e.g. mptsas.ko, mptspi.ko, and mptfc.ko.
	Deliverables binary rpms will contain only kernels for SuSE service packs and RedHat updates.  Use the source rpm if your wanting to build drivers for interim errata kernels.  Support for SUSE Professional 9.1 and 9.2 has been removed.


Defect fixes

	Source RPMs  fix for compiling drivers for all kernels installed on the system. Before the source rpm was only compiling drivers for the booting kernel.
	Redhat DUD contains anaconda update for solving the issue of mptctl and mptlan not being copied from driver update disk to hard disk.  This will solution will be used instead of running post install script.  When using DUD, you will need to pass:

linux dd updates at command line.












Major Changes For Version 03.02.19
Release Date:  05/09/2005

Driver General Changes

Functionality
	RAID Hot Plug Events  When using online application which creates and deletes RAID Volumes, the driver will add and remove the scsi devices on the fly.  In addition, the driver will respond to VOLUME STATUS changes, such as volume changing from Online to failed state, and vice versa.   Also - the entire hot plug logic was streamlined into one worker thread, whereas before it was two separate threads handling adding and removing devices separately.
	CSMI STP/SSP passthru support for IR hidden phys disk. The driver will pass scsi command block to physical disks hidden in a volume. The driver will Quiese IO during passthru.
	Only allow SYNCHRONIZE CACHE to be issued to disk peripherals. Before it was working for any device that supported qtags.
	Inhibit dumping FCP Response Info whenever MPI_SCSI_STATE_INFO_VALID was set by adding an additional check in the reply message for ResponseInfo being valid.
	In Kconfig - clarifying the help message for FUSION_MAX_SGE.

Defect fixes
	pci_disable_io_access - this function changed so only bit 0 was being set to 0, before it was setting the upper 8 bits of the word to zero.  This function is used for fixing an errata in 1064/1068 for disabling port io access, called from FWDLB.


Major Changes For Version 03.02.18
Release Date:  04/21/2005

Driver General Changes

Functionality
	Asynchronous Event Notification (AEN) has been implemented.  This causes the driver to notify applications when certain events occur so they can immediately perform related activities.
	Support for system with multiple pci domains, ia64 platforms.  mpt_detect_bound_ports was modified so cards with same device:slot:func on different domains are recognized.
	Increased FUSION_MAX_SGE in Kconfig from 40 to 128.
	Support for MPI_EVENT_PERSISTENT_TABLE_FULL  when the driver receives this event, it will clear the persistent mappings for devices not present.

Defect fixes
	Some target devices can respond with Data Underrun on top of a Busy status. The MPT driver was returning SOFT_ERROR for the Data Underrun condition, instead of reporting the BUSY ststus. The driver has been changed to ignore the Data Underrun in this situation, and only report the BUSY status. 
	When a target device responds with BUSY status, the MPT driver was sending DID_OK to the SCSI mid layer, which caused the IO to be retried indefinitely between the mid layer and the driver.  By changing the driver return status to DID_BUS_BUSY, the target BUSY status can now flow through the mid layer to an upper layer Failover driver, which will manage the I/O timeout. 





Major Changes For Version 03.02.17
Release Date:  03/31/2005

Driver General Changes

Functionality
	LUN Persistency has been added. The Linux driver has the ability to perform a hard reset (kick start) of the chip, which causes the chip to loose the existing PUN mappings. After the chip has been restarted, it re-establishes communication with the devices on the link. If the device configuration has changed (devices added or removed) from when the system initially booted, the new mappings can be different, resulting in data corruption. LUN Persistency insures that mappings will not change across hard resets.
	MPI headers 1.5.9
	Host Page Buffer Persistent support.
	Added SRPMS  source RPMs, instead of binary RPMs.
	Prevent printing ioc info for lan and stm drivers within the interrupt handler.

Defect fixes
	None.





Major Changes For Version 03.02.16
Release Date:  03/17/2005

Driver General Changes

Functionality
	Added command line option mpt_pq_filter.

Defect fixes
	Added Target Reset in mptscsih_slave_destroy  do this prior to flushing outstanding scsi commands and message frames.  Before this fix, we were issuing target reset after scsi_remove_device, which could result in message frames being freed twice, and resulting in a panic from mptscsih_io_done.
	Added check in mptscsih_io_done, to check for 0xdeadbeef signature, which indicates that a message frame we are about to free was already previously freed.
	Removed calling mpt_free_msg_frame in some places in mptctl.c, when it should not of been called, as it is already handled in the context of mptctl_reply.
	Removed calling mpt_free_msg_frame() from mptscsih_abort.
	Properly return from mptscsih_abort when there is an error returned from mptscsih_TMHandler.
	Added more verbose reporting of scsi command during calling of error handling entry points.



Major Changes For Version 03.02.14
Release Date:  03/04/2005

Driver General Changes

Functionality
	Upgraded to 1.5.8 MPI headers.
	Added lsiutil version 1.32., and use I../ in the makefile so headers are referenced in above folder.
	Added new version update for MPTUTIL 
	Added FC Transport Attributes backward compatibility to SLES9
	EBOS support
	Error handling  For data UNDERUN and scsi status returns SAM_STAT_BUSY, change is to return SAM_STAT_BUSY instead DID_SOFT_ERROR

Defect fixes
	Fix hot plug issue: Fixed the bug of sas device status change events not being processed for one of two controllers. The driver was using global work task, it was fixed by putting the work task member in the per device extension.
	Fix hot plug issue: removing and adding drives, would result in error 1 string displayed from mid layer. This was because driver was not calling scsi_device_put, which decrements device count; this occurred when the device was being removed from mid-layer.
	CSMI IOCLTS: Firmware download fixs in the application and driver.  Driver hang when compiled -static.  Application would say download succeeded, when it didnt.  Added diag reset after fw download to insure updated fw revision displayed in another CSMI call.  
	CSMI IOCTLS: Task management application fixs for displaying completion data in proper format.
	CSMI IOCTLS: Set phy info, is not supported, thus application will announce that this call is not supported.



Major Changes For Version 03.02.13
Release Date:  02/22/2005

Driver General Changes

Functionality
	None

Defect fixes
	Pulling power to JBOD having more than one SATA drive would cause a PANIC or hang.  There is a fix to correct this problem by maintaining a link list of SAS device change events, and to transverse this link list from the work task queue. This fix also includes code will which complete all SCSI commands that are outstanding for this when device when it is removed.  The TARGET_RESET has been added back in asyn event handling, which was removed in previous driver release.



Major Changes For Version 03.02.12
Release Date:  02/10/2005

Driver General Changes

Functionality
	Upgraded to 1.5.7 MPI headers.
	Added new version update for LSIUTIL v1.30
	Added new version update for MPTUTIL 
	Added case for MPI_FUNCTION_TOOLBOX in IOCLT path for MPI Passthrus
	Added iocstate SySFS attribute.
	Host Buffer Support Fixs: added new function mpt_host_page_alloc.

Defect fixes
	Removed target reset code during handling asynchronous event request for sas device removal.
	Fix in IOCTL path for SCSI_IO passthrus:  the sense width in the message flags was getting overwritten by a call to mpt_msg_flags() .




Major Changes For Version 03.02.11
Release Date:  01/28/2005

Driver General Changes

Functionality
	Added target reset support for SCSI bus type.
	Upgraded to 1.5.6 MPI headers.
	MSI Support  created a command line option mpt_msi_enable for enabling MSI support.  Default is MSI disabled.
	Removed the watchdog timer code in the ioctl path. The new method will wait for completion of request in the same thread.
	For Integrated Raid, added support for recreating the SAS device link list when volumes are added or deleted.
	Cleanup and renaming SAS support routines in mptbase.
	Added enhanced the event reporting code.
	Added CSMI ioctls framework for get_location, get_connector_info, phy_control.
	Added v.83 CSMI headers.

Defect fixes
	Minor fixes in CSMI  get raid configuration.
	Fix for when an Ultra320 device has a greater ID than a Ultra160 device, the Ultra320 device was negotiated with QAS enabled. 


Major Changes For Version 03.02.10
Release Date:  01/11/2005

Driver General Changes

Functionality
	None.

Defect fixes
	Code was added to force the host sg_tablesize  parameter to be no more than the number of Scatter/Gather entries in the Chain Buffers plus the number of Scatter/Gather entries in a Message Frame.  This ensures that IOs can be completed.  Performance can be severely impacted if the number of Chain Buffers is small (this can be done by setting the mpt_chain_alloc_percent to 1 or two), causing the IOs to be retried often.  If mpt_chain_alloc_percent is set to zero, sg_tablesize is set to the amount of Scatter/Gather entires that will fit in a Message Frame; this reduces performance somewhat but does not cause IOs to be retried.
	Removed the watchdog timer code for task management request handling in mptscsih.  This is a request from Kernel.org. The new method will wait for completion of task management request in the same thread.


Major Changes For Version 03.02.09
Release Date:  12/15/2004

Driver General Changes

Functionality
	None.

Defect fixes
	Message Frame allocation is mpt_can_queue + 12 to allow for messages that are sent to the IOC but the IOC doesnt return the Message Frame back to the host driver.  An example of this is the Event Notification request.  This also reduces the amount of memory allocated per IOC.

Major Changes For Version 03.02.08
Release Date:  12/06/2004

Driver General Changes

Functionality
	Moved the SAS CSMI IOCTLS to a separate source code called csmisas.c.
	PortEnable Timeout adjusted for Raid Volumes.
	Added new MPI Headers version 1.5.3.
	Replaced ioc_chip with bus_type.
	Hotswap fix so SAS drives added/removed immediately without having to use rescan script.
	Changing how command line options are passed, passing the mptscsih string has been removed. Use modinfo to see usage and description of the new parameters.
	Removed IOCTL mptctl_hba_pciinfo .

Defect fixes
	Added code to allow only one downloadboot to onboard dual function MPT chips when the mpt driver is removed.
	Removed code to turn on Information Unit (IU)  during Ultra 160  negotiations.  The 1030 SCSI chip doesnt properly support IU at Ultra 160 speeds.
	Fixed code to properly do Big Endian/Little Endian conversions of req_idx in the get and put Message Frames routines.  This prevents panics on Big Endian machines.
	Removed mptscsih_slave_destroy vdev != NULL check fixed by removing the DEVICE_NOT_THERE calling of same function.


Major Changes For Version 03.02.06
Release Date:  10/25/2004

Driver General Changes

Functionality
	Update to mpi headers v1.5.2
	PIO fix errata => disabling IO access
	mptctl_hba_pciinfo => usage of ioc link list, usage of __user API
	mptctl_fw_downloadboot => usage of __user API
	full use of lower endian api in GetSasInfo(mptbase.c), and CSMI Ioctls(mptctl.c)
	use link list api for ioc->SasDevice
	add new PCI Device IDs for 1064a,1064e,1066,1066e,1068,1068a,1068e,939x,949x
	always return residual id from mptscsih_io_done
	issue task management target reset when SAS drive is added within asyn event handler
	usage of semicolon (instead of comma or white space) for command line options
	Kernel.org updates: usage of __iomem and msleep_interruptible

Defect fixes
	None.

Major Changes For Version 03.02.05
Release Date:  10/08/2004

Driver General Changes

Functionality
	Added ioctl downloadboot capability via application mptfdu.
	Added ioctl hba pciinfo.
	Added MSI Support.
	Added CSMI Raid Support ioctls., Get Raid Config, Get Raid Info.
	Hot Swap - pulling drive, will automatically remove the per device memory allocation.
	Added new sysfs attribute queue_depth.
	Added new sysfs attribute fc_transport: port-id, port-name, node-name, however this code is ifdef via MPTSCSIH_ENABLE_FC_TRANSPORT, and has to be recompiled to be enabled from the Makefile.
	More List API updates from Kernel.org.
	Clean ups in the slave_configure and slave_destroy, from Kernel.org.
	Removed FusionInitCalled code, from Kernel.org.
	Removed MPTSCSIH_DBG_TIMEOUT code.
	Added debug print statements.
	Removed dead code in driver: Multipath, and DumpDriver(MPTDMP_DRIVER).
	Reset Host Diagnostic Buffer indicators during a Diagnostic Reset sequence.
	Application mptfdu updates.
	Application hptest/csmisas bug fix's.
	Added application mptutil.

Defect fixes
	None.


Major Changes For Version 03.02.04
Release Date:  09/08/2004

Driver General Changes

Functionality
	None.

Defect fixes
	For stp passthru, bug in checking stp drives, would fall past a failure condition check, even though it failed.  Also, SATA drives are not enabling the STP_TARGET bit in the device config page, therefore a check was added to insure we could issue STP passthru to SATA devices.
	Removed MPT_DEBUG_IRQ define from mptbase.c and Makefile, as its not longer used.
	MPI_FUNCTION_DIAG_BUFFER_POST processing was added in routine mptctl_reply.  In that processing, if the IOCStatus is MPI_IOCSTATUS_DIAGNOSTIC_RELEASED, RELEASED is added to the buffer types status, eliminating the need to manually release the buffer.  In addition, if MsgLength is long enough to include TranferLength, that length is saved and returned in Query requests.  Both of the above checks are also include if an asynchronous MPI_FUNCTION_DIAG_BUFFER_POST reply is received; this may occur if the proper ProductSpecific value is set in the request.
	Requests sent by mptlan do not include the NB bits.
	Routine mptctl_reply was modified to process ioctl completions without any Reply buffer.  Examples of this are SCSI IOs issued by ioctl routines which complete successfully (Turbo reply).


Major Changes For Version 03.02.03
Release Date:  08/20/2004

Driver General Changes

Functionality
	None.

Defect fixes
	Some routines were declared Static per a Kernel.org request.
	Host Diagnostic ioctl code was expanded to handle the UniqueId word, and to check for application compatibility.
	Host Diagnostic ioctl code now sets the Flags field in buffers being returned to applications.
	Fixed driver to correctly honor the command-line request dv:n.  The driver will now only do the Basic portion of Domain Validation if this request is received.
	SCSI non-packetized devices (devices running at Ultra 160 or slower) are now limited to 64 luns.  This prevents phantom luns being generated if a full lun scan is done.


Major Changes For Version 03.02.01
Release Date:  08/09/2004

Driver General Changes

Functionality
	SAS Support added, Diag Buffer Support Added.
	CC_CSMI_SAS_GET_PHY_INFO - Ioctl was not returning proper sas address for attached devices.
	CC_CSMI_SAS_FIRMWARE_DOWNLOAD - Ioctl minor bug fix, was not successfully downloading image, due to flag not set in msg frame. 
	CC_CSMI_SAS_GET_SCSI_ADDRESS - Ioctl minor bug fix, was failing to find sas address properly in device link list.
	CC_CSMI_SAS_TASK_MANAGEMENT - Ioctl new implementation.
	Added support for Generic STP and SMP msg frame passthroughs.
	Added Host Page Buffer support for releasing memory to the fw, implemented thru doorbell handshake.
	Ioctl application updates, and updated to v79 headers.

Defect fixes

Major Changes For Version 03.01.14.23
Release Date:  08/05/2004

Driver General Changes

Functionality
	
	
Defect fixes
	A fix for the module parameter mptscsih; which was not being exported.



Major Changes For Version 03.01.13.23
Release Date:  07/27/2004

Driver General Changes

Functionality
	
	
Defect fixes
	Fix panic for IM config when driver is loading.  This was due to a NULL pointer in mptscsih_initTarget.


Major Changes For Version 03.01.12.23
Release Date:  07/14/2004

Driver General Changes

Functionality
	The port of the 2.05.22 thru 2.05.23 driver.
	Patch provided by Christoph Hellwig : remove the isense code.
Defect fixes
	None



Major Changes For Version 03.01.11.22
Release Date:  07/07/2004

Driver General Changes

Functionality
	The port of 2.05.17 thru 2.05.22 driver
Defect fixes
	None

Major Changes For Version 03.01.10
Release Date:  07/02/2004

Driver General Changes

Functionality
	Patch provided by Masao Fukuchi: mptctl updates for hot plug.
	Patch provided by Christoph Hellwig: mptlan updates for hot plug; remove CONFIG_LBD ifdefs from fusion mptscsih
Defect fixes
	None


Major Changes For Version 03.01.09
Release Date:  06/18/2004

Driver General Changes

Functionality
	Patch provided by Masao Fukuchi: Remove limit on number of support hosts.
	Patch provided by Christoph Hellwig: kill scsi_to_pci_dma_dir usage, both pci and scsi use the same bits; kill mptscsih_io_direction and always trust the midlayer; kill usage of Scsi_Foo typedefs; use <scsi/*.h> headers; avoid list search in fusion ->proc_info.
	Patch provided by Jeremy Higdon: Add readX_relaxed .
Defect fixes
	None




Major Changes For Version 03.01.08
Release Date:  05/26/2004

Driver General Changes

Functionality
	The port of 2.05.13 thru 2.05.16.01 driver
Defect fixes
	None

Major Changes For Version 03.01.07
Release Date:  05/24/2004

Driver General Changes

Functionality
	Patch provided by Christoph Hellwig: clean up backword compatibility with 2.4 kernel and older
Defect fixes
	None



Major Changes For Version 03.01.06
Release Date:  05/04/2004

Driver General Changes

Functionality
	Change in mptscsih_io_done. For MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR return DID_SOFT_ERROR.
Defect fixes
	None



Major Changes For Version 03.01.05
Release Date:  04/22/2004

Driver General Changes

Functionality
	Added FC909 support back.
Defect fixes
	None

Major Changes For Version 03.01.04
Release Date:  04/14/2004

Driver General Changes

Functionality
	Additions to loginfo debug info.
	Added IOC debug error code info.
	Dump FCP ResponseInfo.
	Added element "segmentID" in get_iocinfo IOCTL.
	
Defect fixes
	Fix a Oops in mptscsih_flush_running_cmds().



Major Changes For Version 03.01.03
Release Date:  03/23/2004

Driver General Changes

Functionality
	Request from Jeff Garzik: Replace wrappers for CHIPREG_XXX with defines.
	Remove support for FC909.
	Remove PortIo modules parameter.
	Move procmpt_destroy function before pci_unregister_driver, as the memory allocated for the proc was not being deallocated.
	Remove mptscshi_reset_timeouts function. The timer was already expired when mod_timer is called.
	Fix small bug in slave_destroy, which could prevent domain validation on hidden drive in a RAID volume.
Defect fixes
	Fix fifo memory allocation under 64bit systems.



Major Changes For Version 03.01.02
Release Date:  03/17/2004

Driver General Changes

Functionality
	Request from Andi Kleen: put warning "Device (0:0:0) reported QUEUE_FULL!" into debug messages.
	Request from Alexander Stohr: fix warnings from mptscsih_setup and get_setup_token, when driver isn't compiled as module.
	Request from Randy Dunlap: Remove unnecessary min/max macros and change calls to use kernel.h macros instead.
Defect fixes
	None



Major Changes For Version 03.01.01
Release Date:  03/17/2004

Driver General Changes

Functionality
	None.
Defect fixes
	IM fix in slave_destroy, poor RAID1 performance.

Major Changes For Version 03.01.00
Release Date:  03/05/2004

Driver General Changes

Functionality
	The port of the 2.05.03 thru 2.05.13 driver.
Defect fixes
	None



Major Changes For Version 03.00.04
Release Date:  02/24/2004

Driver General Changes

Functionality
	Kconfig cleanup.
	Merged LAN driver updates from Kernel.org.
Defect fixes
	Fix bug with driver loading and no devices attached.

Major Changes For Version 03.00.03
Release Date:  02/12/2004

Driver General Changes

Functionality
	None.
Defect fixes
	Fix for discarded symbol in mptscsih.c, as seen in ia64. { mptscsih_exit() }

Major Changes For Version 03.00.02
Release Date:  02/02/2004

Driver General Changes

Functionality
	Hot plug fix's requested from Christoph Hellwig.
	mptbase_remove cleanups.
	mptbase_shutdown - calls the sub drivers entry points.
	__init, __ exit cleanups
Defect fixes
	None

Major Changes For Version 03.00.01
Release Date:  01/13/2004

Driver General Changes

Functionality
	Hot plug updates.
	Define shutdown entry point to replace old reboot notifier call.
	mptbase_pci_table clean up.
	Change naming of MPTSCSIH_DISABLE_DOMAIN_VALIDATION to MPTSCSIH_ENABLE_VALIDATION.
	CONFIG_PM defined incorrectly.
	probe/release cleanup
	replace do_div with sector_div
Defect fixes
	None




Major Changes For Version 03.00.00
Release Date:  01/06/2004

Driver General Changes

Functionality
	Added new PCI API support.
	Added ACPI support.
	Added CONFIG_LBA, READ16, WRITE16 support.
	Reduce task management (abort=2sec,reset bus=5sec, timeout=10sec).
Defect fixes
	Underun fix.
	Chain buffer free list not being init properly.


Major Changes For Version 02.05.00.06
Release Date:  01/16/2004

Driver General Changes

Functionality
	None.
Defect fixes
	IOMMU fix for SUSE.


Major Changes For Version 02.05.00.05
Release Date:  11/12/2003

Driver General Changes

Functionality
	None.
Defect fixes
	Error handling fixes, e.g. use of host_lock.


Major Changes For Version 02.05.00.04
Release Date:  11/04/2003

Driver General Changes

Functionality
	Removed __init from mptscsih_setup.
	Removed __init from get_setup_token.
	Changed copyright from 2002 to 2003.
	Added new mailto, and removed Pam.Delaney.
Defect fixes
	Added fix for 32bit emulation when unloading mptctl module.



