Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Feb 2023 23:16:51 GMT
From:      Justin Hibbits <jhibbits@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 19850ee07363 - main - Revert "linprocfs: Migrate to IfAPI"
Message-ID:  <202302212316.31LNGpsp011787@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhibbits:

URL: https://cgit.FreeBSD.org/src/commit/?id=19850ee07363ffd97b4ba3c06361392ce9834440

commit 19850ee07363ffd97b4ba3c06361392ce9834440
Author:     Justin Hibbits <jhibbits@FreeBSD.org>
AuthorDate: 2023-02-21 23:13:00 +0000
Commit:     Justin Hibbits <jhibbits@FreeBSD.org>
CommitDate: 2023-02-21 23:17:26 +0000

    Revert "linprocfs: Migrate to IfAPI"
    
    This reverts commit 5243598927a95e77b3bb9804b049539b87353a5b.
    
    Requested by:   dchagin
---
 sys/compat/linprocfs/linprocfs.c | 107 ++++++++++++++++-----------------------
 1 file changed, 43 insertions(+), 64 deletions(-)

diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c
index f2a8c5833c82..15c4d3c41749 100644
--- a/sys/compat/linprocfs/linprocfs.c
+++ b/sys/compat/linprocfs/linprocfs.c
@@ -1474,79 +1474,26 @@ linprocfs_doprocmem(PFS_FILL_ARGS)
 	return (error);
 }
 
-struct linux_ifname_cb_s {
-	struct ifnet *ifp;
-	int ethno;
-	char *buffer;
-	size_t buflen;
-};
-
-static int
-linux_ifname_cb(if_t ifp, void *arg)
-{
-	struct linux_ifname_cb_s *cbs = arg;
-
-	if (ifp == cbs->ifp)
-		return (snprintf(cbs->buffer, cbs->buflen, "eth%d", cbs->ethno));
-	if (!linux_use_real_ifname(ifp))
-		cbs->ethno++;
-	return (0);
-}
-
 static int
 linux_ifname(struct ifnet *ifp, char *buffer, size_t buflen)
 {
-	struct linux_ifname_cb_s arg;
+	struct ifnet *ifscan;
+	int ethno;
 
 	IFNET_RLOCK_ASSERT();
 
-	arg.ifp = ifp;
-	arg.buffer = buffer;
-	arg.buflen = buflen;
-	arg.ethno = 0;
-
 	/* Short-circuit non ethernet interfaces */
 	if (linux_use_real_ifname(ifp))
-		return (strlcpy(buffer, if_name(ifp), buflen));
+		return (strlcpy(buffer, ifp->if_xname, buflen));
 
 	/* Determine the (relative) unit number for ethernet interfaces */
-	return (if_foreach(linux_ifname_cb, &arg));
-}
-
-static int
-linprocfs_donetdev_cb(if_t ifp, void *arg)
-{
-	char ifname[16]; /* XXX LINUX_IFNAMSIZ */
-	struct sbuf *sb = arg;
-
-	linux_ifname(ifp, ifname, sizeof ifname);
-	sbuf_printf(sb, "%6.6s: ", ifname);
-	sbuf_printf(sb, "%7ju %7ju %4ju %4ju %4lu %5lu %10lu %9ju ",
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_IBYTES),
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_IPACKETS),
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_IERRORS),
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_IQDROPS),
-						/* rx_missed_errors */
-	    0UL,				/* rx_fifo_errors */
-	    0UL,				/* rx_length_errors +
-						 * rx_over_errors +
-						 * rx_crc_errors +
-						 * rx_frame_errors */
-	    0UL,				/* rx_compressed */
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_IMCASTS));
-						/* XXX-BZ rx only? */
-	sbuf_printf(sb, "%8ju %7ju %4ju %4ju %4lu %5ju %7lu %10lu\n",
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_OBYTES),
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_OPACKETS),
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_OERRORS),
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_OQDROPS),
-	    0UL,				/* tx_fifo_errors */
-	    (uintmax_t )if_getcounter(ifp, IFCOUNTER_COLLISIONS),
-	    0UL,				/* tx_carrier_errors +
-						 * tx_aborted_errors +
-						 * tx_window_errors +
-						 * tx_heartbeat_errors*/
-	    0UL);				/* tx_compressed */
+	ethno = 0;
+	CK_STAILQ_FOREACH(ifscan, &V_ifnet, if_link) {
+		if (ifscan == ifp)
+			return (snprintf(buffer, buflen, "eth%d", ethno));
+		if (!linux_use_real_ifname(ifscan))
+			ethno++;
+	}
 
 	return (0);
 }
@@ -1557,6 +1504,9 @@ linprocfs_donetdev_cb(if_t ifp, void *arg)
 static int
 linprocfs_donetdev(PFS_FILL_ARGS)
 {
+	char ifname[16]; /* XXX LINUX_IFNAMSIZ */
+	struct ifnet *ifp;
+
 	sbuf_printf(sb, "%6s|%58s|%s\n"
 	    "%6s|%58s|%58s\n",
 	    "Inter-", "   Receive", "  Transmit",
@@ -1566,7 +1516,36 @@ linprocfs_donetdev(PFS_FILL_ARGS)
 
 	CURVNET_SET(TD_TO_VNET(curthread));
 	IFNET_RLOCK();
-	if_foreach(linprocfs_donetdev_cb, sb);
+	CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) {
+		linux_ifname(ifp, ifname, sizeof ifname);
+		sbuf_printf(sb, "%6.6s: ", ifname);
+		sbuf_printf(sb, "%7ju %7ju %4ju %4ju %4lu %5lu %10lu %9ju ",
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_IBYTES),
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_IPACKETS),
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_IERRORS),
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_IQDROPS),
+							/* rx_missed_errors */
+		    0UL,				/* rx_fifo_errors */
+		    0UL,				/* rx_length_errors +
+							 * rx_over_errors +
+							 * rx_crc_errors +
+							 * rx_frame_errors */
+		    0UL,				/* rx_compressed */
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_IMCASTS));
+							/* XXX-BZ rx only? */
+		sbuf_printf(sb, "%8ju %7ju %4ju %4ju %4lu %5ju %7lu %10lu\n",
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_OBYTES),
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_OPACKETS),
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_OERRORS),
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_OQDROPS),
+		    0UL,				/* tx_fifo_errors */
+		    (uintmax_t )ifp->if_get_counter(ifp, IFCOUNTER_COLLISIONS),
+		    0UL,				/* tx_carrier_errors +
+							 * tx_aborted_errors +
+							 * tx_window_errors +
+							 * tx_heartbeat_errors*/
+		    0UL);				/* tx_compressed */
+	}
 	IFNET_RUNLOCK();
 	CURVNET_RESTORE();
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202302212316.31LNGpsp011787>