summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorken <ken@FreeBSD.org>2013-04-02 17:29:17 +0000
committerken <ken@FreeBSD.org>2013-04-02 17:29:17 +0000
commit65d6e2cf04f600a82865a903278b095aa7e70b6b (patch)
tree5e99a93d673ce81902700cce52256122a45b2c7f
parentc634b4630f211f12467ee370df2aec9ec88bad36 (diff)
downloadFreeBSD-src-65d6e2cf04f600a82865a903278b095aa7e70b6b.zip
FreeBSD-src-65d6e2cf04f600a82865a903278b095aa7e70b6b.tar.gz
Fix sending virtual scatter/gather lists from the CTL CAM frontend
peripheral. Sponsored by: Spectra Logic
-rw-r--r--sys/cam/ctl/scsi_ctl.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/cam/ctl/scsi_ctl.c b/sys/cam/ctl/scsi_ctl.c
index c6f3700..30f16f7 100644
--- a/sys/cam/ctl/scsi_ctl.c
+++ b/sys/cam/ctl/scsi_ctl.c
@@ -916,7 +916,7 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb)
if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR)
flags |= CAM_DATA_SG_PADDR;
else
- flags &= ~CAM_DATA_SG;
+ flags |= CAM_DATA_SG;
data_ptr = (uint8_t *)cam_sglist;
dxfer_len = io->scsiio.kern_data_len;
} else {
@@ -938,6 +938,10 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb)
data_ptr = sglist[*ti].addr;
dxfer_len = sglist[*ti].len;
csio->sglist_cnt = 0;
+ if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR)
+ flags |= CAM_DATA_PADDR;
+ else
+ flags |= CAM_DATA_VADDR;
cmd_info->flags |= CTLFE_CMD_PIECEWISE;
(*ti)++;
}
OpenPOWER on IntegriCloud