diff options
author | mjacob <mjacob@FreeBSD.org> | 2000-02-15 00:50:01 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 2000-02-15 00:50:01 +0000 |
commit | 2d1e2e55500a55a7f7b2f706e111c39ad068889f (patch) | |
tree | 4591e25646cae25b26b48f686b068c8bc3309572 /sys/dev/isp/isp_pci.c | |
parent | a112a90a017df523bfdcf3a822904839ecf9926a (diff) | |
download | FreeBSD-src-2d1e2e55500a55a7f7b2f706e111c39ad068889f.zip FreeBSD-src-2d1e2e55500a55a7f7b2f706e111c39ad068889f.tar.gz |
If the CDB length is greater than 12 for parallel SCSI, ispscsicmd has
made the initial queue entry a EXTENDED CMD queue entry, so we have to
go straight to continuation segments for any data segments.
approved: jkh
Diffstat (limited to 'sys/dev/isp/isp_pci.c')
-rw-r--r-- | sys/dev/isp/isp_pci.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/isp/isp_pci.c b/sys/dev/isp/isp_pci.c index 50ed5ee..9ced6f8 100644 --- a/sys/dev/isp/isp_pci.c +++ b/sys/dev/isp/isp_pci.c @@ -1525,7 +1525,11 @@ dma2(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error) ((ispreqt2_t *)rq)->req_flags |= REQFLAG_DATA_OUT; } } else { - seglim = ISP_RQDSEG; + if (csio->cdb_len > 12) { + seglim = 0; + } else { + seglim = ISP_RQDSEG; + } if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { rq->req_flags |= REQFLAG_DATA_IN; } else { |