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];