diff options
Diffstat (limited to 'drivers/scsi/sata_sil24.c')
-rw-r--r-- | drivers/scsi/sata_sil24.c | 16 |
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 | ||
298 | static const struct ata_port_operations sil24_ops = { | 297 | static 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 | ||
718 | static inline void sil24_host_intr(struct ata_port *ap) | 720 | static 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 | } |