Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6acf8190025e9c4ea513d4084ff089d476112816
Commit:     6acf8190025e9c4ea513d4084ff089d476112816
Parent:     285d0321d15cf3130b3347a207ceae652ccc95b5
Author:     Andrew Vasquez <[EMAIL PROTECTED]>
AuthorDate: Fri Oct 19 15:59:18 2007 -0700
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Tue Oct 23 15:54:41 2007 -0400

    [SCSI] qla2xxx: Correct residual-count handling discrepancies during 
UNDERRUN handling.
    
    For recent ISPs, software during CS_UNDERRUN handling must
    determine if the two residuals, firmware-calculated and FCP_RSP,
    are different to recognize if a frame has been dropped.  Update
    the driver to catch this condition, and clear the
    SS_RESIDUAL_UNDER and lscsi_status bits.  This logic is
    consistent with what earlier firmwares did by explicitly
    cracking open the FCP_RSP statuses and clearing
    SS_RESIDUAL_UNDER.
    
    Signed-off-by: Andrew Vasquez <[EMAIL PROTECTED]>
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/qla2xxx/qla_isr.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index c4768c4..1104bd2 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1012,8 +1012,14 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt)
        case CS_DATA_UNDERRUN:
                resid = resid_len;
                /* Use F/W calculated residual length. */
-               if (IS_FWI2_CAPABLE(ha))
+               if (IS_FWI2_CAPABLE(ha)) {
+                       if (scsi_status & SS_RESIDUAL_UNDER &&
+                           resid != fw_resid_len) {
+                               scsi_status &= ~SS_RESIDUAL_UNDER;
+                               lscsi_status = 0;
+                       }
                        resid = fw_resid_len;
+               }
 
                if (scsi_status & SS_RESIDUAL_UNDER) {
                        scsi_set_resid(cp, resid);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to