pm80xx: Handling Invalid SSP Response frame
authorViswas G <Viswas.G@pmcs.com>
Tue, 11 Aug 2015 09:36:31 +0000 (15:06 +0530)
committerJames Bottomley <JBottomley@Odin.com>
Thu, 27 Aug 2015 00:18:31 +0000 (17:18 -0700)
The request has to be retried incase if the length of the SSP
Response IU is invalid.

Signed-off-by: Viswas G <Viswas.G@pmcs.com>
Reviewed-by: Suresh Thiagarajan <Suresh.Thiagarajan@pmcs.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
drivers/scsi/pm8001/pm80xx_hwi.c
drivers/scsi/pm8001/pm80xx_hwi.h

index 8817ce6ad4b8f13a11c6468ae50ff70d75cd12b0..0e1628f2018e572a8b8300fe4ef0753bb95fc7dd 100644 (file)
@@ -1609,6 +1609,13 @@ mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha , void *piomb)
                ts->stat = SAS_OPEN_REJECT;
                ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
                break;
+       case IO_XFER_ERROR_INVALID_SSP_RSP_FRAME:
+               PM8001_IO_DBG(pm8001_ha,
+                       pm8001_printk("IO_XFER_ERROR_INVALID_SSP_RSP_FRAME\n"));
+               ts->resp = SAS_TASK_COMPLETE;
+               ts->stat = SAS_OPEN_REJECT;
+               ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
+               break;
        case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
                PM8001_IO_DBG(pm8001_ha,
                pm8001_printk("IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED\n"));
index a083cc68d937721b95601658a7c9d0ed1c37e487..7a443bad61634ded2f99f9d44c0bebca856ea89a 100644 (file)
@@ -1175,7 +1175,7 @@ typedef struct SASProtocolTimerConfig SASProtocolTimerConfig_t;
 #define IO_XFER_ERROR_INTERNAL_CRC_ERROR       0x54
 #define MPI_IO_RQE_BUSY_FULL                   0x55
 #define IO_XFER_ERR_EOB_DATA_OVERRUN           0x56
-#define IO_XFR_ERROR_INVALID_SSP_RSP_FRAME     0x57
+#define IO_XFER_ERROR_INVALID_SSP_RSP_FRAME    0x57
 #define IO_OPEN_CNX_ERROR_OPEN_PREEMPTED       0x58
 
 #define MPI_ERR_IO_RESOURCE_UNAVAILABLE                0x1004