diff options
author | mjacob <mjacob@FreeBSD.org> | 2001-03-21 00:49:37 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 2001-03-21 00:49:37 +0000 |
commit | c6e2faf458e09343b6fe349e1a7148602924f42b (patch) | |
tree | 2a29d8b31c473f6ac6ad6ff2643e730c55a41757 /sys | |
parent | 19e4ecac5bb0513cf60610a656c2a784e01692ce (diff) | |
download | FreeBSD-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.c | 5 |
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) { |