summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-02-13 14:44:06 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2020-02-13 14:49:37 +0100
commitbfde89418a6d1adb2f6ba487ccd9458583227264 (patch)
tree7dcbb4292e59083f5a317168afcade834c40d10c
parentnetns: ensure that icmp src address is correct with nat (diff)
downloadwireguard-linux-compat-bfde89418a6d1adb2f6ba487ccd9458583227264.tar.xz
wireguard-linux-compat-bfde89418a6d1adb2f6ba487ccd9458583227264.zip
receive: reset last_under_load to zero
This is a small optimization that prevents more expensive comparisons from happening when they are no longer necessary, by clearing the last_under_load variable whenever we wind up in a state where we were under load but we no longer are. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Suggested-by: Matt Dunwoodie <ncon@noconroy.net>
-rw-r--r--src/receive.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/receive.c b/src/receive.c
index e00f0f4..a94fcd7 100644
--- a/src/receive.c
+++ b/src/receive.c
@@ -119,10 +119,13 @@ static void wg_receive_handshake_packet(struct wg_device *wg,
under_load = skb_queue_len(&wg->incoming_handshakes) >=
MAX_QUEUED_INCOMING_HANDSHAKES / 8;
- if (under_load)
+ if (under_load) {
last_under_load = ktime_get_coarse_boottime_ns();
- else if (last_under_load)
+ } else if (last_under_load) {
under_load = !wg_birthdate_has_expired(last_under_load, 1);
+ if (!under_load)
+ last_under_load = 0;
+ }
mac_state = wg_cookie_validate_packet(&wg->cookie_checker, skb,
under_load);
if ((under_load && mac_state == VALID_MAC_WITH_COOKIE) ||