summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2010-02-14 19:44:48 +0000
committermav <mav@FreeBSD.org>2010-02-14 19:44:48 +0000
commit5dd93c1032542a7f017943d9cb6d05fe2e2b6f1c (patch)
treec4560811baeecee5da1ccc92c1ae74444a4652d0 /sbin
parent5ff9e24e4e99f0bb1575ff3df73ef0266cd5f365 (diff)
downloadFreeBSD-src-5dd93c1032542a7f017943d9cb6d05fe2e2b6f1c.zip
FreeBSD-src-5dd93c1032542a7f017943d9cb6d05fe2e2b6f1c.tar.gz
MFC r203376, r203384:
- 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 'sbin')
-rw-r--r--sbin/camcontrol/camcontrol.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c
index c98d5c9..8a00f75 100644
--- a/sbin/camcontrol/camcontrol.c
+++ b/sbin/camcontrol/camcontrol.c
@@ -1010,8 +1010,10 @@ camxferrate(struct cam_device *device)
printf(" (");
if (ata->valid & CTS_ATA_VALID_MODE)
printf("%s, ", ata_mode2string(ata->mode));
+ if ((ata->valid & CTS_ATA_VALID_ATAPI) && ata->atapi != 0)
+ printf("ATAPI %dbytes, ", ata->atapi);
if (ata->valid & CTS_ATA_VALID_BYTECOUNT)
- printf("PIO size %dbytes", ata->bytecount);
+ printf("PIO %dbytes", ata->bytecount);
printf(")");
} else if (ccb->cts.transport == XPORT_SATA) {
struct ccb_trans_settings_sata *sata =
@@ -1022,8 +1024,10 @@ camxferrate(struct cam_device *device)
printf("SATA %d.x, ", sata->revision);
if (sata->valid & CTS_SATA_VALID_MODE)
printf("%s, ", ata_mode2string(sata->mode));
+ if ((sata->valid & CTS_SATA_VALID_ATAPI) && sata->atapi != 0)
+ printf("ATAPI %dbytes, ", sata->atapi);
if (sata->valid & CTS_SATA_VALID_BYTECOUNT)
- printf("PIO size %dbytes", sata->bytecount);
+ printf("PIO %dbytes", sata->bytecount);
printf(")");
}
@@ -2800,6 +2804,10 @@ cts_print(struct cam_device *device, struct ccb_trans_settings *cts)
fprintf(stdout, "%sATA mode: %s\n", pathstr,
ata_mode2string(ata->mode));
}
+ if ((ata->valid & CTS_ATA_VALID_ATAPI) != 0) {
+ fprintf(stdout, "%sATAPI packet length: %d\n", pathstr,
+ ata->atapi);
+ }
if ((ata->valid & CTS_ATA_VALID_BYTECOUNT) != 0) {
fprintf(stdout, "%sPIO transaction length: %d\n",
pathstr, ata->bytecount);
@@ -2817,6 +2825,10 @@ cts_print(struct cam_device *device, struct ccb_trans_settings *cts)
fprintf(stdout, "%sATA mode: %s\n", pathstr,
ata_mode2string(sata->mode));
}
+ if ((sata->valid & CTS_SATA_VALID_ATAPI) != 0) {
+ fprintf(stdout, "%sATAPI packet length: %d\n", pathstr,
+ sata->atapi);
+ }
if ((sata->valid & CTS_SATA_VALID_BYTECOUNT) != 0) {
fprintf(stdout, "%sPIO transaction length: %d\n",
pathstr, sata->bytecount);
OpenPOWER on IntegriCloud