diff options
author | mav <mav@FreeBSD.org> | 2015-03-31 07:26:39 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2015-03-31 07:26:39 +0000 |
commit | 49119503d25e04232a3fdd9ee28e5ae74674ec06 (patch) | |
tree | 3d5be8a57723ce4eab1da95ecbd3948912e0fd6e /sys/cam/ata | |
parent | 7e7a1cb5ec8594c38877a49aa83fa0ccf72cf4b0 (diff) | |
download | FreeBSD-src-49119503d25e04232a3fdd9ee28e5ae74674ec06.zip FreeBSD-src-49119503d25e04232a3fdd9ee28e5ae74674ec06.tar.gz |
MFC r280172: Improve ATA and SCSI versions printing.
There is no "SCSI-6" and "ATA-9", but there is "SPC-4" and "ACS-2".
Diffstat (limited to 'sys/cam/ata')
-rw-r--r-- | sys/cam/ata/ata_all.c | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/sys/cam/ata/ata_all.c b/sys/cam/ata/ata_all.c index aa392c5..d836e42 100644 --- a/sys/cam/ata/ata_all.c +++ b/sys/cam/ata/ata_all.c @@ -275,28 +275,38 @@ ata_res_sbuf(struct ccb_ataio *ataio, struct sbuf *sb) void ata_print_ident(struct ata_params *ident_data) { - char product[48], revision[16]; + const char *proto; + char product[48], revision[16], ata[12], sata[12]; cam_strvis(product, ident_data->model, sizeof(ident_data->model), sizeof(product)); cam_strvis(revision, ident_data->revision, sizeof(ident_data->revision), sizeof(revision)); - printf("<%s %s> %s-%d", - product, revision, - (ident_data->config == ATA_PROTO_CFA) ? "CFA" : - (ident_data->config & ATA_PROTO_ATAPI) ? "ATAPI" : "ATA", - ata_version(ident_data->version_major)); + proto = (ident_data->config == ATA_PROTO_CFA) ? "CFA" : + (ident_data->config & ATA_PROTO_ATAPI) ? "ATAPI" : "ATA"; + if (ata_version(ident_data->version_major) == 0) { + snprintf(ata, sizeof(ata), "%s", proto); + } else if (ata_version(ident_data->version_major) <= 7) { + snprintf(ata, sizeof(ata), "%s-%d", proto, + ata_version(ident_data->version_major)); + } else if (ata_version(ident_data->version_major) == 8) { + snprintf(ata, sizeof(ata), "%s8-ACS", proto); + } else { + snprintf(ata, sizeof(ata), "ACS-%d %s", + ata_version(ident_data->version_major) - 7, proto); + } if (ident_data->satacapabilities && ident_data->satacapabilities != 0xffff) { if (ident_data->satacapabilities & ATA_SATA_GEN3) - printf(" SATA 3.x"); + snprintf(sata, sizeof(sata), " SATA 3.x"); else if (ident_data->satacapabilities & ATA_SATA_GEN2) - printf(" SATA 2.x"); + snprintf(sata, sizeof(sata), " SATA 2.x"); else if (ident_data->satacapabilities & ATA_SATA_GEN1) - printf(" SATA 1.x"); + snprintf(sata, sizeof(sata), " SATA 1.x"); else - printf(" SATA"); - } - printf(" device\n"); + snprintf(sata, sizeof(sata), " SATA"); + } else + sata[0] = 0; + printf("<%s %s> %s%s device\n", product, revision, ata, sata); } void |