scsi: libsas: Decode SAM status and host byte codes
authorJohn Garry <john.garry@huawei.com>
Wed, 15 Dec 2021 14:37:41 +0000 (22:37 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 17 Dec 2021 03:59:58 +0000 (22:59 -0500)
Value 0 is used for SAM status and libsas exec_status bytes codes in
sas_end_task() - use defined macros instead. In addition, change to proper
enum types.

Also replace SAM_STAT_CHECK_CONDITION with SAS_SAM_STAT_CHECK_CONDITION,
the former being a proper member of enum exec_status.

Link: https://lore.kernel.org/r/1639579061-179473-9-git-send-email-john.garry@huawei.com
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libsas/sas_scsi_host.c

index d337fdf..fb19e73 100644 (file)
@@ -37,7 +37,8 @@
 static void sas_end_task(struct scsi_cmnd *sc, struct sas_task *task)
 {
        struct task_status_struct *ts = &task->task_status;
-       int hs = 0, stat = 0;
+       enum scsi_host_status hs = DID_OK;
+       enum exec_status stat = SAS_SAM_STAT_GOOD;
 
        if (ts->resp == SAS_TASK_UNDELIVERED) {
                /* transport error */
@@ -82,10 +83,10 @@ static void sas_end_task(struct scsi_cmnd *sc, struct sas_task *task)
                case SAS_ABORTED_TASK:
                        hs = DID_ABORT;
                        break;
-               case SAM_STAT_CHECK_CONDITION:
+               case SAS_SAM_STAT_CHECK_CONDITION:
                        memcpy(sc->sense_buffer, ts->buf,
                               min(SCSI_SENSE_BUFFERSIZE, ts->buf_valid_size));
-                       stat = SAM_STAT_CHECK_CONDITION;
+                       stat = SAS_SAM_STAT_CHECK_CONDITION;
                        break;
                default:
                        stat = ts->stat;