summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/isp/isp_pci.c6
-rw-r--r--sys/pci/isp_pci.c6
2 files changed, 10 insertions, 2 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 {
diff --git a/sys/pci/isp_pci.c b/sys/pci/isp_pci.c
index 50ed5ee..9ced6f8 100644
--- a/sys/pci/isp_pci.c
+++ b/sys/pci/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