Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Nov 2009 19:52:51 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r199425 - stable/8/sbin/camcontrol
Message-ID:  <200911171952.nAHJqpMi034386@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Tue Nov 17 19:52:51 2009
New Revision: 199425
URL: http://svn.freebsd.org/changeset/base/199425

Log:
  MFC r197545:
  Fethch more information from IDENTIFY result.

Modified:
  stable/8/sbin/camcontrol/camcontrol.c
Directory Properties:
  stable/8/sbin/camcontrol/   (props changed)

Modified: stable/8/sbin/camcontrol/camcontrol.c
==============================================================================
--- stable/8/sbin/camcontrol/camcontrol.c	Tue Nov 17 19:51:39 2009	(r199424)
+++ stable/8/sbin/camcontrol/camcontrol.c	Tue Nov 17 19:52:51 2009	(r199425)
@@ -1019,18 +1019,28 @@ atacapprint(struct ata_params *parm)
 	printf("protocol              ");
 	printf("ATA/ATAPI-%d", ata_version(parm->version_major));
 	if (parm->satacapabilities && parm->satacapabilities != 0xffff) {
-		if (parm->satacapabilities & ATA_SATA_GEN2)
+		if (parm->satacapabilities & ATA_SATA_GEN3)
+			printf(" SATA 3.x\n");
+		else if (parm->satacapabilities & ATA_SATA_GEN2)
 			printf(" SATA 2.x\n");
 		else if (parm->satacapabilities & ATA_SATA_GEN1)
 			printf(" SATA 1.x\n");
 		else
-			printf(" SATA x.x\n");
+			printf(" SATA\n");
 	}
 	else
 		printf("\n");
 	printf("device model          %.40s\n", parm->model);
-	printf("serial number         %.20s\n", parm->serial);
 	printf("firmware revision     %.8s\n", parm->revision);
+	printf("serial number         %.20s\n", parm->serial);
+	if (parm->enabled.extension & ATA_SUPPORT_64BITWWN) {
+		printf("WWN                   %02x%02x%02x%02x\n",
+		    parm->wwn[0], parm->wwn[1], parm->wwn[2], parm->wwn[3]);
+	}
+	if (parm->enabled.extension & ATA_SUPPORT_MEDIASN) {
+		printf("media serial number   %.30s\n",
+		    parm->media_serial);
+	}
 
 	printf("cylinders             %d\n", parm->cylinders);
 	printf("heads                 %d\n", parm->heads);
@@ -1071,6 +1081,8 @@ atacapprint(struct ata_params *parm)
 	default:
 		printf("0");
 	}
+	if ((parm->capabilities1 & ATA_SUPPORT_IORDY) == 0)
+		printf(" w/o IORDY");
 	printf("\n");
 
 	printf("DMA%ssupported         ",
@@ -1110,18 +1122,25 @@ atacapprint(struct ata_params *parm)
 
 	printf("overlap%ssupported\n",
 		parm->capabilities1 & ATA_SUPPORT_OVERLAP ? " " : " not ");
+	if (parm->media_rotation_rate == 1) {
+		printf("media RPM             non-rotating\n");
+	} else if (parm->media_rotation_rate >= 0x0401 &&
+	    parm->media_rotation_rate <= 0xFFFE) {
+		printf("media RPM             %d\n",
+			parm->media_rotation_rate);
+	}
 
 	printf("\nFeature                      "
 		"Support  Enable    Value           Vendor\n");
-
-	printf("write cache                    %s	%s\n",
-		parm->support.command1 & ATA_SUPPORT_WRITECACHE ? "yes" : "no",
-		parm->enabled.command1 & ATA_SUPPORT_WRITECACHE ? "yes" : "no");
-
 	printf("read ahead                     %s	%s\n",
 		parm->support.command1 & ATA_SUPPORT_LOOKAHEAD ? "yes" : "no",
 		parm->enabled.command1 & ATA_SUPPORT_LOOKAHEAD ? "yes" : "no");
-
+	printf("write cache                    %s	%s\n",
+		parm->support.command1 & ATA_SUPPORT_WRITECACHE ? "yes" : "no",
+		parm->enabled.command1 & ATA_SUPPORT_WRITECACHE ? "yes" : "no");
+	printf("flush cache                    %s	%s\n",
+		parm->support.command2 & ATA_SUPPORT_FLUSHCACHE ? "yes" : "no",
+		parm->enabled.command2 & ATA_SUPPORT_FLUSHCACHE ? "yes" : "no");
 	if (parm->satacapabilities && parm->satacapabilities != 0xffff) {
 		printf("Native Command Queuing (NCQ)   %s	"
 			"	%d/0x%02X\n",
@@ -1136,28 +1155,22 @@ atacapprint(struct ata_params *parm)
 		parm->support.command2 & ATA_SUPPORT_QUEUED ? "yes" : "no",
 		parm->enabled.command2 & ATA_SUPPORT_QUEUED ? "yes" : "no",
 		ATA_QUEUE_LEN(parm->queue), ATA_QUEUE_LEN(parm->queue));
-
 	printf("SMART                          %s	%s\n",
 		parm->support.command1 & ATA_SUPPORT_SMART ? "yes" : "no",
 		parm->enabled.command1 & ATA_SUPPORT_SMART ? "yes" : "no");
-
 	printf("microcode download             %s	%s\n",
 		parm->support.command2 & ATA_SUPPORT_MICROCODE ? "yes" : "no",
 		parm->enabled.command2 & ATA_SUPPORT_MICROCODE ? "yes" : "no");
-
 	printf("security                       %s	%s\n",
 		parm->support.command1 & ATA_SUPPORT_SECURITY ? "yes" : "no",
 		parm->enabled.command1 & ATA_SUPPORT_SECURITY ? "yes" : "no");
-
 	printf("power management               %s	%s\n",
 		parm->support.command1 & ATA_SUPPORT_POWERMGT ? "yes" : "no",
 		parm->enabled.command1 & ATA_SUPPORT_POWERMGT ? "yes" : "no");
-
 	printf("advanced power management      %s	%s	%d/0x%02X\n",
 		parm->support.command2 & ATA_SUPPORT_APM ? "yes" : "no",
 		parm->enabled.command2 & ATA_SUPPORT_APM ? "yes" : "no",
 		parm->apm_value, parm->apm_value);
-
 	printf("automatic acoustic management  %s	%s	"
 		"%d/0x%02X	%d/0x%02X\n",
 		parm->support.command2 & ATA_SUPPORT_AUTOACOUSTIC ? "yes" :"no",
@@ -1166,6 +1179,22 @@ atacapprint(struct ata_params *parm)
 		ATA_ACOUSTIC_CURRENT(parm->acoustic),
 		ATA_ACOUSTIC_VENDOR(parm->acoustic),
 		ATA_ACOUSTIC_VENDOR(parm->acoustic));
+	printf("media status notification      %s	%s\n",
+		parm->support.command2 & ATA_SUPPORT_NOTIFY ? "yes" : "no",
+		parm->enabled.command2 & ATA_SUPPORT_NOTIFY ? "yes" : "no");
+	printf("power-up in Standby            %s	%s\n",
+		parm->support.command2 & ATA_SUPPORT_STANDBY ? "yes" : "no",
+		parm->enabled.command2 & ATA_SUPPORT_STANDBY ? "yes" : "no");
+	printf("write-read-verify              %s	%s	%d/0x%x\n",
+		parm->support2 & ATA_SUPPORT_WRITEREADVERIFY ? "yes" : "no",
+		parm->enabled2 & ATA_SUPPORT_WRITEREADVERIFY ? "yes" : "no",
+		parm->wrv_mode, parm->wrv_mode);
+	printf("unload                         %s	%s\n",
+		parm->support.extension & ATA_SUPPORT_UNLOAD ? "yes" : "no",
+		parm->enabled.extension & ATA_SUPPORT_UNLOAD ? "yes" : "no");
+	printf("free-fall                      %s	%s\n",
+		parm->support2 & ATA_SUPPORT_FREEFALL ? "yes" : "no",
+		parm->enabled2 & ATA_SUPPORT_FREEFALL ? "yes" : "no");
 }
 
 
@@ -1261,6 +1290,7 @@ ataidentify(struct cam_device *device, i
 		ata_bswap(ident_buf->model, sizeof(ident_buf->model));
 		ata_bswap(ident_buf->revision, sizeof(ident_buf->revision));
 		ata_bswap(ident_buf->serial, sizeof(ident_buf->serial));
+		ata_bswap(ident_buf->media_serial, sizeof(ident_buf->media_serial));
 	}
 	ata_btrim(ident_buf->model, sizeof(ident_buf->model));
 	ata_bpack(ident_buf->model, ident_buf->model, sizeof(ident_buf->model));
@@ -1268,6 +1298,9 @@ ataidentify(struct cam_device *device, i
 	ata_bpack(ident_buf->revision, ident_buf->revision, sizeof(ident_buf->revision));
 	ata_btrim(ident_buf->serial, sizeof(ident_buf->serial));
 	ata_bpack(ident_buf->serial, ident_buf->serial, sizeof(ident_buf->serial));
+	ata_btrim(ident_buf->media_serial, sizeof(ident_buf->media_serial));
+	ata_bpack(ident_buf->media_serial, ident_buf->media_serial,
+	    sizeof(ident_buf->media_serial));
 
 	fprintf(stdout, "%s%d: ", device->device_name,
 		device->dev_unit_num);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911171952.nAHJqpMi034386>