Date: Wed, 7 Apr 2021 15:48:13 GMT From: Kristof Provost <kp@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 06d8a9c86adf - stable/12 - dummynet: Move timekeeping information into dn_cfg Message-ID: <202104071548.137FmDWp034121@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=06d8a9c86adfecd16f55053f852f37ceadd26257 commit 06d8a9c86adfecd16f55053f852f37ceadd26257 Author: Kristof Provost <kp@FreeBSD.org> AuthorDate: 2021-03-09 15:44:26 +0000 Commit: Kristof Provost <kp@FreeBSD.org> CommitDate: 2021-04-07 15:25:38 +0000 dummynet: Move timekeeping information into dn_cfg Just like with the packet counters move the timekeeping information into dn_cfg. This reduces the global name space use for dummynet and will make subsequent work to add vnet support and re-use in pf easier. Reviewed by: donner MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Different Revision: https://reviews.freebsd.org/D29246 (cherry picked from commit 320bed3c007be1c2ff1f4b0d00d64d541d807fed) --- sys/netpfil/ipfw/ip_dn_io.c | 44 ++++++++++++++++------------------------ sys/netpfil/ipfw/ip_dn_private.h | 8 ++++++++ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/sys/netpfil/ipfw/ip_dn_io.c b/sys/netpfil/ipfw/ip_dn_io.c index 760a24ed041f..f746023db53c 100644 --- a/sys/netpfil/ipfw/ip_dn_io.c +++ b/sys/netpfil/ipfw/ip_dn_io.c @@ -79,14 +79,6 @@ __FBSDID("$FreeBSD$"); struct dn_parms dn_cfg; //VNET_DEFINE(struct dn_parms, _base_dn_cfg); -static long tick_last; /* Last tick duration (usec). */ -static long tick_delta; /* Last vs standard tick diff (usec). */ -static long tick_delta_sum; /* Accumulated tick difference (usec).*/ -static long tick_adjustment; /* Tick adjustments done. */ -static long tick_lost; /* Lost(coalesced) ticks number. */ -/* Adjusted vs non-adjusted curr_time difference (ticks). */ -static long tick_diff; - /* * We use a heap to store entities for which we have pending timer events. * The heap is checked at every tick and all entities with expired events @@ -187,16 +179,16 @@ SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, red_max_pkt_size, /* time adjustment */ SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, tick_delta, - CTLFLAG_RD, &tick_delta, 0, "Last vs standard tick difference (usec)."); + CTLFLAG_RD, DC(tick_delta), 0, "Last vs standard tick difference (usec)."); SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, tick_delta_sum, - CTLFLAG_RD, &tick_delta_sum, 0, "Accumulated tick difference (usec)."); + CTLFLAG_RD, DC(tick_delta_sum), 0, "Accumulated tick difference (usec)."); SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, tick_adjustment, - CTLFLAG_RD, &tick_adjustment, 0, "Tick adjustments done."); + CTLFLAG_RD, DC(tick_adjustment), 0, "Tick adjustments done."); SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, tick_diff, - CTLFLAG_RD, &tick_diff, 0, + CTLFLAG_RD, DC(tick_diff), 0, "Adjusted vs non-adjusted curr_time difference (ticks)."); SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, tick_lost, - CTLFLAG_RD, &tick_lost, 0, + CTLFLAG_RD, DC(tick_lost), 0, "Number of ticks coalesced by dummynet taskqueue."); /* Drain parameters */ @@ -660,16 +652,16 @@ dummynet_task(void *context, int pending) DN_BH_WLOCK(); /* Update number of lost(coalesced) ticks. */ - tick_lost += pending - 1; + dn_cfg.tick_lost += pending - 1; getmicrouptime(&t); /* Last tick duration (usec). */ - tick_last = (t.tv_sec - dn_cfg.prev_t.tv_sec) * 1000000 + + dn_cfg.tick_last = (t.tv_sec - dn_cfg.prev_t.tv_sec) * 1000000 + (t.tv_usec - dn_cfg.prev_t.tv_usec); /* Last tick vs standard tick difference (usec). */ - tick_delta = (tick_last * hz - 1000000) / hz; + dn_cfg.tick_delta = (dn_cfg.tick_last * hz - 1000000) / hz; /* Accumulated tick difference (usec). */ - tick_delta_sum += tick_delta; + dn_cfg.tick_delta_sum += dn_cfg.tick_delta; dn_cfg.prev_t = t; @@ -681,18 +673,18 @@ dummynet_task(void *context, int pending) * adjustment. */ dn_cfg.curr_time++; - if (tick_delta_sum - tick >= 0) { - int diff = tick_delta_sum / tick; + if (dn_cfg.tick_delta_sum - tick >= 0) { + int diff = dn_cfg.tick_delta_sum / tick; dn_cfg.curr_time += diff; - tick_diff += diff; - tick_delta_sum %= tick; - tick_adjustment++; - } else if (tick_delta_sum + tick <= 0) { + dn_cfg.tick_diff += diff; + dn_cfg.tick_delta_sum %= tick; + dn_cfg.tick_adjustment++; + } else if (dn_cfg.tick_delta_sum + tick <= 0) { dn_cfg.curr_time--; - tick_diff--; - tick_delta_sum += tick; - tick_adjustment++; + dn_cfg.tick_diff--; + dn_cfg.tick_delta_sum += tick; + dn_cfg.tick_adjustment++; } /* serve pending events, accumulate in q */ diff --git a/sys/netpfil/ipfw/ip_dn_private.h b/sys/netpfil/ipfw/ip_dn_private.h index a318a8e3be37..b655a91fe758 100644 --- a/sys/netpfil/ipfw/ip_dn_private.h +++ b/sys/netpfil/ipfw/ip_dn_private.h @@ -125,6 +125,14 @@ struct dn_parms { struct timeval prev_t; /* last time dummynet_tick ran */ struct dn_heap evheap; /* scheduled events */ + long tick_last; /* Last tick duration (usec). */ + long tick_delta; /* Last vs standard tick diff (usec). */ + long tick_delta_sum; /* Accumulated tick difference (usec).*/ + long tick_adjustment; /* Tick adjustments done. */ + long tick_lost; /* Lost(coalesced) ticks number. */ + /* Adjusted vs non-adjusted curr_time difference (ticks). */ + long tick_diff; + /* counters of objects -- used for reporting space */ int schk_count; int si_count;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104071548.137FmDWp034121>