From nobody Tue Oct 13 16:35:02 2026 X-Original-To: dev-commits-src-all@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 4j40LN05vvz6vg40 for ; Tue, 13 Oct 2026 16:35:08 +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 4j40LM6VBJz4Z5y for ; Tue, 13 Oct 2026 16:35:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791909307; 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=G1ze/5L5cdX7TmQo2BGx7vWxtyDjn53gOqFQwPto+WbeHLUzh+KfOSLMYKEMWJE32HOtHG 6kX+rCSnp9bUvBKxh4jW1o/+mBCN3Ko6GKm2TZWNtRfDL1XLB79N+K9l5DOwNCkuylW536 aHEbCdbyhvPHH4z0AYtchW0tFBGCNcDWMfJt76fgULSE+P9QadgRHngszKZqH2RW0cUEfu QSPKulbCyzUdorUGENs7bld8eOCtv7CJnhkv8qmWm/Hf53+kSkv3f33SYTBS8rIB2uUDOo WBSz+WeYJJ/SpvMZiTh0fd/hzSsq1qwO773518UfAkuIXUJ096ddftf/4fs6yA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791909307; b=xbLaoPdWoc1B5V/fmlt1FNf63NaHFQJgt73mKvt6+MAH5nVJMbvoDETLUNm6+qOidr17V5 VRW4a+8tD8JwZwGmS3PL9C74dNTxzHk6SXZk2xIdoRRinO2yNwaz7Fzd4Tk51exQaSgcGp qtZTtldxAGxEsvgv1q+UTwzDhNEezWgRk+Zm+OasKxGJ1LpOXfAf36/pqqOqlsKmajMdPr gSJ7gCgd5yOtoBw6rpENXvbf5XskRno3LFN6jsQGKwuN6GkowuSyOhQnkUqy4EtyVRB9ym 2G1wDa3TtAVWUuu5kGzy+K5BSq1JBrWJX9eJP3NcUyWpSbj4mbQGEjrSMpRAWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791909307; 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=pXiLrLTsbq0FHw/XqYPYETLEVxA3dfXIBnFN++WqkRGfdENl8MEkT8P67a4fjgA7c2tBN7 BGcSY7qOab/1FAwy5eO98axobB55aWzYb03FeN5HbFl+xuQ0zmQzPQxWv2X7EszqcFVD8+ hUBy/p6UJ0wqIpBLJOD5qklgMWmXh6VRVjZ5Z7K0cvi7mPqErsmWOcVQHnc22lmDKxt/yC 0TFOOwY7/KyTE/a7xEmniStJxItZ8yu9cvP2ZUiRQMXdj1peC31sAc/XejxNws0PsffDEP 4NY0/91mFACS7ag6Mdgcrra1m5hLMffCafAX7UJ3K7BQnB2sUKr4ehGo036EwQ== 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 4j40LM5ZPFzMpk for ; Tue, 13 Oct 2026 16:35:07 +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-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches 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),