Index: sys/kern/uipc_domain.c =================================================================== --- sys/kern/uipc_domain.c +++ sys/kern/uipc_domain.c @@ -479,6 +479,18 @@ (*pr->pr_ctlinput)(cmd, sa, (void *)0); } +int +pr_milli_to_slowtimo(int ms) +{ + return (ms * PR_SLOWHZ / 1000); +} + +int +pr_milli_to_fasttimo(int ms) +{ + return (ms * PR_FASTHZ / 1000); +} + static void pfslowtimo(void *arg) { Index: sys/net/route.h =================================================================== --- sys/net/route.h +++ sys/net/route.h @@ -85,21 +85,15 @@ u_long rmx_recvpipe; /* inbound delay-bandwidth product */ u_long rmx_sendpipe; /* outbound delay-bandwidth product */ u_long rmx_ssthresh; /* outbound gateway buffer limit */ - u_long rmx_rtt; /* estimated round trip time */ - u_long rmx_rttvar; /* estimated rtt variance */ + u_long rmx_rtt; /* estimated round trip time (microseconds) */ + u_long rmx_rttvar; /* estimated rtt variance (microseconds) */ u_long rmx_pksent; /* packets sent using this route */ u_long rmx_weight; /* route weight */ u_long rmx_nhidx; /* route nexhop index */ u_long rmx_filler[2]; /* will be used for T/TCP later */ }; -/* - * rmx_rtt and rmx_rttvar are stored as microseconds; - * RTTTOPRHZ(rtt) converts to a value suitable for use - * by a protocol slowtimo counter. - */ #define RTM_RTTUNIT 1000000 /* units for rtt, rttvar, as units per sec */ -#define RTTTOPRHZ(r) ((r) / (RTM_RTTUNIT / PR_SLOWHZ)) /* lle state is exported in rmx_state rt_metrics field */ #define rmx_state rmx_weight Index: sys/netinet/igmp.c =================================================================== --- sys/netinet/igmp.c +++ sys/netinet/igmp.c @@ -816,7 +816,7 @@ case IGMP_AWAKENING_MEMBER: inm->inm_state = IGMP_REPORTING_MEMBER; inm->inm_timer = IGMP_RANDOM_DELAY( - IGMP_V1V2_MAX_RI * PR_FASTHZ); + pr_milli_to_fasttimo(IGMP_V1V2_MAX_RI * 1000)); V_current_state_timers_running = 1; break; case IGMP_LEAVING_MEMBER: @@ -886,7 +886,7 @@ igmp_set_version(igi, IGMP_VERSION_2); - timer = igmp->igmp_code * PR_FASTHZ / IGMP_TIMER_SCALE; + timer = pr_milli_to_fasttimo(igmp->igmp_code * 1000) / IGMP_TIMER_SCALE; if (timer == 0) timer = 1; @@ -1026,7 +1026,7 @@ (IGMP_EXP(igmpv3->igmp_qqi) + 3); } - timer = maxresp * PR_FASTHZ / IGMP_TIMER_SCALE; + timer = pr_milli_to_fasttimo(maxresp * 1000) / IGMP_TIMER_SCALE; if (timer == 0) timer = 1; @@ -1740,8 +1740,8 @@ if (igi->igi_version == IGMP_VERSION_3) { loop = (igi->igi_flags & IGIF_LOOPBACK) ? 1 : 0; - uri_fasthz = IGMP_RANDOM_DELAY(igi->igi_uri * - PR_FASTHZ); + uri_fasthz = IGMP_RANDOM_DELAY( + pr_milli_to_fasttimo(igi->igi_uri * 1000)); mbufq_init(&qrq, IGMP_MAX_G_GS_PACKETS); mbufq_init(&scq, IGMP_MAX_STATE_CHANGE_PACKETS); } @@ -2000,7 +2000,7 @@ * Section 8.12. */ old_version_timer = igi->igi_rv * igi->igi_qi + igi->igi_qri; - old_version_timer *= PR_SLOWHZ; + old_version_timer = pr_milli_to_slowtimo(old_version_timer * 1000); if (version == IGMP_VERSION_1) { igi->igi_v1_timer = old_version_timer; @@ -2433,7 +2433,7 @@ IGMP_v1_HOST_MEMBERSHIP_REPORT); if (error == 0) { inm->inm_timer = IGMP_RANDOM_DELAY( - IGMP_V1V2_MAX_RI * PR_FASTHZ); + pr_milli_to_fasttimo(IGMP_V1V2_MAX_RI * 1000)); V_current_state_timers_running = 1; } break; @@ -3422,7 +3422,7 @@ */ if (mbufq_first(&igi->igi_gq) != NULL) { igi->igi_v3_timer = 1 + IGMP_RANDOM_DELAY( - IGMP_RESPONSE_BURST_INTERVAL); + pr_milli_to_fasttimo(IGMP_RESPONSE_BURST_INTERVAL_MS)); V_interface_timers_running = 1; } } Index: sys/netinet/igmp_var.h =================================================================== --- sys/netinet/igmp_var.h +++ sys/netinet/igmp_var.h @@ -148,7 +148,7 @@ #define IGMP_MAX_STATE_CHANGE_PACKETS 8 /* # of packets per state change */ #define IGMP_MAX_RESPONSE_PACKETS 16 /* # of packets for general query */ #define IGMP_MAX_RESPONSE_BURST 4 /* # of responses to send at once */ -#define IGMP_RESPONSE_BURST_INTERVAL (PR_FASTHZ / 2) /* 500ms */ +#define IGMP_RESPONSE_BURST_INTERVAL_MS 500 /* * IGMP-specific mbuf flags. Index: sys/netinet6/in6.c =================================================================== --- sys/netinet6/in6.c +++ sys/netinet6/in6.c @@ -733,7 +733,7 @@ return (NULL); } - delay = (delay * PR_FASTHZ) / hz; + delay = pr_milli_to_fasttimo(delay * 1000) / hz; error = in6_joingroup(ifp, mcaddr, NULL, &imm->i6mm_maddr, delay); if (error) { Index: sys/netinet6/mld6.c =================================================================== --- sys/netinet6/mld6.c +++ sys/netinet6/mld6.c @@ -670,7 +670,7 @@ KASSERT(mli != NULL, ("%s: no mld_ifsoftc for ifp %p", __func__, ifp)); mld_set_version(mli, MLD_VERSION_1); - timer = (ntohs(mld->mld_maxdelay) * PR_FASTHZ) / MLD_TIMER_SCALE; + timer = (pr_milli_to_fasttimo(ntohs(mld->mld_maxdelay) * 1000)) / MLD_TIMER_SCALE; if (timer == 0) timer = 1; @@ -821,7 +821,7 @@ maxdelay = (MLD_MRC_MANT(maxdelay) | 0x1000) << (MLD_MRC_EXP(maxdelay) + 3); } - timer = (maxdelay * PR_FASTHZ) / MLD_TIMER_SCALE; + timer = (pr_milli_to_fasttimo(maxdelay * 1000)) / MLD_TIMER_SCALE; if (timer == 0) timer = 1; @@ -1380,7 +1380,7 @@ if (mli->mli_version == MLD_VERSION_2) { uri_fasthz = MLD_RANDOM_DELAY(mli->mli_uri * - PR_FASTHZ); + pr_milli_to_fasttimo(1000)); mbufq_init(&qrq, MLD_MAX_G_GS_PACKETS); mbufq_init(&scq, MLD_MAX_STATE_CHANGE_PACKETS); } @@ -1616,7 +1616,7 @@ * Section 9.12. */ old_version_timer = (mli->mli_rv * mli->mli_qi) + mli->mli_qri; - old_version_timer *= PR_SLOWHZ; + old_version_timer *= pr_milli_to_slowtimo(1000); mli->mli_v1_timer = old_version_timer; } @@ -2003,7 +2003,7 @@ * and delay sending the initial MLDv1 report * by not transitioning to the IDLE state. */ - odelay = MLD_RANDOM_DELAY(MLD_V1_MAX_RI * PR_FASTHZ); + odelay = MLD_RANDOM_DELAY(pr_milli_to_fasttimo(MLD_V1_MAX_RI * 1000)); if (delay) { inm->in6m_timer = max(delay, odelay); V_current_state_timers_running6 = 1; @@ -3039,7 +3039,7 @@ */ if (mbufq_first(&mli->mli_gq) != NULL) { mli->mli_v2_timer = 1 + MLD_RANDOM_DELAY( - MLD_RESPONSE_BURST_INTERVAL); + pr_milli_to_fasttimo(MLD_RESPONSE_BURST_INTERVAL_MS)); V_interface_timers_running6 = 1; } } Index: sys/netinet6/mld6_var.h =================================================================== --- sys/netinet6/mld6_var.h +++ sys/netinet6/mld6_var.h @@ -83,7 +83,7 @@ #define MLD_MAX_STATE_CHANGE_PACKETS 8 /* # of packets per state change */ #define MLD_MAX_RESPONSE_PACKETS 16 /* # of packets for general query */ #define MLD_MAX_RESPONSE_BURST 4 /* # of responses to send at once */ -#define MLD_RESPONSE_BURST_INTERVAL (PR_FASTHZ / 2) /* 500ms */ +#define MLD_RESPONSE_BURST_INTERVAL_MS 500 /* * MLD-specific mbuf flags. Index: sys/sys/protosw.h =================================================================== --- sys/sys/protosw.h +++ sys/sys/protosw.h @@ -100,6 +100,9 @@ #define PR_SLOWHZ 2 /* 2 slow timeouts per second */ #define PR_FASTHZ 5 /* 5 fast timeouts per second */ +int pr_milli_to_slowtimo(int ms); +int pr_milli_to_fasttimo(int ms); + /* * This number should be defined again within each protocol family to avoid * confusion.