Files
scst/mpt
Vladislav Bolkhovitin 46a67fdb51 Patch from Erik Habbinga <erikhabbinga@inphase-tech.com>:
I've updated the MPT fusion target driver for LSI SCSI/FC/SAS HBAs.  The original SCST MPT driver was based on the 1.00.13 LSI
sample target driver.  LSI has since released version 1.00.14 of the sample target driver.  I've ported all the changes from .13 to
.14 into the SCST MPT driver for consistency.  I've also updated the SCST MPT driver to compile under 2.6.24 and 2.6.25.4.  Finally,
I force the SCSI parallel transfer rate to very slow depending on the SCSI HBA firmware revision.  Newer versions of SCSI HBA
firmware have a bug where the incorrect amount of data is transferred for non-divisible-by-4 length transfers (like standard 14 byte
REQUEST SENSE).  LSI is aware of the problem and I'll update the driver to restore functionality upon a new good SCSI HBA firmware
release.

I still have not confirmed operation with LSI SAS or FC HBAs.

Signed-off-by: Erik Habbinga <erikhabbinga@inphase-tech.com>

Changes:

./mpt/mpt_scst.h

- differences between LSI sample target drivers 1.00.13 and 1.00.14

./mpt/Kconfig

- remove some unnecessary white space

./mpt/mpt_scst.c

- differences between LSI sample target drivers 1.00.13 and 1.00.14

- changes for kernel 2.6.24 and 2.6.25.4

- force slow transfers for newer SCSI HBA firmware versions

./mpt/Makefile

- simplified for inclusion into kernel source tree

./mpt/in-tree/Kconfig-2.6.24.diff

- patch against 2.6.24 and 2.6.25.4 drivers/message/fusion/Kconfig

./mpt/in-tree/Makefile.diff

- changed to work with generate-kernel-patch script



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@387 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2008-05-22 16:36:59 +00:00
..
2006-12-13 11:42:59 +00:00

Target driver for LSI/MPT XXX cards
===================================

Version X.X.X, XX XXX 200X
--------------------------

This driver was originally developed by Hu Gang and then is developed by
Erik Habbinga <erikhabbinga@inphase-tech.com>. It is on the early stage
of development.

The current maintainer of this driver is Erik. Please send him all
question related to it (CC: scst-devel@lists.sourceforge.net).

This driver tested only on Linux kernel versions 2.6.15.x.

Building from the Linux kernel tree
-----------------------------------

To build from the kernel tree, you should:

1. Link drivers/message/fusion/mpt_scst to $(SCST_DIR)/mpt

2. Patch drivers/message/fusion/Makefile and
drivers/message/fusion/Kconfig by diffs from $(SCST_DIR)/mpt/in-tree

3. Correct in drivers/message/fusion/Makefile SCST_INC_DIR variable so
it points to correct directory with SCST include files.

Building outside the Linux kernel tree
--------------------------------------

Edit Makefile, comment there line 

obj-$(CONFIG_FUSION_SCST) += mpt_scst.o

and uncomment line

obj-m += mpt_scst.o

Notes on implementation
-----------------------
The driver takes the mptstm target driver implemented by LSI
and ports it to the SCST architecture.

The LSI hardware returns an error when it realizes that command
status and sense data cannot be sent in the same transaction.
This happens during non-packetized SCSI command handling (not FC or
SAS).  For SCSI implementations, the driver speculatively caches
sense data.  If the hardware reports that the sense data could not
be sent, the driver will return the cached sense data without
involving SCST if the next command is REQUEST SENSE.  Cached sense
data is discarded on bus reset or if the next command after sense
send failure was not REQUEST SENSE.

Caching sense data in this fashion probably won't work in a tagged
command queuing environment.  If SCSI hardware is being used, the
driver inspects responses to the INQUIRY command and clears the
BQUE and CMDQUE bits in the standard INQUIRY response to disable
tagged command queuing.