Merge branch 'for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata
[pandora-kernel.git] / drivers / scsi / aic94xx / aic94xx_task.c
index 59b86e2..cdd4ab6 100644 (file)
@@ -373,10 +373,10 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task,
 
        if (unlikely(task->ata_task.device_control_reg_update))
                scb->header.opcode = CONTROL_ATA_DEV;
-       else if (dev->sata_dev.command_set == ATA_COMMAND_SET)
-               scb->header.opcode = INITIATE_ATA_TASK;
-       else
+       else if (dev->sata_dev.class == ATA_DEV_ATAPI)
                scb->header.opcode = INITIATE_ATAPI_TASK;
+       else
+               scb->header.opcode = INITIATE_ATA_TASK;
 
        scb->ata_task.proto_conn_rate = (1 << 5); /* STP */
        if (dev->port->oob_mode == SAS_OOB_MODE)
@@ -387,7 +387,7 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task,
        if (likely(!task->ata_task.device_control_reg_update))
                scb->ata_task.fis.flags |= 0x80; /* C=1: update ATA cmd reg */
        scb->ata_task.fis.flags &= 0xF0; /* PM_PORT field shall be 0 */
-       if (dev->sata_dev.command_set == ATAPI_COMMAND_SET)
+       if (dev->sata_dev.class == ATA_DEV_ATAPI)
                memcpy(scb->ata_task.atapi_packet, task->ata_task.atapi_packet,
                       16);
        scb->ata_task.sister_scb = cpu_to_le16(0xFFFF);
@@ -399,7 +399,7 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task,
                if (task->ata_task.dma_xfer)
                        flags |= DATA_XFER_MODE_DMA;
                if (task->ata_task.use_ncq &&
-                   dev->sata_dev.command_set != ATAPI_COMMAND_SET)
+                   dev->sata_dev.class != ATA_DEV_ATAPI)
                        flags |= ATA_Q_TYPE_NCQ;
                flags |= data_dir_flags[task->data_dir];
                scb->ata_task.ata_flags = flags;
@@ -543,8 +543,7 @@ static int asd_can_queue(struct asd_ha_struct *asd_ha, int num)
        return res;
 }
 
-int asd_execute_task(struct sas_task *task, const int num,
-                    gfp_t gfp_flags)
+int asd_execute_task(struct sas_task *task, gfp_t gfp_flags)
 {
        int res = 0;
        LIST_HEAD(alist);
@@ -553,11 +552,11 @@ int asd_execute_task(struct sas_task *task, const int num,
        struct asd_ha_struct *asd_ha = task->dev->port->ha->lldd_ha;
        unsigned long flags;
 
-       res = asd_can_queue(asd_ha, num);
+       res = asd_can_queue(asd_ha, 1);
        if (res)
                return res;
 
-       res = num;
+       res = 1;
        ascb = asd_ascb_alloc_list(asd_ha, &res, gfp_flags);
        if (res) {
                res = -ENOMEM;
@@ -568,7 +567,7 @@ int asd_execute_task(struct sas_task *task, const int num,
        list_for_each_entry(a, &alist, list) {
                a->uldd_task = t;
                t->lldd_task = a;
-               t = list_entry(t->list.next, struct sas_task, list);
+               break;
        }
        list_for_each_entry(a, &alist, list) {
                t = a->uldd_task;
@@ -601,7 +600,7 @@ int asd_execute_task(struct sas_task *task, const int num,
        }
        list_del_init(&alist);
 
-       res = asd_post_ascb_list(asd_ha, ascb, num);
+       res = asd_post_ascb_list(asd_ha, ascb, 1);
        if (unlikely(res)) {
                a = NULL;
                __list_add(&alist, ascb->list.prev, &ascb->list);
@@ -639,6 +638,6 @@ out_err_unmap:
 out_err:
        if (ascb)
                asd_ascb_free_list(ascb);
-       asd_can_dequeue(asd_ha, num);
+       asd_can_dequeue(asd_ha, 1);
        return res;
 }