aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/u14-34f.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/u14-34f.c')
-rw-r--r--drivers/scsi/u14-34f.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c
index e778e17d57f0..cfab8f197084 100644
--- a/drivers/scsi/u14-34f.c
+++ b/drivers/scsi/u14-34f.c
@@ -1822,7 +1822,7 @@ static irqreturn_t ihdlr(int irq, unsigned int j) {
1822 1822
1823 /* If there was a bus reset, redo operation on each target */ 1823 /* If there was a bus reset, redo operation on each target */
1824 else if (tstatus != GOOD && SCpnt->device->type == TYPE_DISK 1824 else if (tstatus != GOOD && SCpnt->device->type == TYPE_DISK
1825 && HD(j)->target_redo[SCpnt->device->id][SCpnt->device->channel]) 1825 && HD(j)->target_redo[scmd_id(SCpnt)][scmd_channel(SCpnt)])
1826 status = DID_BUS_BUSY << 16; 1826 status = DID_BUS_BUSY << 16;
1827 1827
1828 /* Works around a flaw in scsi.c */ 1828 /* Works around a flaw in scsi.c */
@@ -1835,29 +1835,28 @@ static irqreturn_t ihdlr(int irq, unsigned int j) {
1835 status = DID_OK << 16; 1835 status = DID_OK << 16;
1836 1836
1837 if (tstatus == GOOD) 1837 if (tstatus == GOOD)
1838 HD(j)->target_redo[SCpnt->device->id][SCpnt->device->channel] = FALSE; 1838 HD(j)->target_redo[scmd_id(SCpnt)][scmd_channel(SCpnt)] = FALSE;
1839 1839
1840 if (spp->target_status && SCpnt->device->type == TYPE_DISK && 1840 if (spp->target_status && SCpnt->device->type == TYPE_DISK &&
1841 (!(tstatus == CHECK_CONDITION && HD(j)->iocount <= 1000 && 1841 (!(tstatus == CHECK_CONDITION && HD(j)->iocount <= 1000 &&
1842 (SCpnt->sense_buffer[2] & 0xf) == NOT_READY))) 1842 (SCpnt->sense_buffer[2] & 0xf) == NOT_READY)))
1843 printk("%s: ihdlr, target %d.%d:%d, pid %ld, "\ 1843 scmd_printk(KERN_INFO, SCpnt,
1844 "target_status 0x%x, sense key 0x%x.\n", BN(j), 1844 "ihdlr, pid %ld, target_status 0x%x, sense key 0x%x.\n",
1845 SCpnt->device->channel, SCpnt->device->id, SCpnt->device->lun,
1846 SCpnt->pid, spp->target_status, 1845 SCpnt->pid, spp->target_status,
1847 SCpnt->sense_buffer[2]); 1846 SCpnt->sense_buffer[2]);
1848 1847
1849 HD(j)->target_to[SCpnt->device->id][SCpnt->device->channel] = 0; 1848 HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)] = 0;
1850 1849
1851 if (HD(j)->last_retried_pid == SCpnt->pid) HD(j)->retries = 0; 1850 if (HD(j)->last_retried_pid == SCpnt->pid) HD(j)->retries = 0;
1852 1851
1853 break; 1852 break;
1854 case ASST: /* Selection Time Out */ 1853 case ASST: /* Selection Time Out */
1855 1854
1856 if (HD(j)->target_to[SCpnt->device->id][SCpnt->device->channel] > 1) 1855 if (HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)] > 1)
1857 status = DID_ERROR << 16; 1856 status = DID_ERROR << 16;
1858 else { 1857 else {
1859 status = DID_TIME_OUT << 16; 1858 status = DID_TIME_OUT << 16;
1860 HD(j)->target_to[SCpnt->device->id][SCpnt->device->channel]++; 1859 HD(j)->target_to[scmd_id(SCpnt)][scmd_channel(SCpnt)]++;
1861 } 1860 }
1862 1861
1863 break; 1862 break;