[SCSI] mptfusion: Added check for SILI bit in READ_16 CDB for DATA UNDERRUN ERRATA
authornagalakshmi.nandigama@lsi.com <nagalakshmi.nandigama@lsi.com>
Mon, 19 Sep 2011 04:57:20 +0000 (10:27 +0530)
committerJames Bottomley <JBottomley@Parallels.com>
Thu, 22 Sep 2011 11:15:08 +0000 (15:15 +0400)
When READ_16 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.

Added code for checking SILI bit for READ_16 as described in "SSC-4".

Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/message/fusion/mptscsih.c

index ced6e4dc0847a1dc76fa2d677f4e5962506322f0..0c3ced70707b9b62be49c41f56e3bc482f80e2bb 100644 (file)
@@ -830,7 +830,8 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
                                        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 ||
+                                               (pScsiReq->CDB[0] == READ_16 &&
+                                               ((pScsiReq->CDB[1] & 0x02) == 0)) ||
                                            pScsiReq->CDB[0] == VERIFY  ||
                                            pScsiReq->CDB[0] == VERIFY_16) {
                                                if (scsi_bufflen(sc) !=