Module Name: src
Committed By: riastradh
Date: Thu May 28 23:25:17 UTC 2020
Modified Files:
src/sys/dev/pci: if_vioif.c
Log Message:
Allocate proper storage for the event counter group names.
Can't use a stack buffer for these because the evcnt remembers the
pointer!
To generate a diff of this commit:
cvs rdiff -u -r1.64 -r1.65 src/sys/dev/pci/if_vioif.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_vioif.c
diff -u src/sys/dev/pci/if_vioif.c:1.64 src/sys/dev/pci/if_vioif.c:1.65
--- src/sys/dev/pci/if_vioif.c:1.64 Mon May 25 09:45:40 2020
+++ src/sys/dev/pci/if_vioif.c Thu May 28 23:25:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: if_vioif.c,v 1.64 2020/05/25 09:45:40 yamaguchi Exp $ */
+/* $NetBSD: if_vioif.c,v 1.65 2020/05/28 23:25:17 riastradh Exp $ */
/*
* Copyright (c) 2010 Minoura Makoto.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_vioif.c,v 1.64 2020/05/25 09:45:40 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_vioif.c,v 1.65 2020/05/28 23:25:17 riastradh Exp $");
#ifdef _KERNEL_OPT
#include "opt_net_mpsafe.h"
@@ -238,6 +238,7 @@ struct vioif_txqueue {
bool txq_workqueue;
bool txq_active;
+ char txq_evgroup[16];
struct evcnt txq_defrag_failed;
struct evcnt txq_mbuf_load_failed;
struct evcnt txq_enqueue_reserve_failed;
@@ -260,6 +261,7 @@ struct vioif_rxqueue {
bool rxq_workqueue;
bool rxq_active;
+ char rxq_evgroup[16];
struct evcnt rxq_mbuf_add_failed;
};
@@ -2477,34 +2479,31 @@ vioif_setup_stats(struct vioif_softc *sc
{
struct vioif_rxqueue *rxq;
struct vioif_txqueue *txq;
-
- char namebuf[16];
int i;
for (i = 0; i < sc->sc_max_nvq_pairs; i++) {
rxq = &sc->sc_rxq[i];
txq = &sc->sc_txq[i];
- snprintf(namebuf, sizeof(namebuf), "%s-TX%d",
+ snprintf(txq->txq_evgroup, sizeof(txq->txq_evgroup), "%s-TX%d",
device_xname(sc->sc_dev), i);
evcnt_attach_dynamic(&txq->txq_defrag_failed, EVCNT_TYPE_MISC,
- NULL, namebuf, "tx m_defrag() failed");
+ NULL, txq->txq_evgroup, "tx m_defrag() failed");
evcnt_attach_dynamic(&txq->txq_mbuf_load_failed, EVCNT_TYPE_MISC,
- NULL, namebuf, "tx dmamap load failed");
+ NULL, txq->txq_evgroup, "tx dmamap load failed");
evcnt_attach_dynamic(&txq->txq_enqueue_reserve_failed, EVCNT_TYPE_MISC,
- NULL, namebuf, "virtio_enqueue_reserve failed");
+ NULL, txq->txq_evgroup, "virtio_enqueue_reserve failed");
- snprintf(namebuf, sizeof(namebuf), "%s-RX%d",
+ snprintf(rxq->rxq_evgroup, sizeof(rxq->rxq_evgroup), "%s-RX%d",
device_xname(sc->sc_dev), i);
evcnt_attach_dynamic(&rxq->rxq_mbuf_add_failed, EVCNT_TYPE_MISC,
- NULL, namebuf, "rx mbuf allocation failed");
+ NULL, rxq->rxq_evgroup, "rx mbuf allocation failed");
}
- snprintf(namebuf, sizeof(namebuf), "%s-CTRL", device_xname(sc->sc_dev));
evcnt_attach_dynamic(&sc->sc_ctrlq.ctrlq_cmd_load_failed, EVCNT_TYPE_MISC,
- NULL, namebuf, "control command dmamap load failed");
+ NULL, device_xname(sc->sc_dev), "control command dmamap load failed");
evcnt_attach_dynamic(&sc->sc_ctrlq.ctrlq_cmd_failed, EVCNT_TYPE_MISC,
- NULL, namebuf, "control command failed");
+ NULL, device_xname(sc->sc_dev), "control command failed");
}
MODULE(MODULE_CLASS_DRIVER, if_vioif, "virtio");