switch (opcode) {
        case TC_NO_ERROR:
                ts->resp = SAS_TASK_COMPLETE;
-               ts->stat = SAM_GOOD;
+               ts->stat = SAM_STAT_GOOD;
                break;
        case TC_UNDERRUN:
                ts->resp = SAS_TASK_COMPLETE;
 
                case SAS_SG_ERR:
                        return AC_ERR_INVALID;
 
-               case SAM_CHECK_COND:
+               case SAM_STAT_CHECK_CONDITION:
                case SAS_OPEN_TO:
                case SAS_OPEN_REJECT:
                        SAS_DPRINTK("%s: Saw error %d.  What to do?\n",
        sas_ha = dev->port->ha;
 
        spin_lock_irqsave(dev->sata_dev.ap->lock, flags);
-       if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_GOOD) {
+       if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD) {
                ata_tf_from_fis(resp->ending_fis, &dev->sata_dev.tf);
                qc->err_mask |= ac_err_mask(dev->sata_dev.tf.command);
                dev->sata_dev.sstatus = resp->sstatus;
                                        goto ex_err;
                        }
                }
-               if (task->task_status.stat == SAM_BUSY ||
-                          task->task_status.stat == SAM_TASK_SET_FULL ||
+               if (task->task_status.stat == SAM_STAT_BUSY ||
+                          task->task_status.stat == SAM_STAT_TASK_SET_FULL ||
                           task->task_status.stat == SAS_QUEUE_FULL) {
                        SAS_DPRINTK("task: q busy, sleeping...\n");
                        schedule_timeout_interruptible(HZ);
-               } else if (task->task_status.stat == SAM_CHECK_COND) {
+               } else if (task->task_status.stat == SAM_STAT_CHECK_CONDITION) {
                        struct scsi_sense_hdr shdr;
 
                        if (!scsi_normalize_sense(ts->buf, ts->buf_valid_size,
                                            shdr.asc, shdr.ascq);
                        }
                } else if (task->task_status.resp != SAS_TASK_COMPLETE ||
-                          task->task_status.stat != SAM_GOOD) {
+                          task->task_status.stat != SAM_STAT_GOOD) {
                        SAS_DPRINTK("task finished with resp:0x%x, "
                                    "stat:0x%x\n",
                                    task->task_status.resp,
 
                        }
                }
                if (task->task_status.resp == SAS_TASK_COMPLETE &&
-                   task->task_status.stat == SAM_GOOD) {
+                   task->task_status.stat == SAM_STAT_GOOD) {
                        res = 0;
                        break;
                } if (task->task_status.resp == SAS_TASK_COMPLETE &&
 
                case SAS_ABORTED_TASK:
                        hs = DID_ABORT;
                        break;
-               case SAM_CHECK_COND:
+               case SAM_STAT_CHECK_CONDITION:
                        memcpy(sc->sense_buffer, ts->buf,
                               min(SCSI_SENSE_BUFFERSIZE, ts->buf_valid_size));
-                       stat = SAM_CHECK_COND;
+                       stat = SAM_STAT_CHECK_CONDITION;
                        break;
                default:
                        stat = ts->stat;
 
        else if (iu->datapres == 1)
                tstat->stat = iu->resp_data[3];
        else if (iu->datapres == 2) {
-               tstat->stat = SAM_CHECK_COND;
+               tstat->stat = SAM_STAT_CHECK_CONDITION;
                tstat->buf_valid_size =
                        min_t(int, SAS_STATUS_BUF_SIZE,
                              be32_to_cpu(iu->sense_data_len));
                memcpy(tstat->buf, iu->sense_data, tstat->buf_valid_size);
 
-               if (iu->status != SAM_CHECK_COND)
+               if (iu->status != SAM_STAT_CHECK_CONDITION)
                        dev_printk(KERN_WARNING, dev,
                                   "dev %llx sent sense data, but "
                                   "stat(%x) is not CHECK CONDITION\n",
        }
        else
                /* when datapres contains corrupt/unknown value... */
-               tstat->stat = SAM_CHECK_COND;
+               tstat->stat = SAM_STAT_CHECK_CONDITION;
 }
 EXPORT_SYMBOL_GPL(sas_ssp_task_response);
 
 
                }
 
                if (task->task_status.resp == SAS_TASK_COMPLETE &&
-                   task->task_status.stat == SAM_GOOD) {
+                   task->task_status.stat == SAM_STAT_GOOD) {
                        res = TMF_RESP_FUNC_COMPLETE;
                        break;
                }
        struct mvs_device *mvi_dev = task->dev->lldd_dev;
        struct task_status_struct *tstat = &task->task_status;
        struct ata_task_resp *resp = (struct ata_task_resp *)tstat->buf;
-       int stat = SAM_GOOD;
+       int stat = SAM_STAT_GOOD;
 
 
        resp->frame_len = sizeof(struct dev_to_host_fis);
 
        MVS_CHIP_DISP->command_active(mvi, slot_idx);
 
-       stat = SAM_CHECK_COND;
+       stat = SAM_STAT_CHECK_CONDITION;
        switch (task->task_proto) {
        case SAS_PROTOCOL_SSP:
                stat = SAS_ABORTED_TASK;
                break;
        case SAS_PROTOCOL_SMP:
-               stat = SAM_CHECK_COND;
+               stat = SAM_STAT_CHECK_CONDITION;
                break;
 
        case SAS_PROTOCOL_SATA:
        case SAS_PROTOCOL_SSP:
                /* hw says status == 0, datapres == 0 */
                if (rx_desc & RXQ_GOOD) {
-                       tstat->stat = SAM_GOOD;
+                       tstat->stat = SAM_STAT_GOOD;
                        tstat->resp = SAS_TASK_COMPLETE;
                }
                /* response frame present */
                                                sizeof(struct mvs_err_info);
                        sas_ssp_task_response(mvi->dev, task, iu);
                } else
-                       tstat->stat = SAM_CHECK_COND;
+                       tstat->stat = SAM_STAT_CHECK_CONDITION;
                break;
 
        case SAS_PROTOCOL_SMP: {
                        struct scatterlist *sg_resp = &task->smp_task.smp_resp;
-                       tstat->stat = SAM_GOOD;
+                       tstat->stat = SAM_STAT_GOOD;
                        to = kmap_atomic(sg_page(sg_resp), KM_IRQ0);
                        memcpy(to + sg_resp->offset,
                                slot->response + sizeof(struct mvs_err_info),
                }
 
        default:
-               tstat->stat = SAM_CHECK_COND;
+               tstat->stat = SAM_STAT_CHECK_CONDITION;
                break;
        }
        if (!slot->port->port_attached) {
 
                        ",param = %d \n", param));
                if (param == 0) {
                        ts->resp = SAS_TASK_COMPLETE;
-                       ts->stat = SAM_GOOD;
+                       ts->stat = SAM_STAT_GOOD;
                } else {
                        ts->resp = SAS_TASK_COMPLETE;
                        ts->stat = SAS_PROTO_RESPONSE;
                PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n"));
                if (param == 0) {
                        ts->resp = SAS_TASK_COMPLETE;
-                       ts->stat = SAM_GOOD;
+                       ts->stat = SAM_STAT_GOOD;
                } else {
                        u8 len;
                        ts->resp = SAS_TASK_COMPLETE;
        case IO_SUCCESS:
                PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n"));
                ts->resp = SAS_TASK_COMPLETE;
-               ts->stat = SAM_GOOD;
+               ts->stat = SAM_STAT_GOOD;
        if (pm8001_dev)
                        pm8001_dev->running_req--;
                break;
                PM8001_IO_DBG(pm8001_ha,
                        pm8001_printk("IO_ERROR_HW_TIMEOUT\n"));
                ts->resp = SAS_TASK_COMPLETE;
-               ts->stat = SAM_BUSY;
+               ts->stat = SAM_STAT_BUSY;
                break;
        case IO_XFER_ERROR_BREAK:
                PM8001_IO_DBG(pm8001_ha,
                        pm8001_printk("IO_XFER_ERROR_BREAK\n"));
                ts->resp = SAS_TASK_COMPLETE;
-               ts->stat = SAM_BUSY;
+               ts->stat = SAM_STAT_BUSY;
                break;
        case IO_XFER_ERROR_PHY_NOT_READY:
                PM8001_IO_DBG(pm8001_ha,
                        pm8001_printk("IO_XFER_ERROR_PHY_NOT_READY\n"));
                ts->resp = SAS_TASK_COMPLETE;
-               ts->stat = SAM_BUSY;
+               ts->stat = SAM_STAT_BUSY;
                break;
        case IO_OPEN_CNX_ERROR_PROTOCOL_NOT_SUPPORTED:
                PM8001_IO_DBG(pm8001_ha,
        case IO_SUCCESS:
                PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n"));
                ts->resp = SAS_TASK_COMPLETE;
-               ts->stat = SAM_GOOD;
+               ts->stat = SAM_STAT_GOOD;
                break;
        case IO_NOT_VALID:
                PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_NOT_VALID\n"));
 
                }
 
                if (task->task_status.resp == SAS_TASK_COMPLETE &&
-                       task->task_status.stat == SAM_GOOD) {
+                       task->task_status.stat == SAM_STAT_GOOD) {
                        res = TMF_RESP_FUNC_COMPLETE;
                        break;
                }
                }
 
                if (task->task_status.resp == SAS_TASK_COMPLETE &&
-                       task->task_status.stat == SAM_GOOD) {
+                       task->task_status.stat == SAM_STAT_GOOD) {
                        res = TMF_RESP_FUNC_COMPLETE;
                        break;
 
 
 };
 
 enum exec_status {
-       SAM_GOOD         = 0,
-       SAM_CHECK_COND   = 2,
-       SAM_COND_MET     = 4,
-       SAM_BUSY         = 8,
-       SAM_INTERMEDIATE = 0x10,
-       SAM_IM_COND_MET  = 0x12,
-       SAM_RESV_CONFLICT= 0x14,
-       SAM_TASK_SET_FULL= 0x28,
-       SAM_ACA_ACTIVE   = 0x30,
-       SAM_TASK_ABORTED = 0x40,
+       /* The SAM_STAT_.. codes fit in the lower 6 bits */
 
        SAS_DEV_NO_RESPONSE = 0x80,
        SAS_DATA_UNDERRUN,