From nobody Tue Oct 13 16:35:02 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4j40LG4rGTz6vg68 for ; Tue, 13 Oct 2026 16:35:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j40LG4Gt3z4Z7r for ; Tue, 13 Oct 2026 16:35:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791909302; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=osMl2nzVTY+iVBzdmOoeRiXnXP0YU338UGbzws1nlpo=; b=wGk5avISK4Svbs6gLWInZM41aoZxq2fKX67XTHZxbMJWvWS0dvi4i7Q5+fRYGb1uzsxV7E nH06rvKEbIQXduw4Mr6nGkjhcC4CdgYkT/noaZmhmjT3jSFlUOBusUZWcsJJYs0t4Azkho Ww5mU7KszsNz1Ms4oCcrXhJR3oI2HgWbnxiKPTsJOCzQzGQAt1dQKB0agu+iVZj27q96HE P4pW3ZI0+rQ/JP/trQjfTSVbVTAd7ovdEcYDIEbgC7x9PI/tM7f/3qlRYQ2tHB1873pLQQ P+mt9D6hZdBdFDy3FWT4mvynyfOJF8US4cfVIWJrP/2L3toUMQmtGvtnvQ1n+g== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791909302; b=V0PAURx2k5eC1N3DBn+XXkBYnVCx0uQhYWSzCINLGFcSNVfCmzDnOcZxbbjUWcHHV/Ohfv 9QFwp8ArTDnREuSulDp5v0gMK1v56s9eP2a2lrcGowrZMzynRC3h3YsV/dr3yU8XvmBlAf wCmx+ufzP6JuN7+QeXErGWh9XE7Xp1oeV+mC3T2mVJUNN7ZrObWBWe4ywNAKXy/Tj4cbx6 vMuMr9XP0ANdCASkuijkTpHupVq3NvOlR841YRMOauQpsJ1BVTylD766dMYRlepouBBhHK BZpWiRFXbqLgy72m+5UhY35dOLyS3gH1DU8VF2berpnY4AJeN+AbL7caxVmZ0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791909302; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=osMl2nzVTY+iVBzdmOoeRiXnXP0YU338UGbzws1nlpo=; b=pUB+Qn+hOsdH3m+AG9cBpGX5Jt2IpiczXIbM8mIIvInSpoPxEPZyEBxX9tjcbrVC63mjnm XBbbD24aoYbbsPYI5xYpWc2HYo7SavvHxaq1T322ZNbTxrN5JVxafVq/SrLc1Pbv1OPuag wNX+oxYTpFs/4rFdgZKAgK6EuERcSOMQo7PD6vQX6LiY5V20y28inZISyjt0uHpatnSayj C5rTk2pGI+Y7GI5Fp3sJWr+BZXeEi8VIizWjGy7bbHTLlgmUAjjkLSGcpIM/ZMsqMa1Dj5 XyCigicinWBmYKEFof0yV0lMgSqa4Xn+Zfu+q2CXhCCKed1HKJ7tH2ftzI8Zzw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j40LG3LkpzLd0 for ; Tue, 13 Oct 2026 16:35:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27268 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 13 Oct 2026 16:35:02 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Olivier Cochard Subject: git: 686323c1820c - main - if_rge: add debugnet/netdump support List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: olivier X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 686323c1820cc4b2ef5434c0b6fa0ac38466fe5e Auto-Submitted: auto-generated Date: Tue, 13 Oct 2026 16:35:02 +0000 Message-Id: <6ace5db6.27268.5c5ce4d8@gitrepo.freebsd.org> The branch main has been updated by olivier: URL: https://cgit.FreeBSD.org/src/commit/?id=686323c1820cc4b2ef5434c0b6fa0ac38466fe5e commit 686323c1820cc4b2ef5434c0b6fa0ac38466fe5e Author: Olivier Cochard AuthorDate: 2026-10-13 16:22:19 +0000 Commit: Olivier Cochard CommitDate: 2026-10-13 16:31:50 +0000 if_rge: add debugnet/netdump support Implement the debugnet KPI in rge(4) by mirroring the re(4) pattern. Tested with a RTL8125 2.5GbE NIC. Approved by: adrian Differential Revision: https://reviews.freebsd.org/D60135 --- sys/dev/rge/if_rge.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/sys/dev/rge/if_rge.c b/sys/dev/rge/if_rge.c index 89287450a01d..12b25c855b59 100644 --- a/sys/dev/rge/if_rge.c +++ b/sys/dev/rge/if_rge.c @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -105,6 +106,10 @@ static void rge_tick(void *); static void rge_link_state(struct rge_softc *); static void rge_setwol(struct rge_softc *); +#ifdef DEBUGNET +DEBUGNET_DEFINE(rge); +#endif + struct rge_matchid { uint16_t vendor; uint16_t device; @@ -180,6 +185,10 @@ rge_attach_if(struct rge_softc *sc, const char *eaddr) /* TODO: is this needed for iftransmit? */ if_setsendqlen(sc->sc_ifp, RGE_TX_LIST_CNT - 1); if_setsendqready(sc->sc_ifp); + +#ifdef DEBUGNET + DEBUGNET_SET(sc->sc_ifp, rge); +#endif } static int @@ -2674,6 +2683,84 @@ rge_shutdown(device_t dev) return (0); } +#ifdef DEBUGNET +static void +rge_debugnet_init(if_t ifp, int *nrxr, int *ncl, int *clsize) +{ + struct rge_softc *sc; + + sc = if_getsoftc(ifp); + RGE_LOCK(sc); + *nrxr = RGE_RX_LIST_CNT; + *ncl = DEBUGNET_MAX_IN_FLIGHT; + *clsize = MCLBYTES; + RGE_UNLOCK(sc); +} + +static void +rge_debugnet_event(if_t ifp __unused, enum debugnet_ev event __unused) +{ +} + +static int +rge_debugnet_transmit(if_t ifp, struct mbuf *m) +{ + struct rge_softc *sc; + struct rge_queues *q; + int idx, free, used; + + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 || + sc->sc_stopped) + return (EBUSY); + + q = sc->sc_queues; + idx = q->q_tx.rge_txq_prodidx; + free = q->q_tx.rge_txq_considx; + if (free <= idx) + free += RGE_TX_LIST_CNT; + free -= idx; + if (free < RGE_TX_NSEGS + 2) + return (ENOBUFS); + + used = rge_encap(sc, q, &m, idx); + if (used <= 0) { + m_freem(m); + return (ENOBUFS); + } + + idx += used; + if (idx >= RGE_TX_LIST_CNT) + idx -= RGE_TX_LIST_CNT; + q->q_tx.rge_txq_prodidx = idx; + + RGE_WRITE_2(sc, RGE_TXSTART, RGE_TXSTART_START); + return (0); +} + +static int +rge_debugnet_poll(if_t ifp, int count __unused) +{ + struct rge_softc *sc; + struct rge_queues *q; + struct mbufq rx_mq; + struct mbuf *m; + + sc = if_getsoftc(ifp); + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 || + sc->sc_stopped) + return (EBUSY); + + q = sc->sc_queues; + rge_txeof(q); + mbufq_init(&rx_mq, RGE_RX_LIST_CNT); + (void)rge_rxeof(q, &rx_mq); + while ((m = mbufq_dequeue(&rx_mq)) != NULL) + if_input(ifp, m); + return (0); +} +#endif /* DEBUGNET */ + static device_method_t rge_methods[] = { DEVMETHOD(device_probe, rge_probe), DEVMETHOD(device_attach, rge_attach),