aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sata_sil24.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/sata_sil24.c')
-rw-r--r--drivers/scsi/sata_sil24.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c
index e0d6f194f54f..923130185a9e 100644
--- a/drivers/scsi/sata_sil24.c
+++ b/drivers/scsi/sata_sil24.c
@@ -292,7 +292,6 @@ static struct scsi_host_template sil24_sht = {
292 .dma_boundary = ATA_DMA_BOUNDARY, 292 .dma_boundary = ATA_DMA_BOUNDARY,
293 .slave_configure = ata_scsi_slave_config, 293 .slave_configure = ata_scsi_slave_config,
294 .bios_param = ata_std_bios_param, 294 .bios_param = ata_std_bios_param,
295 .ordered_flush = 1, /* NCQ not supported yet */
296}; 295};
297 296
298static const struct ata_port_operations sil24_ops = { 297static const struct ata_port_operations sil24_ops = {
@@ -654,7 +653,8 @@ static void sil24_eng_timeout(struct ata_port *ap)
654 */ 653 */
655 printk(KERN_ERR "ata%u: command timeout\n", ap->id); 654 printk(KERN_ERR "ata%u: command timeout\n", ap->id);
656 qc->scsidone = scsi_finish_command; 655 qc->scsidone = scsi_finish_command;
657 ata_qc_complete(qc, AC_ERR_OTHER); 656 qc->err_mask |= AC_ERR_OTHER;
657 ata_qc_complete(qc);
658 658
659 sil24_reset_controller(ap); 659 sil24_reset_controller(ap);
660} 660}
@@ -711,8 +711,10 @@ static void sil24_error_intr(struct ata_port *ap, u32 slot_stat)
711 sil24_reset_controller(ap); 711 sil24_reset_controller(ap);
712 } 712 }
713 713
714 if (qc) 714 if (qc) {
715 ata_qc_complete(qc, err_mask); 715 qc->err_mask |= err_mask;
716 ata_qc_complete(qc);
717 }
716} 718}
717 719
718static inline void sil24_host_intr(struct ata_port *ap) 720static inline void sil24_host_intr(struct ata_port *ap)
@@ -734,8 +736,10 @@ static inline void sil24_host_intr(struct ata_port *ap)
734 */ 736 */
735 sil24_update_tf(ap); 737 sil24_update_tf(ap);
736 738
737 if (qc) 739 if (qc) {
738 ata_qc_complete(qc, ac_err_mask(pp->tf.command)); 740 qc->err_mask |= ac_err_mask(pp->tf.command);
741 ata_qc_complete(qc);
742 }
739 } else 743 } else
740 sil24_error_intr(ap, slot_stat); 744 sil24_error_intr(ap, slot_stat);
741} 745}