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

Reply via email to