The intent here is to poll no faster than 100 times a second, so change sc_rnghz to sc_rngms and set it to 10 milliseconds, then call timeout_add_msec() instead of timeout_add().
ok? Index: ubsec.c =================================================================== RCS file: /cvs/src/sys/dev/pci/ubsec.c,v retrieving revision 1.164 diff -u -p -r1.164 ubsec.c --- ubsec.c 28 Apr 2018 15:44:59 -0000 1.164 +++ ubsec.c 10 Jan 2020 04:04:01 -0000 @@ -318,11 +318,8 @@ ubsec_attach(struct device *parent, stru } timeout_set(&sc->sc_rngto, ubsec_rng, sc); - if (hz >= 100) - sc->sc_rnghz = hz / 100; - else - sc->sc_rnghz = 1; - timeout_add(&sc->sc_rngto, sc->sc_rnghz); + sc->sc_rngms = 10; + timeout_add_msec(&sc->sc_rngto, sc->sc_rngms); printf(" RNG"); skip_rng: ; @@ -1455,7 +1452,7 @@ ubsec_callback2(struct ubsec_softc *sc, for (i = 0; i < UBSEC_RNG_BUFSIZ; p++, i++) enqueue_randomness(*p); rng->rng_used = 0; - timeout_add(&sc->sc_rngto, sc->sc_rnghz); + timeout_add_msec(&sc->sc_rngto, sc->sc_rngms); break; } #endif @@ -1530,7 +1527,7 @@ out: */ (*nqueue)--; splx(s); - timeout_add(&sc->sc_rngto, sc->sc_rnghz); + timeout_add_msec(&sc->sc_rngto, sc->sc_rngms); } #endif /* UBSEC_NO_RNG */ Index: ubsecvar.h =================================================================== RCS file: /cvs/src/sys/dev/pci/ubsecvar.h,v retrieving revision 1.40 diff -u -p -r1.40 ubsecvar.h --- ubsecvar.h 15 Aug 2014 15:37:51 -0000 1.40 +++ ubsecvar.h 10 Jan 2020 04:04:01 -0000 @@ -147,7 +147,7 @@ struct ubsec_softc { int sc_nsessions; /* # of sessions */ struct ubsec_session *sc_sessions; /* sessions */ struct timeout sc_rngto; /* rng timeout */ - int sc_rnghz; /* rng poll time */ + int sc_rngms; /* rng poll time (msecs) */ struct ubsec_q2_rng sc_rng; struct ubsec_dma sc_dmaa[UBS_MAX_NQUEUE]; struct ubsec_q *sc_queuea[UBS_MAX_NQUEUE];