From b72b15696ca2bf95df2cb509922a3ec1801796a0 Mon Sep 17 00:00:00 2001 From: Matt Jacob Date: Wed, 21 Mar 2001 00:49:37 +0000 Subject: [PATCH] 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. --- sys/dev/isp/isp_pci.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/dev/isp/isp_pci.c b/sys/dev/isp/isp_pci.c index b8a903b70aa..0064a1f4808 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) {