summaryrefslogtreecommitdiffstats
path: root/sys/pci/scsiiom.c
diff options
context:
space:
mode:
authoritojun <itojun@FreeBSD.org>1997-08-30 05:49:20 +0000
committeritojun <itojun@FreeBSD.org>1997-08-30 05:49:20 +0000
commit8ab1ccfa8c5743113620043a9bdad77be30b4666 (patch)
tree50024ced3d53b408467c2a4f70746ec00fab96d7 /sys/pci/scsiiom.c
parentcca63e4f094182ea869d9882624d193900487f17 (diff)
downloadFreeBSD-src-8ab1ccfa8c5743113620043a9bdad77be30b4666.zip
FreeBSD-src-8ab1ccfa8c5743113620043a9bdad77be30b4666.tar.gz
Scsi RESERVATION CONFLICT and BUSY support for Tekram scsi cards.
Checked with DC390. Pls mail me if you have any trouble with this patch.
Diffstat (limited to 'sys/pci/scsiiom.c')
-rw-r--r--sys/pci/scsiiom.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/pci/scsiiom.c b/sys/pci/scsiiom.c
index 29fdb2d..c611518 100644
--- a/sys/pci/scsiiom.c
+++ b/sys/pci/scsiiom.c
@@ -1176,6 +1176,20 @@ SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
pSRB->TargetStatus = 0;
pcmd->error = XS_TIMEOUT;
}
+ else if (status == SCSI_STAT_BUSY)
+ {
+#ifdef DC390_DEBUG0
+ printf("DC390: target busy at %s %d\n", __FILE__, __LINE__);
+#endif
+ pcmd->error = XS_BUSY;
+ }
+ else if (status == SCSI_STAT_RESCONFLICT)
+ {
+#ifdef DC390_DEBUG0
+ printf("DC390: target reserved at %s %d\n", __FILE__, __LINE__);
+#endif
+ pcmd->error = XS_BUSY; /*XXX*/
+ }
else
{
pSRB->AdaptStatus = 0;
@@ -1193,6 +1207,9 @@ SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
}
else
{
+#ifdef DC390_DEBUG0
+ printf("DC390: driver stuffup at %s %d\n", __FILE__, __LINE__);
+#endif
pcmd->error = XS_DRIVER_STUFFUP;
}
}
@@ -1207,6 +1224,9 @@ SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
}
else if( pSRB->SRBStatus & PARITY_ERROR)
{
+#ifdef DC390_DEBUG0
+ printf("DC390: driver stuffup %s %d\n", __FILE__, __LINE__);
+#endif
pcmd->error = XS_DRIVER_STUFFUP;
}
else /* No error */
OpenPOWER on IntegriCloud