summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2000-02-15 00:50:01 +0000
committermjacob <mjacob@FreeBSD.org>2000-02-15 00:50:01 +0000
commit2d1e2e55500a55a7f7b2f706e111c39ad068889f (patch)
tree4591e25646cae25b26b48f686b068c8bc3309572 /sys/dev
parenta112a90a017df523bfdcf3a822904839ecf9926a (diff)
downloadFreeBSD-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')
-rw-r--r--sys/dev/isp/isp_pci.c6
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 {
OpenPOWER on IntegriCloud