diff options
author | Kenneth R Westerback <krw@cvs.openbsd.org> | 2001-06-24 18:28:11 +0000 |
---|---|---|
committer | Kenneth R Westerback <krw@cvs.openbsd.org> | 2001-06-24 18:28:11 +0000 |
commit | 86ba22b4e911beb70534d17e7c118bc501609f90 (patch) | |
tree | 03d1a78aceb176d8ac2083f1716e6baa5dd53242 /sys | |
parent | 6553373982f0705ee875fd16d23cc4dcce27dc2f (diff) |
Pass the device's scsi_link to siop_print_info(), instead of the
adapter's siop_softc. This allows easy access to the dv_xname of the
device whose negotiation results are being reported. This makes boot
probe and subsequent log messages clearer.
e.g. message will now read
sd0: negotiated tagged 16 bit 20 MHz 16 REQ/ACK offset xfers
instead of
siop0: target 0 now using tagged 16 bit 20 MHz 16 REQ/ACK offset xfers
Clean up siop_print_info() a bit as long as we are there.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/ic/siop.c | 8 | ||||
-rw-r--r-- | sys/dev/ic/siop_common.c | 45 | ||||
-rw-r--r-- | sys/dev/ic/siopvar_common.h | 4 |
3 files changed, 31 insertions, 26 deletions
diff --git a/sys/dev/ic/siop.c b/sys/dev/ic/siop.c index d3cfe1607cd..b46a9a89169 100644 --- a/sys/dev/ic/siop.c +++ b/sys/dev/ic/siop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: siop.c,v 1.7 2001/04/23 13:48:42 krw Exp $ */ +/* $OpenBSD: siop.c,v 1.8 2001/06/24 18:28:10 krw Exp $ */ /* $NetBSD: siop.c,v 1.39 2001/02/11 18:04:49 bouyer Exp $ */ /* @@ -740,7 +740,7 @@ scintr: if ((siop_target->flags & TARF_SYNC) == 0) { siop_target->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(xs->sc_link); /* no table to flush here */ CALL_SCRIPT(Ent_msgin_ack); return 1; @@ -756,7 +756,7 @@ scintr: } else if (msg == MSG_EXTENDED && extmsg == MSG_EXT_SDTR) { siop_target->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(xs->sc_link); /* no table to flush here */ CALL_SCRIPT(Ent_msgin_ack); return 1; @@ -1390,7 +1390,7 @@ siop_scsicmd(xs) } else { sc->targets[target]->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(xs->sc_link); } } break; diff --git a/sys/dev/ic/siop_common.c b/sys/dev/ic/siop_common.c index 186f967e47b..50dc9f2e4d2 100644 --- a/sys/dev/ic/siop_common.c +++ b/sys/dev/ic/siop_common.c @@ -1,4 +1,4 @@ -/* $OpenBSD: siop_common.c,v 1.6 2001/04/15 06:01:29 krw Exp $ */ +/* $OpenBSD: siop_common.c,v 1.7 2001/06/24 18:28:10 krw Exp $ */ /* $NetBSD: siop_common.c,v 1.12 2001/02/11 18:04:50 bouyer Exp $ */ /* @@ -155,7 +155,7 @@ siop_setuptables(siop_cmd) siop_sdtr_msg(siop_cmd, 1, sc->min_st_sync, sc->maxoff); } else { sc->targets[target]->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(xs->sc_link); } } else if (sc->targets[target]->status == TARST_OK && (targ_flags & TARF_TAG) && @@ -251,7 +251,7 @@ siop_ppr_neg(siop_cmd) (siop_target->id & 0xff)); siop_target->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(siop_cmd->xs->sc_link); return (SIOP_NEG_ACK); } @@ -301,7 +301,7 @@ siop_wdtr_neg(siop_cmd) printf("%s: rejecting invalid wide negotiation from " "target %d (%d)\n", sc->sc_dev.dv_xname, target, tables->msg_in[3]); - siop_print_info(sc, target); + siop_print_info(siop_cmd->xs->sc_link); tables->t_msgout.count= htole32(1); tables->msg_out[0] = MSG_MESSAGE_REJECT; return SIOP_NEG_MSGOUT; @@ -317,7 +317,7 @@ siop_wdtr_neg(siop_cmd) return SIOP_NEG_MSGOUT; } else { siop_target->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(siop_cmd->xs->sc_link); return SIOP_NEG_ACK; } } else { @@ -338,7 +338,7 @@ siop_wdtr_neg(siop_cmd) */ if (siop_target->status != TARST_PROBING) { siop_target->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(siop_cmd->xs->sc_link); } siop_wdtr_msg(siop_cmd, 0, (siop_target->flags & TARF_ISWIDE) ? MSG_EXT_WDTR_BUS_16_BIT : MSG_EXT_WDTR_BUS_8_BIT); @@ -428,7 +428,7 @@ end: if (siop_target->status != TARST_PROBING) { siop_target->status = TARST_OK; - siop_print_info(sc, target); + siop_print_info(siop_cmd->xs->sc_link); } if (send_msgout) { @@ -682,32 +682,37 @@ siop_resetbus(sc) * target->status is set to TARST_OK. */ void -siop_print_info(sc, target) - struct siop_softc *sc; - int target; +siop_print_info(sc_link) + struct scsi_link *sc_link; { - struct siop_target *siop_target = sc->targets[target]; + struct siop_target *siop_target; + struct siop_softc *sc; u_int8_t scf, offset; - int scf_index, i; - - const int factors = sizeof(period_factor) / sizeof(period_factor[0]); - - offset = ((siop_target->id >> 8) & 0xff) >> SXFER_MO_SHIFT; + int scf_index, factors, target, i; - scf = ((siop_target->id >> 24) & SCNTL3_SCF_MASK) >> SCNTL3_SCF_SHIFT; - scf_index = sc->scf_index; + sc = (struct siop_softc *)sc_link->adapter_softc; + target = sc_link->target; - printf("%s: target %d now using %s%s%s%s%d bit ", - sc->sc_dev.dv_xname, target, + siop_target = sc->targets[target]; + + printf("%s: negotiated %s%s%s%s%d bit ", + ((struct device *)sc_link->device_softc)->dv_xname, (siop_target->flags & TARF_TAG) ? "tagged " : "", (siop_target->flags & TARF_ISDT) ? "DT " : "", (siop_target->flags & TARF_ISQAS) ? "QAS " : "", (siop_target->flags & TARF_ISIUS) ? "IUS " : "", (siop_target->flags & TARF_ISWIDE) ? 16 : 8); + offset = ((siop_target->id >> 8) & 0xff) >> SXFER_MO_SHIFT; + if (offset == 0) printf("async "); else { + factors = sizeof(period_factor) / sizeof(period_factor[0]); + + scf = ((siop_target->id >> 24) & SCNTL3_SCF_MASK) >> SCNTL3_SCF_SHIFT; + scf_index = sc->scf_index; + for (i = 0; i < factors; i++) if (siop_target->flags & TARF_ISDT) { if (period_factor[i].scf[scf_index].dt_scf == scf) diff --git a/sys/dev/ic/siopvar_common.h b/sys/dev/ic/siopvar_common.h index f02c2d4127c..79e2a9f6afb 100644 --- a/sys/dev/ic/siopvar_common.h +++ b/sys/dev/ic/siopvar_common.h @@ -1,4 +1,4 @@ -/* $OpenBSD: siopvar_common.h,v 1.4 2001/04/15 06:01:29 krw Exp $ */ +/* $OpenBSD: siopvar_common.h,v 1.5 2001/06/24 18:28:10 krw Exp $ */ /* $NetBSD: siopvar_common.h,v 1.10 2001/01/26 21:58:56 bouyer Exp $ */ /* @@ -209,7 +209,7 @@ void siop_ppr_msg __P((struct siop_cmd *, int, int, int)); #define SIOP_NEG_ACK 0x2 #define SIOP_NEG_MSGREJ 0x3 -void siop_print_info __P((struct siop_softc *, int)); +void siop_print_info __P((struct scsi_link *)); void siop_minphys __P((struct buf *)); void siop_sdp __P((struct siop_cmd *)); void siop_clearfifo __P((struct siop_softc *)); |