summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2001-03-21 00:49:37 +0000
committermjacob <mjacob@FreeBSD.org>2001-03-21 00:49:37 +0000
commitc6e2faf458e09343b6fe349e1a7148602924f42b (patch)
tree2a29d8b31c473f6ac6ad6ff2643e730c55a41757 /sys
parent19e4ecac5bb0513cf60610a656c2a784e01692ce (diff)
downloadFreeBSD-src-c6e2faf458e09343b6fe349e1a7148602924f42b.zip
FreeBSD-src-c6e2faf458e09343b6fe349e1a7148602924f42b.tar.gz
For parallel SCSI, let us now do status with the final CTIO. For the 1080,
I was hanging after sending a xfer CTIO and a status CTIO for a non-discon INQUIRY- the xfer CTIO was returned as completed OK, but the status CTIO was dropped on the floor. All the fields looked good. I don't know why it got dropped. But allowing status to go back with data xfer seemed to work. I also noticed that with a non-disconnecting command that the firmware handle in the ATIO is zero- this leads me to believe that the f/w really can only handle one CTIO at a time in the discon case, and it had no idea what to do with the second (status) CTIO.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/isp/isp_pci.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/isp/isp_pci.c b/sys/dev/isp/isp_pci.c
index b8a903b..0064a1f 100644
--- a/sys/dev/isp/isp_pci.c
+++ b/sys/dev/isp/isp_pci.c
@@ -1090,11 +1090,14 @@ tdma_mk(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
*/
scsi_status = cto->ct_scsi_status;
+#if 0
+ sflags |= CT_NODATA;
/*
* We can't do a status at the same time as a data CTIO, so
* we need to synthesize an extra CTIO at this level.
*/
nctios++;
+#endif
} else {
sflags = scsi_status = resid = 0;
}
@@ -1169,7 +1172,7 @@ tdma_mk(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
if (send_status) {
cto->ct_scsi_status = scsi_status;
- cto->ct_flags |= sflags | CT_NO_DATA;;
+ cto->ct_flags |= sflags;
cto->ct_resid = resid;
}
if (send_status) {
OpenPOWER on IntegriCloud