changeset 3399:24dcc5339d8a

6498366 dadk should use d_severity instead of d_action for GDA_RECOVERABLE and GDA_FATAL in updating kstats.
author marx
date Wed, 10 Jan 2007 10:22:46 -0800
parents 6253059e76ed
children 2427f35263a7
files usr/src/uts/intel/io/dktp/dcdev/dadk.c
diffstat 1 files changed, 16 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/intel/io/dktp/dcdev/dadk.c	Wed Jan 10 09:54:56 2007 -0800
+++ b/usr/src/uts/intel/io/dktp/dcdev/dadk.c	Wed Jan 10 10:22:46 2007 -0800
@@ -20,7 +20,7 @@
  */
 
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -591,14 +591,14 @@
 	/* get model */
 	dep->dadk_model.value.c[0] = 0;
 	dadk_ioc_string.is_buf = &dep->dadk_model.value.c[0];
-	dadk_ioc_string.is_size = 16;
+	dadk_ioc_string.is_size = sizeof (dep->dadk_model.value.c);
 	CTL_IOCTL(dadkp->dad_ctlobjp, DIOCTL_GETMODEL,
 	    (uintptr_t)&dadk_ioc_string, FKIOCTL | FNATIVE);
 
 	/* get serial */
 	dep->dadk_serial.value.c[0] = 0;
 	dadk_ioc_string.is_buf = &dep->dadk_serial.value.c[0];
-	dadk_ioc_string.is_size = 16;
+	dadk_ioc_string.is_size = sizeof (dep->dadk_serial.value.c);
 	CTL_IOCTL(dadkp->dad_ctlobjp, DIOCTL_GETSERIAL,
 	    (uintptr_t)&dadk_ioc_string, FKIOCTL | FNATIVE);
 
@@ -1353,7 +1353,6 @@
 	struct dadk *dadkp = PKT2DADK(pktp);
 	dadk_errstats_t *dep;
 	int scb = *(char *)pktp->cp_scbp;
-	int action;
 
 	if (scb == DERR_SUCCESS) {
 		if (pktp->cp_retry != 0 && dadkp->dad_errstats != NULL) {
@@ -1364,9 +1363,6 @@
 		return (COMMAND_DONE);
 	}
 
-	/* check error code table */
-	action = dadk_errtab[scb].d_action;
-
 	if (pktp->cp_retry) {
 		err_blkno = pktp->cp_srtsec + ((pktp->cp_bytexfer -
 			pktp->cp_resid) >> dadkp->dad_secshf);
@@ -1376,10 +1372,18 @@
 	if (dadkp->dad_errstats != NULL) {
 		dep = (dadk_errstats_t *)dadkp->dad_errstats->ks_data;
 
-		if (action == GDA_RETRYABLE)
-			dep->dadk_softerrs.value.ui32++;
-		else if (action == GDA_FATAL)
-			dep->dadk_harderrs.value.ui32++;
+		switch (dadk_errtab[scb].d_severity) {
+			case GDA_RETRYABLE:
+				dep->dadk_softerrs.value.ui32++;
+				break;
+
+			case GDA_FATAL:
+				dep->dadk_harderrs.value.ui32++;
+				break;
+
+			default:
+				break;
+		}
 
 		switch (scb) {
 			case DERR_INVCDB:
@@ -1437,7 +1441,7 @@
 		(void) timeout(dadk_restart, (void *)pktp, DADK_BSY_TIMEOUT);
 	}
 
-	return (action);
+	return (dadk_errtab[scb].d_action);
 }
 
 static void