From ff454b01b4ebe60b14092943978000928bf8c551 Mon Sep 17 00:00:00 2001 From: Chad Dupuis Date: Fri, 15 Oct 2010 11:27:42 -0700 Subject: [PATCH] [SCSI] qla2xxx: Group CS_RESET return status with other link level event statuses. Currently when we receive a CS_RESET as a response for a SCSI command the driver will return DID_TRANSPORT_DISRUPTED back to the SCSI mid-layer. There are certain circumstances where this could cause the mid-layer to exhaust all of its retries if the FC port goes away for a short time. This will result in commands being prematurly failed. Moving the CS_RESET return code to be grouped with other link level events will cause the FC transport layer to block that target's queue thus preventing the premature exhaustion of retries. Signed-off-by: Chad Dupuis Signed-off-by: Madhuranath Iyengar Signed-off-by: James Bottomley --- drivers/scsi/qla2xxx/qla_isr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index e0e43d9e7ed1..55870a36ec6a 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c @@ -1757,6 +1757,8 @@ check_scsi_status: case CS_INCOMPLETE: case CS_PORT_UNAVAILABLE: case CS_TIMEOUT: + case CS_RESET: + /* * We are going to have the fc class block the rport * while we try to recover so instruct the mid layer @@ -1781,10 +1783,6 @@ check_scsi_status: qla2x00_mark_device_lost(fcport->vha, fcport, 1, 1); break; - case CS_RESET: - cp->result = DID_TRANSPORT_DISRUPTED << 16; - break; - case CS_ABORTED: cp->result = DID_RESET << 16; break;