diff options
author | mav <mav@FreeBSD.org> | 2010-02-02 11:09:28 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2010-02-02 11:09:28 +0000 |
commit | b5b6d6b0e0e8523be005d532c4327061249c2a84 (patch) | |
tree | 37197ad5ae0872a11e1bc6a7828374ebc3770e16 /sys/dev/siis | |
parent | 2c76d0e26f4843ec857eaeade022a391227acb85 (diff) | |
download | FreeBSD-src-b5b6d6b0e0e8523be005d532c4327061249c2a84.zip FreeBSD-src-b5b6d6b0e0e8523be005d532c4327061249c2a84.tar.gz |
- Give ATA/SATA SIMs info about ATAPI packet size, supported by device.
- Make ATA XPT to reject longer SCSI CDBs then supported by device, or
any SCSI CDBs, if device doesn't support ATAPI.
Diffstat (limited to 'sys/dev/siis')
-rw-r--r-- | sys/dev/siis/siis.c | 4 | ||||
-rw-r--r-- | sys/dev/siis/siis.h | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/sys/dev/siis/siis.c b/sys/dev/siis/siis.c index 5298c18..dc24c6c 100644 --- a/sys/dev/siis/siis.c +++ b/sys/dev/siis/siis.c @@ -1659,6 +1659,8 @@ siisaction(struct cam_sim *sim, union ccb *ccb) else ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PME); } + if (cts->xport_specific.sata.valid & CTS_SATA_VALID_TAGS) + d->atapi = cts->xport_specific.sata.atapi; ccb->ccb_h.status = CAM_REQ_CMP; xpt_done(ccb); break; @@ -1702,6 +1704,8 @@ siisaction(struct cam_sim *sim, union ccb *ccb) cts->xport_specific.sata.valid |= CTS_SATA_VALID_PM; cts->xport_specific.sata.tags = d->tags; cts->xport_specific.sata.valid |= CTS_SATA_VALID_TAGS; + cts->xport_specific.sata.atapi = d->atapi; + cts->xport_specific.sata.valid |= CTS_SATA_VALID_ATAPI; ccb->ccb_h.status = CAM_REQ_CMP; xpt_done(ccb); break; diff --git a/sys/dev/siis/siis.h b/sys/dev/siis/siis.h index f98d204..92b4e26 100644 --- a/sys/dev/siis/siis.h +++ b/sys/dev/siis/siis.h @@ -356,6 +356,7 @@ struct siis_device { int revision; int mode; u_int bytecount; + u_int atapi; u_int tags; }; |