diff options
Diffstat (limited to 'drivers/scsi/sata_mv.c')
-rw-r--r-- | drivers/scsi/sata_mv.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/scsi/sata_mv.c b/drivers/scsi/sata_mv.c index ab7432a5778..3e7866b51ac 100644 --- a/drivers/scsi/sata_mv.c +++ b/drivers/scsi/sata_mv.c | |||
@@ -430,7 +430,7 @@ static const struct ata_port_operations mv6_ops = { | |||
430 | .host_stop = mv_host_stop, | 430 | .host_stop = mv_host_stop, |
431 | }; | 431 | }; |
432 | 432 | ||
433 | static struct ata_port_info mv_port_info[] = { | 433 | static const struct ata_port_info mv_port_info[] = { |
434 | { /* chip_504x */ | 434 | { /* chip_504x */ |
435 | .sht = &mv_sht, | 435 | .sht = &mv_sht, |
436 | .host_flags = MV_COMMON_FLAGS, | 436 | .host_flags = MV_COMMON_FLAGS, |
@@ -1242,8 +1242,10 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant, | |||
1242 | VPRINTK("port %u IRQ found for qc, " | 1242 | VPRINTK("port %u IRQ found for qc, " |
1243 | "ata_status 0x%x\n", port,ata_status); | 1243 | "ata_status 0x%x\n", port,ata_status); |
1244 | /* mark qc status appropriately */ | 1244 | /* mark qc status appropriately */ |
1245 | if (!(qc->tf.ctl & ATA_NIEN)) | 1245 | if (!(qc->tf.ctl & ATA_NIEN)) { |
1246 | ata_qc_complete(qc, err_mask); | 1246 | qc->err_mask |= err_mask; |
1247 | ata_qc_complete(qc); | ||
1248 | } | ||
1247 | } | 1249 | } |
1248 | } | 1250 | } |
1249 | } | 1251 | } |
@@ -1864,7 +1866,8 @@ static void mv_eng_timeout(struct ata_port *ap) | |||
1864 | */ | 1866 | */ |
1865 | spin_lock_irqsave(&ap->host_set->lock, flags); | 1867 | spin_lock_irqsave(&ap->host_set->lock, flags); |
1866 | qc->scsidone = scsi_finish_command; | 1868 | qc->scsidone = scsi_finish_command; |
1867 | ata_qc_complete(qc, AC_ERR_OTHER); | 1869 | qc->err_mask |= AC_ERR_OTHER; |
1870 | ata_qc_complete(qc); | ||
1868 | spin_unlock_irqrestore(&ap->host_set->lock, flags); | 1871 | spin_unlock_irqrestore(&ap->host_set->lock, flags); |
1869 | } | 1872 | } |
1870 | } | 1873 | } |