[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