diff options
author | marx <none@none> | 2007-01-10 10:22:46 -0800 |
---|---|---|
committer | marx <none@none> | 2007-01-10 10:22:46 -0800 |
commit | 1a5cb58c8959fe9b6da65fed2ff0f5d0381da56e (patch) | |
tree | 6634805be29de2f160e93efeb975850fc024876f /usr/src/uts/intel/io/dktp/dcdev/dadk.c | |
parent | 20a1ce2762213959cde83af2b727d1e6246cafb0 (diff) | |
download | illumos-gate-1a5cb58c8959fe9b6da65fed2ff0f5d0381da56e.tar.gz |
6498366 dadk should use d_severity instead of d_action for GDA_RECOVERABLE and GDA_FATAL in updating kstats.
Diffstat (limited to 'usr/src/uts/intel/io/dktp/dcdev/dadk.c')
-rw-r--r-- | usr/src/uts/intel/io/dktp/dcdev/dadk.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/usr/src/uts/intel/io/dktp/dcdev/dadk.c b/usr/src/uts/intel/io/dktp/dcdev/dadk.c index 112392475d..4206beb0ca 100644 --- a/usr/src/uts/intel/io/dktp/dcdev/dadk.c +++ b/usr/src/uts/intel/io/dktp/dcdev/dadk.c @@ -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 @@ dadk_create_errstats(struct dadk *dadkp, int instance) /* 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 @@ dadk_chkerr(struct cmpkt *pktp) 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 @@ dadk_chkerr(struct cmpkt *pktp) 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 @@ dadk_chkerr(struct cmpkt *pktp) 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 @@ dadk_chkerr(struct cmpkt *pktp) (void) timeout(dadk_restart, (void *)pktp, DADK_BSY_TIMEOUT); } - return (action); + return (dadk_errtab[scb].d_action); } static void |