Module Name: src Committed By: msaitoh Date: Thu Nov 19 02:36:30 UTC 2020
Modified Files: src/sys/dev/pci: if_wm.c Log Message: Add some sysctl values for debugging TX/RX queues. To generate a diff of this commit: cvs rdiff -u -r1.696 -r1.697 src/sys/dev/pci/if_wm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/if_wm.c diff -u src/sys/dev/pci/if_wm.c:1.696 src/sys/dev/pci/if_wm.c:1.697 --- src/sys/dev/pci/if_wm.c:1.696 Mon Nov 16 11:54:10 2020 +++ src/sys/dev/pci/if_wm.c Thu Nov 19 02:36:30 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_wm.c,v 1.696 2020/11/16 11:54:10 rin Exp $ */ +/* $NetBSD: if_wm.c,v 1.697 2020/11/19 02:36:30 msaitoh Exp $ */ /* * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc. @@ -82,7 +82,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.696 2020/11/16 11:54:10 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.697 2020/11/19 02:36:30 msaitoh Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -481,6 +481,7 @@ struct wm_queue { struct wm_txqueue wmq_txq; struct wm_rxqueue wmq_rxq; + char sysctlname[32]; /* Name for sysctl */ bool wmq_txrx_use_workqueue; struct work wmq_cookie; @@ -5886,8 +5887,8 @@ static void wm_init_sysctls(struct wm_softc *sc) { struct sysctllog **log; - const struct sysctlnode *rnode, *cnode; - int rv; + const struct sysctlnode *rnode, *qnode, *cnode; + int i, rv; const char *dvname; log = &sc->sc_sysctllog; @@ -5906,6 +5907,40 @@ wm_init_sysctls(struct wm_softc *sc) if (rv != 0) goto teardown; + for (i = 0; i < sc->sc_nqueues; i++) { + struct wm_queue *wmq = &sc->sc_queue[i]; + struct wm_txqueue *txq = &wmq->wmq_txq; + struct wm_rxqueue *rxq = &wmq->wmq_rxq; + + snprintf(sc->sc_queue[i].sysctlname, + sizeof(sc->sc_queue[i].sysctlname), "q%d", i); + + if (sysctl_createv(log, 0, &rnode, &qnode, + 0, CTLTYPE_NODE, + sc->sc_queue[i].sysctlname, SYSCTL_DESCR("Queue Name"), + NULL, 0, NULL, 0, CTL_CREATE, CTL_EOL) != 0) + break; + if (sysctl_createv(log, 0, &qnode, &cnode, + CTLFLAG_READONLY, CTLTYPE_INT, + "txq_free", SYSCTL_DESCR("TX queue free"), + NULL, 0, &txq->txq_free, + 0, CTL_CREATE, CTL_EOL) != 0) + break; + if (sysctl_createv(log, 0, &qnode, &cnode, + CTLFLAG_READONLY, CTLTYPE_INT, + "txq_next", SYSCTL_DESCR("TX queue next"), + NULL, 0, &txq->txq_next, + 0, CTL_CREATE, CTL_EOL) != 0) + break; + + if (sysctl_createv(log, 0, &qnode, &cnode, + CTLFLAG_READONLY, CTLTYPE_INT, + "rxq_ptr", SYSCTL_DESCR("RX queue pointer"), + NULL, 0, &rxq->rxq_ptr, + 0, CTL_CREATE, CTL_EOL) != 0) + break; + } + #ifdef WM_DEBUG rv = sysctl_createv(log, 0, &rnode, &cnode, CTLFLAG_READWRITE, CTLTYPE_INT, "debug_flags",