aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-09-12 00:22:52 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-10-03 12:46:18 -0400
commit2d136938792ba04bf3b6bb2d3a2807dc05c396fc (patch)
tree58a64c2e78445da6d6af037128df3d5c4409e525 /drivers/scsi
parentcc3ef7bc40bbede7bbd0bb395d6452a575e95efe (diff)
[SCSI] qla2xxx: Additional residual-count corrections during UNDERRUN handling.
Add additional tightening of residual-count handling (originally from commit 6acf8190025e9c4ea513d4084ff089d476112816) where the driver should discard any lower SCSI-status during firmware/transport residual-count mismatches. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 92cab5c35be5..9eb6ef333044 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1060,8 +1060,9 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
1060 resid = resid_len; 1060 resid = resid_len;
1061 /* Use F/W calculated residual length. */ 1061 /* Use F/W calculated residual length. */
1062 if (IS_FWI2_CAPABLE(ha)) { 1062 if (IS_FWI2_CAPABLE(ha)) {
1063 if (scsi_status & SS_RESIDUAL_UNDER && 1063 if (!(scsi_status & SS_RESIDUAL_UNDER)) {
1064 resid != fw_resid_len) { 1064 lscsi_status = 0;
1065 } else if (resid != fw_resid_len) {
1065 scsi_status &= ~SS_RESIDUAL_UNDER; 1066 scsi_status &= ~SS_RESIDUAL_UNDER;
1066 lscsi_status = 0; 1067 lscsi_status = 0;
1067 } 1068 }