Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci Allocate proper storage for the event counter gr...



details:   https://anonhg.NetBSD.org/src/rev/2e6605bd6618
branches:  trunk
changeset: 1010557:2e6605bd6618
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Thu May 28 23:25:17 2020 +0000

description:
Allocate proper storage for the event counter group names.

Can't use a stack buffer for these because the evcnt remembers the
pointer!

diffstat:

 sys/dev/pci/if_vioif.c |  27 +++++++++++++--------------
 1 files changed, 13 insertions(+), 14 deletions(-)

diffs (78 lines):

diff -r d966684f02c7 -r 2e6605bd6618 sys/dev/pci/if_vioif.c
--- a/sys/dev/pci/if_vioif.c    Thu May 28 23:17:25 2020 +0000
+++ b/sys/dev/pci/if_vioif.c    Thu May 28 23:25:17 2020 +0000
@@ -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 @@
        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 @@
        bool                     rxq_workqueue;
        bool                     rxq_active;
 
+       char                     rxq_evgroup[16];
        struct evcnt             rxq_mbuf_add_failed;
 };
 
@@ -2477,34 +2479,31 @@
 {
        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");
-
-               snprintf(namebuf, sizeof(namebuf), "%s-RX%d",
+                   NULL, txq->txq_evgroup, "virtio_enqueue_reserve failed");
+
+               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");



Home | Main Index | Thread Index | Old Index