Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/ioat/ioat.c
Show All 12 Lines | |||||
SYSCTL_ADD_UQUAD(ctx, state, OID_AUTO, "last_completion", CTLFLAG_RD, | SYSCTL_ADD_UQUAD(ctx, state, OID_AUTO, "last_completion", CTLFLAG_RD, | ||||
ioat->comp_update, "HW addr of last completion"); | ioat->comp_update, "HW addr of last completion"); | ||||
SYSCTL_ADD_INT(ctx, state, OID_AUTO, "is_submitter_processing", | SYSCTL_ADD_INT(ctx, state, OID_AUTO, "is_submitter_processing", | ||||
CTLFLAG_RD, &ioat->is_submitter_processing, 0, | CTLFLAG_RD, &ioat->is_submitter_processing, 0, | ||||
"submitter processing"); | "submitter processing"); | ||||
SYSCTL_ADD_PROC(ctx, state, OID_AUTO, "chansts", | SYSCTL_ADD_PROC(ctx, state, OID_AUTO, "chansts", | ||||
CTLTYPE_STRING | CTLFLAG_RD, ioat, 0, sysctl_handle_chansts, "A", | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, ioat, 0, | ||||
sysctl_handle_chansts, "A", | |||||
"String of the channel status"); | "String of the channel status"); | ||||
SYSCTL_ADD_U16(ctx, state, OID_AUTO, "intrdelay", CTLFLAG_RD, | SYSCTL_ADD_U16(ctx, state, OID_AUTO, "intrdelay", CTLFLAG_RD, | ||||
&ioat->cached_intrdelay, 0, | &ioat->cached_intrdelay, 0, | ||||
"Current INTRDELAY on this channel (cached, microseconds)"); | "Current INTRDELAY on this channel (cached, microseconds)"); | ||||
tmp = SYSCTL_ADD_NODE(ctx, par, OID_AUTO, "hammer", CTLFLAG_RD, NULL, | tmp = SYSCTL_ADD_NODE(ctx, par, OID_AUTO, "hammer", CTLFLAG_RD, NULL, | ||||
"Big hammers (mostly for testing)"); | "Big hammers (mostly for testing)"); | ||||
hammer = SYSCTL_CHILDREN(tmp); | hammer = SYSCTL_CHILDREN(tmp); | ||||
SYSCTL_ADD_PROC(ctx, hammer, OID_AUTO, "force_hw_reset", | SYSCTL_ADD_PROC(ctx, hammer, OID_AUTO, "force_hw_reset", | ||||
CTLTYPE_INT | CTLFLAG_RW, ioat, 0, sysctl_handle_reset, "I", | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, ioat, 0, | ||||
sysctl_handle_reset, "I", | |||||
"Set to non-zero to reset the hardware"); | "Set to non-zero to reset the hardware"); | ||||
tmp = SYSCTL_ADD_NODE(ctx, par, OID_AUTO, "stats", CTLFLAG_RD, NULL, | tmp = SYSCTL_ADD_NODE(ctx, par, OID_AUTO, "stats", CTLFLAG_RD, NULL, | ||||
"IOAT channel statistics"); | "IOAT channel statistics"); | ||||
statpar = SYSCTL_CHILDREN(tmp); | statpar = SYSCTL_CHILDREN(tmp); | ||||
SYSCTL_ADD_UQUAD(ctx, statpar, OID_AUTO, "interrupts", | SYSCTL_ADD_UQUAD(ctx, statpar, OID_AUTO, "interrupts", | ||||
CTLFLAG_RW | CTLFLAG_STATS, &ioat->stats.interrupts, | CTLFLAG_RW | CTLFLAG_STATS, &ioat->stats.interrupts, | ||||
Show All 10 Lines | |||||
SYSCTL_ADD_U32(ctx, statpar, OID_AUTO, "halts", | SYSCTL_ADD_U32(ctx, statpar, OID_AUTO, "halts", | ||||
CTLFLAG_RW | CTLFLAG_STATS, &ioat->stats.channel_halts, 0, | CTLFLAG_RW | CTLFLAG_STATS, &ioat->stats.channel_halts, 0, | ||||
"Number of times the channel has halted"); | "Number of times the channel has halted"); | ||||
SYSCTL_ADD_U32(ctx, statpar, OID_AUTO, "last_halt_chanerr", | SYSCTL_ADD_U32(ctx, statpar, OID_AUTO, "last_halt_chanerr", | ||||
CTLFLAG_RW | CTLFLAG_STATS, &ioat->stats.last_halt_chanerr, 0, | CTLFLAG_RW | CTLFLAG_STATS, &ioat->stats.last_halt_chanerr, 0, | ||||
"The raw CHANERR when the channel was last halted"); | "The raw CHANERR when the channel was last halted"); | ||||
SYSCTL_ADD_PROC(ctx, statpar, OID_AUTO, "desc_per_interrupt", | SYSCTL_ADD_PROC(ctx, statpar, OID_AUTO, "desc_per_interrupt", | ||||
CTLTYPE_STRING | CTLFLAG_RD, ioat, 0, sysctl_handle_dpi, "A", | CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, ioat, 0, | ||||
sysctl_handle_dpi, "A", | |||||
"Descriptors per interrupt"); | "Descriptors per interrupt"); | ||||
} | } | ||||
static void | static void | ||||
ioat_get(struct ioat_softc *ioat) | ioat_get(struct ioat_softc *ioat) | ||||
{ | { | ||||
mtx_assert(&ioat->submit_lock, MA_OWNED); | mtx_assert(&ioat->submit_lock, MA_OWNED); | ||||
Show All 12 Lines |