summaryrefslogtreecommitdiffstats
path: root/sys/cam/ata
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2015-03-31 07:26:39 +0000
committermav <mav@FreeBSD.org>2015-03-31 07:26:39 +0000
commit49119503d25e04232a3fdd9ee28e5ae74674ec06 (patch)
tree3d5be8a57723ce4eab1da95ecbd3948912e0fd6e /sys/cam/ata
parent7e7a1cb5ec8594c38877a49aa83fa0ccf72cf4b0 (diff)
downloadFreeBSD-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.c34
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
OpenPOWER on IntegriCloud