[rtems-libbsd commit] if_atsam: Allow stats reset via sysctl
Sebastian Huber
sebh at rtems.org
Wed Jun 1 07:53:40 UTC 2022
Module: rtems-libbsd
Branch: master
Commit: 5650e92685929911d7feefd3ec4bcf9d36fc249d
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=5650e92685929911d7feefd3ec4bcf9d36fc249d
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Wed May 25 09:26:53 2022 +0200
if_atsam: Allow stats reset via sysctl
Update #4652.
---
rtemsbsd/sys/dev/atsam/if_atsam.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/rtemsbsd/sys/dev/atsam/if_atsam.c b/rtemsbsd/sys/dev/atsam/if_atsam.c
index f7ab01d4..970cb67b 100644
--- a/rtemsbsd/sys/dev/atsam/if_atsam.c
+++ b/rtemsbsd/sys/dev/atsam/if_atsam.c
@@ -1128,6 +1128,28 @@ if_atsam_poll_hw_stats(struct if_atsam_softc *sc)
sc->stats.udp_checksum_errors += pHw->GMAC_UCE;
}
+static int
+if_atsam_stats_reset(SYSCTL_HANDLER_ARGS)
+{
+ struct if_atsam_softc *sc = arg1;
+ int value;
+ int error;
+
+ value = 0;
+ error = sysctl_handle_int(oidp, &value, 0, req);
+ if (error != 0 || req->newptr == NULL) {
+ return (error);
+ }
+
+ if (value != 0) {
+ IF_ATSAM_LOCK(sc);
+ if_atsam_poll_hw_stats(sc);
+ memset(&sc->stats, 0, sizeof(sc->stats));
+ IF_ATSAM_UNLOCK(sc);
+ }
+
+ return (0);
+}
static void
if_atsam_add_sysctls(device_t dev)
@@ -1146,6 +1168,9 @@ if_atsam_add_sysctls(device_t dev)
NULL, "if_atsam statistics");
statsnode = SYSCTL_CHILDREN(tree);
+ SYSCTL_ADD_PROC(ctx, statsnode, OID_AUTO, "reset", CTLTYPE_INT |
+ CTLFLAG_WR, sc, 0, if_atsam_stats_reset, "I", "Reset");
+
tree = SYSCTL_ADD_NODE(ctx, statsnode, OID_AUTO, "sw", CTLFLAG_RD,
NULL, "if_atsam software statistics");
child = SYSCTL_CHILDREN(tree);
More information about the vc
mailing list