diff mbox series

[v2,1/3] libsas: Introduce more SAM status code aliases in enum exec_status

Message ID 20210518175006.21308-2-bvanassche@acm.org
State Superseded
Headers show
Series [v2,1/3] libsas: Introduce more SAM status code aliases in enum exec_status | expand

Commit Message

Bart Van Assche May 18, 2021, 5:50 p.m. UTC
This patch prepares for converting SAM status codes into an enum. Without
this patch converting SAM status codes into an enumeration type would
trigger complaints about enum type mismatches for the SAS code.

Cc: Hannes Reinecke <hare@suse.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Cc: Jack Wang <jinpu.wang@cloud.ionos.com>
Cc: Jason Yan <yanaijie@huawei.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 drivers/scsi/aic94xx/aic94xx_task.c    |  2 +-
 drivers/scsi/hisi_sas/hisi_sas_v1_hw.c |  8 ++++----
 drivers/scsi/hisi_sas/hisi_sas_v2_hw.c |  8 ++++----
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c |  8 ++++----
 drivers/scsi/isci/request.c            | 10 +++++-----
 drivers/scsi/isci/task.c               |  2 +-
 drivers/scsi/libsas/sas_ata.c          |  7 ++++---
 drivers/scsi/libsas/sas_expander.c     |  2 +-
 drivers/scsi/libsas/sas_task.c         |  4 ++--
 drivers/scsi/mvsas/mv_sas.c            | 10 +++++-----
 drivers/scsi/pm8001/pm8001_hwi.c       | 16 ++++++++--------
 drivers/scsi/pm8001/pm8001_sas.c       |  4 ++--
 drivers/scsi/pm8001/pm80xx_hwi.c       | 14 +++++++-------
 include/scsi/libsas.h                  | 12 +++++++++---
 14 files changed, 57 insertions(+), 50 deletions(-)

Comments

Jinpu Wang May 19, 2021, 6:10 a.m. UTC | #1
On Tue, May 18, 2021 at 7:50 PM Bart Van Assche <bvanassche@acm.org> wrote:
>

> This patch prepares for converting SAM status codes into an enum. Without

> this patch converting SAM status codes into an enumeration type would

> trigger complaints about enum type mismatches for the SAS code.

>

> Cc: Hannes Reinecke <hare@suse.com>

> Cc: John Garry <john.garry@huawei.com>

> Cc: Artur Paszkiewicz <artur.paszkiewicz@intel.com>

> Cc: Jack Wang <jinpu.wang@cloud.ionos.com>

> Cc: Jason Yan <yanaijie@huawei.com>

> Signed-off-by: Bart Van Assche <bvanassche@acm.org>

> ---

>  drivers/scsi/aic94xx/aic94xx_task.c    |  2 +-

>  drivers/scsi/hisi_sas/hisi_sas_v1_hw.c |  8 ++++----

>  drivers/scsi/hisi_sas/hisi_sas_v2_hw.c |  8 ++++----

>  drivers/scsi/hisi_sas/hisi_sas_v3_hw.c |  8 ++++----

>  drivers/scsi/isci/request.c            | 10 +++++-----

>  drivers/scsi/isci/task.c               |  2 +-

>  drivers/scsi/libsas/sas_ata.c          |  7 ++++---

>  drivers/scsi/libsas/sas_expander.c     |  2 +-

>  drivers/scsi/libsas/sas_task.c         |  4 ++--

>  drivers/scsi/mvsas/mv_sas.c            | 10 +++++-----

>  drivers/scsi/pm8001/pm8001_hwi.c       | 16 ++++++++--------

>  drivers/scsi/pm8001/pm8001_sas.c       |  4 ++--

>  drivers/scsi/pm8001/pm80xx_hwi.c       | 14 +++++++-------

>  include/scsi/libsas.h                  | 12 +++++++++---

>  14 files changed, 57 insertions(+), 50 deletions(-)

looks good to me, thanks Bart!
Acked-by: Jack Wang <jinpu.wang@ionos.com>

>

> diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c

> index 71d18f607dae..518ad4758a45 100644

> --- a/drivers/scsi/aic94xx/aic94xx_task.c

> +++ b/drivers/scsi/aic94xx/aic94xx_task.c

> @@ -205,7 +205,7 @@ static void asd_task_tasklet_complete(struct asd_ascb *ascb,

>         switch (opcode) {

>         case TC_NO_ERROR:

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>                 break;

>         case TC_UNDERRUN:

>                 ts->resp = SAS_TASK_COMPLETE;

> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c

> index 3e359ac752fd..9bb3ebd2a4e1 100644

> --- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c

> +++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c

> @@ -1152,14 +1152,14 @@ static void slot_err_v1_hw(struct hisi_hba *hisi_hba,

>                 }

>                 default:

>                 {

> -                       ts->stat = SAM_STAT_CHECK_CONDITION;

> +                       ts->stat = SAS_STAT_CHECK_CONDITION;

>                         break;

>                 }

>                 }

>         }

>                 break;

>         case SAS_PROTOCOL_SMP:

> -               ts->stat = SAM_STAT_CHECK_CONDITION;

> +               ts->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>

>         case SAS_PROTOCOL_SATA:

> @@ -1281,7 +1281,7 @@ static void slot_complete_v1_hw(struct hisi_hba *hisi_hba,

>                 struct scatterlist *sg_resp = &task->smp_task.smp_resp;

>                 void *to = page_address(sg_page(sg_resp));

>

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>

>                 dma_unmap_sg(dev, &task->smp_task.smp_req, 1,

>                              DMA_TO_DEVICE);

> @@ -1298,7 +1298,7 @@ static void slot_complete_v1_hw(struct hisi_hba *hisi_hba,

>                 break;

>

>         default:

> -               ts->stat = SAM_STAT_CHECK_CONDITION;

> +               ts->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>         }

>

> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c

> index 46f60fc2a069..67d1a821edb6 100644

> --- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c

> +++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c

> @@ -2168,7 +2168,7 @@ static void slot_err_v2_hw(struct hisi_hba *hisi_hba,

>         }

>                 break;

>         case SAS_PROTOCOL_SMP:

> -               ts->stat = SAM_STAT_CHECK_CONDITION;

> +               ts->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>

>         case SAS_PROTOCOL_SATA:

> @@ -2427,7 +2427,7 @@ static void slot_complete_v2_hw(struct hisi_hba *hisi_hba,

>                 struct scatterlist *sg_resp = &task->smp_task.smp_resp;

>                 void *to = page_address(sg_page(sg_resp));

>

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>

>                 dma_unmap_sg(dev, &task->smp_task.smp_req, 1,

>                              DMA_TO_DEVICE);

> @@ -2441,12 +2441,12 @@ static void slot_complete_v2_hw(struct hisi_hba *hisi_hba,

>         case SAS_PROTOCOL_STP:

>         case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:

>         {

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>                 hisi_sas_sata_done(task, slot);

>                 break;

>         }

>         default:

> -               ts->stat = SAM_STAT_CHECK_CONDITION;

> +               ts->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>         }

>

> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c

> index 499c770d405c..35d58daa2729 100644

> --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c

> +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c

> @@ -2178,7 +2178,7 @@ slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,

>                 hisi_sas_sata_done(task, slot);

>                 break;

>         case SAS_PROTOCOL_SMP:

> -               ts->stat = SAM_STAT_CHECK_CONDITION;

> +               ts->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>         default:

>                 break;

> @@ -2285,7 +2285,7 @@ static void slot_complete_v3_hw(struct hisi_hba *hisi_hba,

>                 struct scatterlist *sg_resp = &task->smp_task.smp_resp;

>                 void *to = page_address(sg_page(sg_resp));

>

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>

>                 dma_unmap_sg(dev, &task->smp_task.smp_req, 1,

>                              DMA_TO_DEVICE);

> @@ -2298,11 +2298,11 @@ static void slot_complete_v3_hw(struct hisi_hba *hisi_hba,

>         case SAS_PROTOCOL_SATA:

>         case SAS_PROTOCOL_STP:

>         case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>                 hisi_sas_sata_done(task, slot);

>                 break;

>         default:

> -               ts->stat = SAM_STAT_CHECK_CONDITION;

> +               ts->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>         }

>

> diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c

> index e7c6cb4c1556..83069d0f69b3 100644

> --- a/drivers/scsi/isci/request.c

> +++ b/drivers/scsi/isci/request.c

> @@ -2566,7 +2566,7 @@ static void isci_request_handle_controller_specific_errors(

>                         if (!idev)

>                                 *status_ptr = SAS_DEVICE_UNKNOWN;

>                         else

> -                               *status_ptr = SAM_STAT_TASK_ABORTED;

> +                               *status_ptr = SAS_STAT_TASK_ABORTED;

>

>                         clear_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);

>                 }

> @@ -2696,7 +2696,7 @@ static void isci_request_handle_controller_specific_errors(

>         default:

>                 /* Task in the target is not done. */

>                 *response_ptr = SAS_TASK_UNDELIVERED;

> -               *status_ptr = SAM_STAT_TASK_ABORTED;

> +               *status_ptr = SAS_STAT_TASK_ABORTED;

>

>                 if (task->task_proto == SAS_PROTOCOL_SMP)

>                         set_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);

> @@ -2719,7 +2719,7 @@ static void isci_process_stp_response(struct sas_task *task, struct dev_to_host_

>         if (ac_err_mask(fis->status))

>                 ts->stat = SAS_PROTO_RESPONSE;

>         else

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>

>         ts->resp = SAS_TASK_COMPLETE;

>  }

> @@ -2782,7 +2782,7 @@ static void isci_request_io_request_complete(struct isci_host *ihost,

>         case SCI_IO_SUCCESS_IO_DONE_EARLY:

>

>                 response = SAS_TASK_COMPLETE;

> -               status   = SAM_STAT_GOOD;

> +               status   = SAS_STAT_GOOD;

>                 set_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);

>

>                 if (completion_status == SCI_IO_SUCCESS_IO_DONE_EARLY) {

> @@ -2852,7 +2852,7 @@ static void isci_request_io_request_complete(struct isci_host *ihost,

>

>                 /* Fail the I/O. */

>                 response = SAS_TASK_UNDELIVERED;

> -               status = SAM_STAT_TASK_ABORTED;

> +               status = SAS_STAT_TASK_ABORTED;

>

>                 clear_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);

>                 break;

> diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c

> index 62062ed6cd9a..4ab33393d4ed 100644

> --- a/drivers/scsi/isci/task.c

> +++ b/drivers/scsi/isci/task.c

> @@ -160,7 +160,7 @@ int isci_task_execute_task(struct sas_task *task, gfp_t gfp_flags)

>

>                         isci_task_refuse(ihost, task,

>                                          SAS_TASK_UNDELIVERED,

> -                                        SAM_STAT_TASK_ABORTED);

> +                                        SAS_STAT_TASK_ABORTED);

>                 } else {

>                         task->task_state_flags |= SAS_TASK_AT_INITIATOR;

>                         spin_unlock_irqrestore(&task->task_state_lock, flags);

> diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c

> index e9a86128f1f1..fbdcf6fd7d85 100644

> --- a/drivers/scsi/libsas/sas_ata.c

> +++ b/drivers/scsi/libsas/sas_ata.c

> @@ -116,9 +116,10 @@ static void sas_ata_task_done(struct sas_task *task)

>                 }

>         }

>

> -       if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD ||

> -           ((stat->stat == SAM_STAT_CHECK_CONDITION &&

> -             dev->sata_dev.class == ATA_DEV_ATAPI))) {

> +       if (stat->stat == SAS_PROTO_RESPONSE ||

> +           stat->stat == SAS_STAT_GOOD ||

> +           (stat->stat == SAS_STAT_CHECK_CONDITION &&

> +             dev->sata_dev.class == ATA_DEV_ATAPI)) {

>                 memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE);

>

>                 if (!link->sactive) {

> diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c

> index 6d583e8c403a..bc8cbccb87cd 100644

> --- a/drivers/scsi/libsas/sas_expander.c

> +++ b/drivers/scsi/libsas/sas_expander.c

> @@ -101,7 +101,7 @@ static int smp_execute_task_sg(struct domain_device *dev,

>                         }

>                 }

>                 if (task->task_status.resp == SAS_TASK_COMPLETE &&

> -                   task->task_status.stat == SAM_STAT_GOOD) {

> +                   task->task_status.stat == SAS_STAT_GOOD) {

>                         res = 0;

>                         break;

>                 }

> diff --git a/drivers/scsi/libsas/sas_task.c b/drivers/scsi/libsas/sas_task.c

> index e2d42593ce52..4e0c3ffd9aac 100644

> --- a/drivers/scsi/libsas/sas_task.c

> +++ b/drivers/scsi/libsas/sas_task.c

> @@ -20,7 +20,7 @@ void sas_ssp_task_response(struct device *dev, struct sas_task *task,

>         else if (iu->datapres == 1)

>                 tstat->stat = iu->resp_data[3];

>         else if (iu->datapres == 2) {

> -               tstat->stat = SAM_STAT_CHECK_CONDITION;

> +               tstat->stat = SAS_STAT_CHECK_CONDITION;

>                 tstat->buf_valid_size =

>                         min_t(int, SAS_STATUS_BUF_SIZE,

>                               be32_to_cpu(iu->sense_data_len));

> @@ -32,7 +32,7 @@ void sas_ssp_task_response(struct device *dev, struct sas_task *task,

>         }

>         else

>                 /* when datapres contains corrupt/unknown value... */

> -               tstat->stat = SAM_STAT_CHECK_CONDITION;

> +               tstat->stat = SAS_STAT_CHECK_CONDITION;

>  }

>  EXPORT_SYMBOL_GPL(sas_ssp_task_response);

>

> diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c

> index 1acea528f27f..087c4f3acc81 100644

> --- a/drivers/scsi/mvsas/mv_sas.c

> +++ b/drivers/scsi/mvsas/mv_sas.c

> @@ -1314,7 +1314,7 @@ static int mvs_exec_internal_tmf_task(struct domain_device *dev,

>                 }

>

>                 if (task->task_status.resp == SAS_TASK_COMPLETE &&

> -                   task->task_status.stat == SAM_STAT_GOOD) {

> +                   task->task_status.stat == SAS_STAT_GOOD) {

>                         res = TMF_RESP_FUNC_COMPLETE;

>                         break;

>                 }

> @@ -1764,7 +1764,7 @@ int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags)

>         case SAS_PROTOCOL_SSP:

>                 /* hw says status == 0, datapres == 0 */

>                 if (rx_desc & RXQ_GOOD) {

> -                       tstat->stat = SAM_STAT_GOOD;

> +                       tstat->stat = SAS_STAT_GOOD;

>                         tstat->resp = SAS_TASK_COMPLETE;

>                 }

>                 /* response frame present */

> @@ -1773,12 +1773,12 @@ int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags)

>                                                 sizeof(struct mvs_err_info);

>                         sas_ssp_task_response(mvi->dev, task, iu);

>                 } else

> -                       tstat->stat = SAM_STAT_CHECK_CONDITION;

> +                       tstat->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>

>         case SAS_PROTOCOL_SMP: {

>                         struct scatterlist *sg_resp = &task->smp_task.smp_resp;

> -                       tstat->stat = SAM_STAT_GOOD;

> +                       tstat->stat = SAS_STAT_GOOD;

>                         to = kmap_atomic(sg_page(sg_resp));

>                         memcpy(to + sg_resp->offset,

>                                 slot->response + sizeof(struct mvs_err_info),

> @@ -1795,7 +1795,7 @@ int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags)

>                 }

>

>         default:

> -               tstat->stat = SAM_STAT_CHECK_CONDITION;

> +               tstat->stat = SAS_STAT_CHECK_CONDITION;

>                 break;

>         }

>         if (!slot->port->port_attached) {

> diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c

> index ecd06d2d7e81..4740d7eee196 100644

> --- a/drivers/scsi/pm8001/pm8001_hwi.c

> +++ b/drivers/scsi/pm8001/pm8001_hwi.c

> @@ -1930,7 +1930,7 @@ mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>                            param);

>                 if (param == 0) {

>                         ts->resp = SAS_TASK_COMPLETE;

> -                       ts->stat = SAM_STAT_GOOD;

> +                       ts->stat = SAS_STAT_GOOD;

>                 } else {

>                         ts->resp = SAS_TASK_COMPLETE;

>                         ts->stat = SAS_PROTO_RESPONSE;

> @@ -2390,7 +2390,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>                 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");

>                 if (param == 0) {

>                         ts->resp = SAS_TASK_COMPLETE;

> -                       ts->stat = SAM_STAT_GOOD;

> +                       ts->stat = SAS_STAT_GOOD;

>                         /* check if response is for SEND READ LOG */

>                         if (pm8001_dev &&

>                                 (pm8001_dev->id & NCQ_READ_LOG_FLAG)) {

> @@ -2912,7 +2912,7 @@ mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>         case IO_SUCCESS:

>                 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>                 if (pm8001_dev)

>                         atomic_dec(&pm8001_dev->running_req);

>                 break;

> @@ -2939,17 +2939,17 @@ mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>         case IO_ERROR_HW_TIMEOUT:

>                 pm8001_dbg(pm8001_ha, IO, "IO_ERROR_HW_TIMEOUT\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_BUSY;

> +               ts->stat = SAS_STAT_BUSY;

>                 break;

>         case IO_XFER_ERROR_BREAK:

>                 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_BUSY;

> +               ts->stat = SAS_STAT_BUSY;

>                 break;

>         case IO_XFER_ERROR_PHY_NOT_READY:

>                 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_BUSY;

> +               ts->stat = SAS_STAT_BUSY;

>                 break;

>         case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:

>                 pm8001_dbg(pm8001_ha, IO,

> @@ -3710,7 +3710,7 @@ int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb)

>         case IO_SUCCESS:

>                 pm8001_dbg(pm8001_ha, EH, "IO_SUCCESS\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>                 break;

>         case IO_NOT_VALID:

>                 pm8001_dbg(pm8001_ha, EH, "IO_NOT_VALID\n");

> @@ -4355,7 +4355,7 @@ static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha,

>

>                         spin_lock_irqsave(&task->task_state_lock, flags);

>                         ts->resp = SAS_TASK_COMPLETE;

> -                       ts->stat = SAM_STAT_GOOD;

> +                       ts->stat = SAS_STAT_GOOD;

>                         task->task_state_flags &= ~SAS_TASK_STATE_PENDING;

>                         task->task_state_flags &= ~SAS_TASK_AT_INITIATOR;

>                         task->task_state_flags |= SAS_TASK_STATE_DONE;

> diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c

> index d28af413b93a..4367f4166704 100644

> --- a/drivers/scsi/pm8001/pm8001_sas.c

> +++ b/drivers/scsi/pm8001/pm8001_sas.c

> @@ -753,7 +753,7 @@ static int pm8001_exec_internal_tmf_task(struct domain_device *dev,

>                 }

>

>                 if (task->task_status.resp == SAS_TASK_COMPLETE &&

> -                       task->task_status.stat == SAM_STAT_GOOD) {

> +                       task->task_status.stat == SAS_STAT_GOOD) {

>                         res = TMF_RESP_FUNC_COMPLETE;

>                         break;

>                 }

> @@ -838,7 +838,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,

>                 }

>

>                 if (task->task_status.resp == SAS_TASK_COMPLETE &&

> -                       task->task_status.stat == SAM_STAT_GOOD) {

> +                       task->task_status.stat == SAS_STAT_GOOD) {

>                         res = TMF_RESP_FUNC_COMPLETE;

>                         break;

>

> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c

> index 4e980830f9f5..4aec0405288f 100644

> --- a/drivers/scsi/pm8001/pm80xx_hwi.c

> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c

> @@ -1952,7 +1952,7 @@ mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>                            param);

>                 if (param == 0) {

>                         ts->resp = SAS_TASK_COMPLETE;

> -                       ts->stat = SAM_STAT_GOOD;

> +                       ts->stat = SAS_STAT_GOOD;

>                 } else {

>                         ts->resp = SAS_TASK_COMPLETE;

>                         ts->stat = SAS_PROTO_RESPONSE;

> @@ -2487,7 +2487,7 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>                 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");

>                 if (param == 0) {

>                         ts->resp = SAS_TASK_COMPLETE;

> -                       ts->stat = SAM_STAT_GOOD;

> +                       ts->stat = SAS_STAT_GOOD;

>                         /* check if response is for SEND READ LOG */

>                         if (pm8001_dev &&

>                                 (pm8001_dev->id & NCQ_READ_LOG_FLAG)) {

> @@ -3042,7 +3042,7 @@ mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>         case IO_SUCCESS:

>                 pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_GOOD;

> +               ts->stat = SAS_STAT_GOOD;

>                 if (pm8001_dev)

>                         atomic_dec(&pm8001_dev->running_req);

>                 if (pm8001_ha->smp_exp_mode == SMP_DIRECT) {

> @@ -3084,17 +3084,17 @@ mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)

>         case IO_ERROR_HW_TIMEOUT:

>                 pm8001_dbg(pm8001_ha, IO, "IO_ERROR_HW_TIMEOUT\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_BUSY;

> +               ts->stat = SAS_STAT_BUSY;

>                 break;

>         case IO_XFER_ERROR_BREAK:

>                 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_BUSY;

> +               ts->stat = SAS_STAT_BUSY;

>                 break;

>         case IO_XFER_ERROR_PHY_NOT_READY:

>                 pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");

>                 ts->resp = SAS_TASK_COMPLETE;

> -               ts->stat = SAM_STAT_BUSY;

> +               ts->stat = SAS_STAT_BUSY;

>                 break;

>         case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:

>                 pm8001_dbg(pm8001_ha, IO,

> @@ -4699,7 +4699,7 @@ static int pm80xx_chip_sata_req(struct pm8001_hba_info *pm8001_ha,

>

>                         spin_lock_irqsave(&task->task_state_lock, flags);

>                         ts->resp = SAS_TASK_COMPLETE;

> -                       ts->stat = SAM_STAT_GOOD;

> +                       ts->stat = SAS_STAT_GOOD;

>                         task->task_state_flags &= ~SAS_TASK_STATE_PENDING;

>                         task->task_state_flags &= ~SAS_TASK_AT_INITIATOR;

>                         task->task_state_flags |= SAS_TASK_STATE_DONE;

> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h

> index 9271d7a49b90..e68327fa4835 100644

> --- a/include/scsi/libsas.h

> +++ b/include/scsi/libsas.h

> @@ -474,10 +474,16 @@ enum service_response {

>  };

>

>  enum exec_status {

> -       /* The SAM_STAT_.. codes fit in the lower 6 bits, alias some of

> -        * them here to silence 'case value not in enumerated type' warnings

> +       /*

> +        * Values 0..0x7f are used to return the SAM_STAT_* codes.  To avoid

> +        * 'case value not in enumerated type' compiler warnings every value

> +        * returned through the exec_status enum needs an alias with the SAS_

> +        * prefix here.

>          */

> -       __SAM_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION,

> +       SAS_STAT_GOOD = SAM_STAT_GOOD,

> +       SAS_STAT_BUSY = SAM_STAT_BUSY,

> +       SAS_STAT_TASK_ABORTED = SAM_STAT_TASK_ABORTED,

> +       SAS_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION,

>

>         SAS_DEV_NO_RESPONSE = 0x80,

>         SAS_DATA_UNDERRUN,
John Garry May 19, 2021, 9:38 a.m. UTC | #2
On 18/05/2021 18:50, Bart Van Assche wrote:
> index 9271d7a49b90..e68327fa4835 100644

> --- a/include/scsi/libsas.h

> +++ b/include/scsi/libsas.h

> @@ -474,10 +474,16 @@ enum service_response {

>   };

>   

>   enum exec_status {

> -	/* The SAM_STAT_.. codes fit in the lower 6 bits, alias some of

> -	 * them here to silence 'case value not in enumerated type' warnings

> +	/*

> +	 * Values 0..0x7f are used to return the SAM_STAT_* codes.  To avoid

> +	 * 'case value not in enumerated type' compiler warnings every value

> +	 * returned through the exec_status enum needs an alias with the SAS_

> +	 * prefix here.

>   	 */

> -	__SAM_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION,

> +	SAS_STAT_GOOD = SAM_STAT_GOOD,

> +	SAS_STAT_BUSY = SAM_STAT_BUSY,

> +	SAS_STAT_TASK_ABORTED = SAM_STAT_TASK_ABORTED,

> +	SAS_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION,

>   


Personally I prefer SAS_SAM_STAT_xxx, as Christoph mentioned in v1. This 
helps us know the SAS error codes are aliased from the SAM error codes. 
And only SAS_STAT_CHECK_CONDITION becomes long, with that suggestion.

I know that you did ask about this solution in v1 series, without reply 
- sorry.

Ignoring this preference, it looks ok:
Reviewed-by: John Garry <john.garry@huawei.com>
diff mbox series

Patch

diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
index 71d18f607dae..518ad4758a45 100644
--- a/drivers/scsi/aic94xx/aic94xx_task.c
+++ b/drivers/scsi/aic94xx/aic94xx_task.c
@@ -205,7 +205,7 @@  static void asd_task_tasklet_complete(struct asd_ascb *ascb,
 	switch (opcode) {
 	case TC_NO_ERROR:
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 		break;
 	case TC_UNDERRUN:
 		ts->resp = SAS_TASK_COMPLETE;
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
index 3e359ac752fd..9bb3ebd2a4e1 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
@@ -1152,14 +1152,14 @@  static void slot_err_v1_hw(struct hisi_hba *hisi_hba,
 		}
 		default:
 		{
-			ts->stat = SAM_STAT_CHECK_CONDITION;
+			ts->stat = SAS_STAT_CHECK_CONDITION;
 			break;
 		}
 		}
 	}
 		break;
 	case SAS_PROTOCOL_SMP:
-		ts->stat = SAM_STAT_CHECK_CONDITION;
+		ts->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 
 	case SAS_PROTOCOL_SATA:
@@ -1281,7 +1281,7 @@  static void slot_complete_v1_hw(struct hisi_hba *hisi_hba,
 		struct scatterlist *sg_resp = &task->smp_task.smp_resp;
 		void *to = page_address(sg_page(sg_resp));
 
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 
 		dma_unmap_sg(dev, &task->smp_task.smp_req, 1,
 			     DMA_TO_DEVICE);
@@ -1298,7 +1298,7 @@  static void slot_complete_v1_hw(struct hisi_hba *hisi_hba,
 		break;
 
 	default:
-		ts->stat = SAM_STAT_CHECK_CONDITION;
+		ts->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 	}
 
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index 46f60fc2a069..67d1a821edb6 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -2168,7 +2168,7 @@  static void slot_err_v2_hw(struct hisi_hba *hisi_hba,
 	}
 		break;
 	case SAS_PROTOCOL_SMP:
-		ts->stat = SAM_STAT_CHECK_CONDITION;
+		ts->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 
 	case SAS_PROTOCOL_SATA:
@@ -2427,7 +2427,7 @@  static void slot_complete_v2_hw(struct hisi_hba *hisi_hba,
 		struct scatterlist *sg_resp = &task->smp_task.smp_resp;
 		void *to = page_address(sg_page(sg_resp));
 
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 
 		dma_unmap_sg(dev, &task->smp_task.smp_req, 1,
 			     DMA_TO_DEVICE);
@@ -2441,12 +2441,12 @@  static void slot_complete_v2_hw(struct hisi_hba *hisi_hba,
 	case SAS_PROTOCOL_STP:
 	case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:
 	{
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 		hisi_sas_sata_done(task, slot);
 		break;
 	}
 	default:
-		ts->stat = SAM_STAT_CHECK_CONDITION;
+		ts->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 	}
 
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index 499c770d405c..35d58daa2729 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -2178,7 +2178,7 @@  slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
 		hisi_sas_sata_done(task, slot);
 		break;
 	case SAS_PROTOCOL_SMP:
-		ts->stat = SAM_STAT_CHECK_CONDITION;
+		ts->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 	default:
 		break;
@@ -2285,7 +2285,7 @@  static void slot_complete_v3_hw(struct hisi_hba *hisi_hba,
 		struct scatterlist *sg_resp = &task->smp_task.smp_resp;
 		void *to = page_address(sg_page(sg_resp));
 
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 
 		dma_unmap_sg(dev, &task->smp_task.smp_req, 1,
 			     DMA_TO_DEVICE);
@@ -2298,11 +2298,11 @@  static void slot_complete_v3_hw(struct hisi_hba *hisi_hba,
 	case SAS_PROTOCOL_SATA:
 	case SAS_PROTOCOL_STP:
 	case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 		hisi_sas_sata_done(task, slot);
 		break;
 	default:
-		ts->stat = SAM_STAT_CHECK_CONDITION;
+		ts->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 	}
 
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
index e7c6cb4c1556..83069d0f69b3 100644
--- a/drivers/scsi/isci/request.c
+++ b/drivers/scsi/isci/request.c
@@ -2566,7 +2566,7 @@  static void isci_request_handle_controller_specific_errors(
 			if (!idev)
 				*status_ptr = SAS_DEVICE_UNKNOWN;
 			else
-				*status_ptr = SAM_STAT_TASK_ABORTED;
+				*status_ptr = SAS_STAT_TASK_ABORTED;
 
 			clear_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);
 		}
@@ -2696,7 +2696,7 @@  static void isci_request_handle_controller_specific_errors(
 	default:
 		/* Task in the target is not done. */
 		*response_ptr = SAS_TASK_UNDELIVERED;
-		*status_ptr = SAM_STAT_TASK_ABORTED;
+		*status_ptr = SAS_STAT_TASK_ABORTED;
 
 		if (task->task_proto == SAS_PROTOCOL_SMP)
 			set_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);
@@ -2719,7 +2719,7 @@  static void isci_process_stp_response(struct sas_task *task, struct dev_to_host_
 	if (ac_err_mask(fis->status))
 		ts->stat = SAS_PROTO_RESPONSE;
 	else
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 
 	ts->resp = SAS_TASK_COMPLETE;
 }
@@ -2782,7 +2782,7 @@  static void isci_request_io_request_complete(struct isci_host *ihost,
 	case SCI_IO_SUCCESS_IO_DONE_EARLY:
 
 		response = SAS_TASK_COMPLETE;
-		status   = SAM_STAT_GOOD;
+		status   = SAS_STAT_GOOD;
 		set_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);
 
 		if (completion_status == SCI_IO_SUCCESS_IO_DONE_EARLY) {
@@ -2852,7 +2852,7 @@  static void isci_request_io_request_complete(struct isci_host *ihost,
 
 		/* Fail the I/O. */
 		response = SAS_TASK_UNDELIVERED;
-		status = SAM_STAT_TASK_ABORTED;
+		status = SAS_STAT_TASK_ABORTED;
 
 		clear_bit(IREQ_COMPLETE_IN_TARGET, &request->flags);
 		break;
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c
index 62062ed6cd9a..4ab33393d4ed 100644
--- a/drivers/scsi/isci/task.c
+++ b/drivers/scsi/isci/task.c
@@ -160,7 +160,7 @@  int isci_task_execute_task(struct sas_task *task, gfp_t gfp_flags)
 
 			isci_task_refuse(ihost, task,
 					 SAS_TASK_UNDELIVERED,
-					 SAM_STAT_TASK_ABORTED);
+					 SAS_STAT_TASK_ABORTED);
 		} else {
 			task->task_state_flags |= SAS_TASK_AT_INITIATOR;
 			spin_unlock_irqrestore(&task->task_state_lock, flags);
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index e9a86128f1f1..fbdcf6fd7d85 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -116,9 +116,10 @@  static void sas_ata_task_done(struct sas_task *task)
 		}
 	}
 
-	if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD ||
-	    ((stat->stat == SAM_STAT_CHECK_CONDITION &&
-	      dev->sata_dev.class == ATA_DEV_ATAPI))) {
+	if (stat->stat == SAS_PROTO_RESPONSE ||
+	    stat->stat == SAS_STAT_GOOD ||
+	    (stat->stat == SAS_STAT_CHECK_CONDITION &&
+	      dev->sata_dev.class == ATA_DEV_ATAPI)) {
 		memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE);
 
 		if (!link->sactive) {
diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index 6d583e8c403a..bc8cbccb87cd 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -101,7 +101,7 @@  static int smp_execute_task_sg(struct domain_device *dev,
 			}
 		}
 		if (task->task_status.resp == SAS_TASK_COMPLETE &&
-		    task->task_status.stat == SAM_STAT_GOOD) {
+		    task->task_status.stat == SAS_STAT_GOOD) {
 			res = 0;
 			break;
 		}
diff --git a/drivers/scsi/libsas/sas_task.c b/drivers/scsi/libsas/sas_task.c
index e2d42593ce52..4e0c3ffd9aac 100644
--- a/drivers/scsi/libsas/sas_task.c
+++ b/drivers/scsi/libsas/sas_task.c
@@ -20,7 +20,7 @@  void sas_ssp_task_response(struct device *dev, struct sas_task *task,
 	else if (iu->datapres == 1)
 		tstat->stat = iu->resp_data[3];
 	else if (iu->datapres == 2) {
-		tstat->stat = SAM_STAT_CHECK_CONDITION;
+		tstat->stat = SAS_STAT_CHECK_CONDITION;
 		tstat->buf_valid_size =
 			min_t(int, SAS_STATUS_BUF_SIZE,
 			      be32_to_cpu(iu->sense_data_len));
@@ -32,7 +32,7 @@  void sas_ssp_task_response(struct device *dev, struct sas_task *task,
 	}
 	else
 		/* when datapres contains corrupt/unknown value... */
-		tstat->stat = SAM_STAT_CHECK_CONDITION;
+		tstat->stat = SAS_STAT_CHECK_CONDITION;
 }
 EXPORT_SYMBOL_GPL(sas_ssp_task_response);
 
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index 1acea528f27f..087c4f3acc81 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -1314,7 +1314,7 @@  static int mvs_exec_internal_tmf_task(struct domain_device *dev,
 		}
 
 		if (task->task_status.resp == SAS_TASK_COMPLETE &&
-		    task->task_status.stat == SAM_STAT_GOOD) {
+		    task->task_status.stat == SAS_STAT_GOOD) {
 			res = TMF_RESP_FUNC_COMPLETE;
 			break;
 		}
@@ -1764,7 +1764,7 @@  int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags)
 	case SAS_PROTOCOL_SSP:
 		/* hw says status == 0, datapres == 0 */
 		if (rx_desc & RXQ_GOOD) {
-			tstat->stat = SAM_STAT_GOOD;
+			tstat->stat = SAS_STAT_GOOD;
 			tstat->resp = SAS_TASK_COMPLETE;
 		}
 		/* response frame present */
@@ -1773,12 +1773,12 @@  int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags)
 						sizeof(struct mvs_err_info);
 			sas_ssp_task_response(mvi->dev, task, iu);
 		} else
-			tstat->stat = SAM_STAT_CHECK_CONDITION;
+			tstat->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 
 	case SAS_PROTOCOL_SMP: {
 			struct scatterlist *sg_resp = &task->smp_task.smp_resp;
-			tstat->stat = SAM_STAT_GOOD;
+			tstat->stat = SAS_STAT_GOOD;
 			to = kmap_atomic(sg_page(sg_resp));
 			memcpy(to + sg_resp->offset,
 				slot->response + sizeof(struct mvs_err_info),
@@ -1795,7 +1795,7 @@  int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags)
 		}
 
 	default:
-		tstat->stat = SAM_STAT_CHECK_CONDITION;
+		tstat->stat = SAS_STAT_CHECK_CONDITION;
 		break;
 	}
 	if (!slot->port->port_attached) {
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
index ecd06d2d7e81..4740d7eee196 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.c
+++ b/drivers/scsi/pm8001/pm8001_hwi.c
@@ -1930,7 +1930,7 @@  mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 			   param);
 		if (param == 0) {
 			ts->resp = SAS_TASK_COMPLETE;
-			ts->stat = SAM_STAT_GOOD;
+			ts->stat = SAS_STAT_GOOD;
 		} else {
 			ts->resp = SAS_TASK_COMPLETE;
 			ts->stat = SAS_PROTO_RESPONSE;
@@ -2390,7 +2390,7 @@  mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");
 		if (param == 0) {
 			ts->resp = SAS_TASK_COMPLETE;
-			ts->stat = SAM_STAT_GOOD;
+			ts->stat = SAS_STAT_GOOD;
 			/* check if response is for SEND READ LOG */
 			if (pm8001_dev &&
 				(pm8001_dev->id & NCQ_READ_LOG_FLAG)) {
@@ -2912,7 +2912,7 @@  mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	case IO_SUCCESS:
 		pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 		if (pm8001_dev)
 			atomic_dec(&pm8001_dev->running_req);
 		break;
@@ -2939,17 +2939,17 @@  mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	case IO_ERROR_HW_TIMEOUT:
 		pm8001_dbg(pm8001_ha, IO, "IO_ERROR_HW_TIMEOUT\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_BUSY;
+		ts->stat = SAS_STAT_BUSY;
 		break;
 	case IO_XFER_ERROR_BREAK:
 		pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_BUSY;
+		ts->stat = SAS_STAT_BUSY;
 		break;
 	case IO_XFER_ERROR_PHY_NOT_READY:
 		pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_BUSY;
+		ts->stat = SAS_STAT_BUSY;
 		break;
 	case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
 		pm8001_dbg(pm8001_ha, IO,
@@ -3710,7 +3710,7 @@  int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	case IO_SUCCESS:
 		pm8001_dbg(pm8001_ha, EH, "IO_SUCCESS\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 		break;
 	case IO_NOT_VALID:
 		pm8001_dbg(pm8001_ha, EH, "IO_NOT_VALID\n");
@@ -4355,7 +4355,7 @@  static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha,
 
 			spin_lock_irqsave(&task->task_state_lock, flags);
 			ts->resp = SAS_TASK_COMPLETE;
-			ts->stat = SAM_STAT_GOOD;
+			ts->stat = SAS_STAT_GOOD;
 			task->task_state_flags &= ~SAS_TASK_STATE_PENDING;
 			task->task_state_flags &= ~SAS_TASK_AT_INITIATOR;
 			task->task_state_flags |= SAS_TASK_STATE_DONE;
diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index d28af413b93a..4367f4166704 100644
--- a/drivers/scsi/pm8001/pm8001_sas.c
+++ b/drivers/scsi/pm8001/pm8001_sas.c
@@ -753,7 +753,7 @@  static int pm8001_exec_internal_tmf_task(struct domain_device *dev,
 		}
 
 		if (task->task_status.resp == SAS_TASK_COMPLETE &&
-			task->task_status.stat == SAM_STAT_GOOD) {
+			task->task_status.stat == SAS_STAT_GOOD) {
 			res = TMF_RESP_FUNC_COMPLETE;
 			break;
 		}
@@ -838,7 +838,7 @@  pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,
 		}
 
 		if (task->task_status.resp == SAS_TASK_COMPLETE &&
-			task->task_status.stat == SAM_STAT_GOOD) {
+			task->task_status.stat == SAS_STAT_GOOD) {
 			res = TMF_RESP_FUNC_COMPLETE;
 			break;
 
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 4e980830f9f5..4aec0405288f 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -1952,7 +1952,7 @@  mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 			   param);
 		if (param == 0) {
 			ts->resp = SAS_TASK_COMPLETE;
-			ts->stat = SAM_STAT_GOOD;
+			ts->stat = SAS_STAT_GOOD;
 		} else {
 			ts->resp = SAS_TASK_COMPLETE;
 			ts->stat = SAS_PROTO_RESPONSE;
@@ -2487,7 +2487,7 @@  mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 		pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");
 		if (param == 0) {
 			ts->resp = SAS_TASK_COMPLETE;
-			ts->stat = SAM_STAT_GOOD;
+			ts->stat = SAS_STAT_GOOD;
 			/* check if response is for SEND READ LOG */
 			if (pm8001_dev &&
 				(pm8001_dev->id & NCQ_READ_LOG_FLAG)) {
@@ -3042,7 +3042,7 @@  mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	case IO_SUCCESS:
 		pm8001_dbg(pm8001_ha, IO, "IO_SUCCESS\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_GOOD;
+		ts->stat = SAS_STAT_GOOD;
 		if (pm8001_dev)
 			atomic_dec(&pm8001_dev->running_req);
 		if (pm8001_ha->smp_exp_mode == SMP_DIRECT) {
@@ -3084,17 +3084,17 @@  mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)
 	case IO_ERROR_HW_TIMEOUT:
 		pm8001_dbg(pm8001_ha, IO, "IO_ERROR_HW_TIMEOUT\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_BUSY;
+		ts->stat = SAS_STAT_BUSY;
 		break;
 	case IO_XFER_ERROR_BREAK:
 		pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_BREAK\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_BUSY;
+		ts->stat = SAS_STAT_BUSY;
 		break;
 	case IO_XFER_ERROR_PHY_NOT_READY:
 		pm8001_dbg(pm8001_ha, IO, "IO_XFER_ERROR_PHY_NOT_READY\n");
 		ts->resp = SAS_TASK_COMPLETE;
-		ts->stat = SAM_STAT_BUSY;
+		ts->stat = SAS_STAT_BUSY;
 		break;
 	case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
 		pm8001_dbg(pm8001_ha, IO,
@@ -4699,7 +4699,7 @@  static int pm80xx_chip_sata_req(struct pm8001_hba_info *pm8001_ha,
 
 			spin_lock_irqsave(&task->task_state_lock, flags);
 			ts->resp = SAS_TASK_COMPLETE;
-			ts->stat = SAM_STAT_GOOD;
+			ts->stat = SAS_STAT_GOOD;
 			task->task_state_flags &= ~SAS_TASK_STATE_PENDING;
 			task->task_state_flags &= ~SAS_TASK_AT_INITIATOR;
 			task->task_state_flags |= SAS_TASK_STATE_DONE;
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index 9271d7a49b90..e68327fa4835 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -474,10 +474,16 @@  enum service_response {
 };
 
 enum exec_status {
-	/* The SAM_STAT_.. codes fit in the lower 6 bits, alias some of
-	 * them here to silence 'case value not in enumerated type' warnings
+	/*
+	 * Values 0..0x7f are used to return the SAM_STAT_* codes.  To avoid
+	 * 'case value not in enumerated type' compiler warnings every value
+	 * returned through the exec_status enum needs an alias with the SAS_
+	 * prefix here.
 	 */
-	__SAM_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION,
+	SAS_STAT_GOOD = SAM_STAT_GOOD,
+	SAS_STAT_BUSY = SAM_STAT_BUSY,
+	SAS_STAT_TASK_ABORTED = SAM_STAT_TASK_ABORTED,
+	SAS_STAT_CHECK_CONDITION = SAM_STAT_CHECK_CONDITION,
 
 	SAS_DEV_NO_RESPONSE = 0x80,
 	SAS_DATA_UNDERRUN,