From: Kashyap, Desai <kashyap.desai@lsi.com>
Subject: [SCSI] mptfusion : Added check for SILI bit in READ_6 CDB for DATA UNDERRUN ERRATA
Date:   Wed Jul 20 21:28:03 2011 +0530
References: bnc #712456
Patch-Mainline: v3.1-rc1
Git-commit: e466e1c6e14e211e0ece86bdb0810b1b9c1a59a8

    When READ_6 command is issued, the setting of SILI Bit in CDB is confirmed and
    if SILI bit is off, the processing of relavent Errata is executed.

    Earlier we did not have check for SILI bit in READ_6 CDB.
    As described in "ssc-r22", Now Driver is checking SILI bit for READ_6.

    Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>

Acked-by: Ankit Jain <jankit@suse.de>

diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index a1d4ee6..ce61a57 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -827,7 +827,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
 				 * DID_SOFT_ERROR is set.
 				 */
 				if (ioc->bus_type == SPI) {
-					if (pScsiReq->CDB[0] == READ_6  ||
+					if ((pScsiReq->CDB[0] == READ_6  && ((pScsiReq->CDB[1] & 0x02) == 0)) ||
 					    pScsiReq->CDB[0] == READ_10 ||
 					    pScsiReq->CDB[0] == READ_12 ||
 					    pScsiReq->CDB[0] == READ_16 ||
