diff options
-rw-r--r-- | sys/contrib/ipfilter/netinet/ip_fil.h | 2 | ||||
-rw-r--r-- | sys/contrib/ipfilter/netinet/ip_fil_freebsd.c | 16 |
2 files changed, 14 insertions, 4 deletions
diff --git a/sys/contrib/ipfilter/netinet/ip_fil.h b/sys/contrib/ipfilter/netinet/ip_fil.h index 22a11c3..11e8b9b 100644 --- a/sys/contrib/ipfilter/netinet/ip_fil.h +++ b/sys/contrib/ipfilter/netinet/ip_fil.h @@ -1654,7 +1654,7 @@ typedef struct ipf_main_softc_s { ipftoken_t **ipf_token_tail; #if defined(__FreeBSD_version) && (__FreeBSD_version >= 300000) && \ defined(_KERNEL) - struct callout_handle ipf_slow_ch; + struct callout ipf_slow_ch; #endif #if defined(linux) && defined(_KERNEL) struct timer_list ipf_timer; diff --git a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c index 9d26193..898869a 100644 --- a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c +++ b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c @@ -178,11 +178,13 @@ ipf_timer_func(arg) ipf_slowtimer(softc); if (softc->ipf_running == -1 || softc->ipf_running == 1) { -#if FREEBSD_GE_REV(300000) +#if 0 softc->ipf_slow_ch = timeout(ipf_timer_func, softc, hz/2); -#else - timeout(ipf_timer_func, softc, hz/2); #endif + callout_init(&softc->ipf_slow_ch, CALLOUT_MPSAFE); + callout_reset(&softc->ipf_slow_ch, + (hz / IPF_HZ_DIVIDE) * IPF_HZ_MULT, + ipf_timer_func, softc); } RWLOCK_EXIT(&softc->ipf_global); SPL_X(s); @@ -223,8 +225,13 @@ ipfattach(softc) ipid = 0; SPL_X(s); +#if 0 softc->ipf_slow_ch = timeout(ipf_timer_func, softc, (hz / IPF_HZ_DIVIDE) * IPF_HZ_MULT); +#endif + callout_init(&softc->ipf_slow_ch, CALLOUT_MPSAFE); + callout_reset(&softc->ipf_slow_ch, (hz / IPF_HZ_DIVIDE) * IPF_HZ_MULT, + ipf_timer_func, softc); return 0; } @@ -246,9 +253,12 @@ ipfdetach(softc) SPL_NET(s); +#if 0 if (softc->ipf_slow_ch.callout != NULL) untimeout(ipf_timer_func, softc, softc->ipf_slow_ch); bzero(&softc->ipf_slow, sizeof(softc->ipf_slow)); +#endif + callout_drain(&softc->ipf_slow_ch); #ifndef NETBSD_PF if (ipf_checkp != NULL) |