From 96d706cdfc89ba3f683bd73fbebc274e5eaeb9a5 Mon Sep 17 00:00:00 2001 From: rin Date: Mon, 3 May 2021 10:28:26 +0000 Subject: genet(4): Add support for rnd(9). --- sys/dev/ic/bcmgenet.c | 17 +++++++++++++++-- sys/dev/ic/bcmgenetvar.h | 4 +++- 2 files changed, 18 insertions(+), 3 deletions(-) (limited to 'sys/dev/ic') diff --git a/sys/dev/ic/bcmgenet.c b/sys/dev/ic/bcmgenet.c index 2fb1c4954c1..9f2cc098754 100644 --- a/sys/dev/ic/bcmgenet.c +++ b/sys/dev/ic/bcmgenet.c @@ -1,4 +1,4 @@ -/* $NetBSD: bcmgenet.c,v 1.8 2021/03/08 13:14:44 mlelstv Exp $ */ +/* $NetBSD: bcmgenet.c,v 1.9 2021/05/03 10:28:26 rin Exp $ */ /*- * Copyright (c) 2020 Jared McNeill @@ -34,7 +34,7 @@ #include "opt_ddb.h" #include -__KERNEL_RCSID(0, "$NetBSD: bcmgenet.c,v 1.8 2021/03/08 13:14:44 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bcmgenet.c,v 1.9 2021/05/03 10:28:26 rin Exp $"); #include #include @@ -46,6 +46,8 @@ __KERNEL_RCSID(0, "$NetBSD: bcmgenet.c,v 1.8 2021/03/08 13:14:44 mlelstv Exp $") #include #include +#include + #include #include #include @@ -681,6 +683,7 @@ genet_rxintr(struct genet_softc *sc, int qid) int error, index, len, n; struct mbuf *m, *m0; uint32_t status, pidx, total; + int pkts = 0; pidx = RD4(sc, GENET_RX_DMA_PROD_INDEX(qid)) & 0xffff; total = (pidx - sc->sc_rx.cidx) & 0xffff; @@ -749,6 +752,7 @@ genet_rxintr(struct genet_softc *sc, int qid) m_adj(m, ETHER_ALIGN); if_percpuq_enqueue(ifp->if_percpuq, m); + ++pkts; next: index = RX_NEXT(index); @@ -756,6 +760,9 @@ next: sc->sc_rx.cidx = (sc->sc_rx.cidx + 1) & 0xffff; WR4(sc, GENET_RX_DMA_CONS_INDEX(qid), sc->sc_rx.cidx); } + + if (pkts != 0) + rnd_add_uint32(&sc->sc_rndsource, pkts); } static void @@ -785,6 +792,9 @@ genet_txintr(struct genet_softc *sc, int qid) } if_statadd(ifp, if_opackets, pkts); + + if (pkts != 0) + rnd_add_uint32(&sc->sc_rndsource, pkts); } static void @@ -1100,6 +1110,9 @@ genet_attach(struct genet_softc *sc) /* Attach ethernet interface */ ether_ifattach(ifp, eaddr); + rnd_attach_source(&sc->sc_rndsource, ifp->if_xname, RND_TYPE_NET, + RND_FLAG_DEFAULT); + return 0; } diff --git a/sys/dev/ic/bcmgenetvar.h b/sys/dev/ic/bcmgenetvar.h index bb677581e3a..f22ec16eaef 100644 --- a/sys/dev/ic/bcmgenetvar.h +++ b/sys/dev/ic/bcmgenetvar.h @@ -1,4 +1,4 @@ -/* $NetBSD: bcmgenetvar.h,v 1.3 2021/03/08 13:14:44 mlelstv Exp $ */ +/* $NetBSD: bcmgenetvar.h,v 1.4 2021/05/03 10:28:26 rin Exp $ */ /*- * Copyright (c) 2020 Jared McNeill @@ -70,6 +70,8 @@ struct genet_softc { struct genet_ring sc_tx; struct genet_ring sc_rx; + + krndsource_t sc_rndsource; }; int genet_attach(struct genet_softc *); -- cgit