]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/libsas/sas_ata.c
libata: eliminate the home grown dma padding in favour of
[linux-2.6-omap-h63xx.git] / drivers / scsi / libsas / sas_ata.c
index 5e573efcf0a70f90232ac916aa8897f85c5f713b..7cd05b599a12ca68348ccd721963e4afb7becede 100644 (file)
@@ -158,8 +158,8 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
        struct Scsi_Host *host = sas_ha->core.shost;
        struct sas_internal *i = to_sas_internal(host->transportt);
        struct scatterlist *sg;
-       unsigned int num = 0;
        unsigned int xfer = 0;
+       unsigned int si;
 
        task = sas_alloc_task(GFP_ATOMIC);
        if (!task)
@@ -176,22 +176,20 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
 
        ata_tf_to_fis(&qc->tf, 1, 0, (u8*)&task->ata_task.fis);
        task->uldd_task = qc;
-       if (is_atapi_taskfile(&qc->tf)) {
+       if (ata_is_atapi(qc->tf.protocol)) {
                memcpy(task->ata_task.atapi_packet, qc->cdb, qc->dev->cdb_len);
-               task->total_xfer_len = qc->nbytes + qc->pad_len;
-               task->num_scatter = qc->pad_len ? qc->n_elem + 1 : qc->n_elem;
+               task->total_xfer_len = qc->nbytes;
+               task->num_scatter = qc->n_elem;
        } else {
-               ata_for_each_sg(sg, qc) {
-                       num++;
+               for_each_sg(qc->sg, sg, qc->n_elem, si)
                        xfer += sg->length;
-               }
 
                task->total_xfer_len = xfer;
-               task->num_scatter = num;
+               task->num_scatter = si;
        }
 
        task->data_dir = qc->dma_dir;
-       task->scatter = qc->__sg;
+       task->scatter = qc->sg;
        task->ata_task.retry_count = 1;
        task->task_state_flags = SAS_TASK_STATE_PENDING;
        qc->lldd_task = task;
@@ -200,7 +198,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
        case ATA_PROT_NCQ:
                task->ata_task.use_ncq = 1;
                /* fall through */
-       case ATA_PROT_ATAPI_DMA:
+       case ATAPI_PROT_DMA:
        case ATA_PROT_DMA:
                task->ata_task.dma_xfer = 1;
                break;
@@ -249,17 +247,17 @@ static void sas_ata_phy_reset(struct ata_port *ap)
        switch (dev->sata_dev.command_set) {
                case ATA_COMMAND_SET:
                        SAS_DPRINTK("%s: Found ATA device.\n", __FUNCTION__);
-                       ap->device[0].class = ATA_DEV_ATA;
+                       ap->link.device[0].class = ATA_DEV_ATA;
                        break;
                case ATAPI_COMMAND_SET:
                        SAS_DPRINTK("%s: Found ATAPI device.\n", __FUNCTION__);
-                       ap->device[0].class = ATA_DEV_ATAPI;
+                       ap->link.device[0].class = ATA_DEV_ATAPI;
                        break;
                default:
                        SAS_DPRINTK("%s: Unknown SATA command set: %d.\n",
                                    __FUNCTION__,
                                    dev->sata_dev.command_set);
-                       ap->device[0].class = ATA_DEV_UNKNOWN;
+                       ap->link.device[0].class = ATA_DEV_UNKNOWN;
                        break;
        }
 
@@ -317,7 +315,7 @@ static int sas_ata_scr_write(struct ata_port *ap, unsigned int sc_reg_in,
                        dev->sata_dev.serror = val;
                        break;
                case SCR_ACTIVE:
-                       dev->sata_dev.ap->sactive = val;
+                       dev->sata_dev.ap->link.sactive = val;
                        break;
                default:
                        return -EINVAL;
@@ -342,7 +340,7 @@ static int sas_ata_scr_read(struct ata_port *ap, unsigned int sc_reg_in,
                        *val = dev->sata_dev.serror;
                        return 0;
                case SCR_ACTIVE:
-                       *val = dev->sata_dev.ap->sactive;
+                       *val = dev->sata_dev.ap->link.sactive;
                        return 0;
                default:
                        return -EINVAL;
@@ -350,7 +348,6 @@ static int sas_ata_scr_read(struct ata_port *ap, unsigned int sc_reg_in,
 }
 
 static struct ata_port_operations sas_sata_ops = {
-       .port_disable           = ata_port_disable,
        .check_status           = sas_ata_check_status,
        .check_altstatus        = sas_ata_check_status,
        .dev_select             = ata_noop_dev_select,
@@ -501,7 +498,7 @@ static int sas_execute_task(struct sas_task *task, void *buffer, int size,
                        goto ex_err;
                }
                wait_for_completion(&task->completion);
-               res = -ETASK;
+               res = -ECOMM;
                if (task->task_state_flags & SAS_TASK_STATE_ABORTED) {
                        int res2;
                        SAS_DPRINTK("task aborted, flags:0x%x\n",