summaryrefslogtreecommitdiffstats
path: root/device/receive.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-01-27 18:13:53 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2021-01-27 18:38:27 +0100
commit1b092ce584cbee0f86f3e25b5498870c8ca96652 (patch)
treef8f7119546aafab5d48f6dd9078bfbf18a753b1a /device/receive.go
parenttun: use %w for errors on linux (diff)
downloadwireguard-go-1b092ce584cbee0f86f3e25b5498870c8ca96652.tar.xz
wireguard-go-1b092ce584cbee0f86f3e25b5498870c8ca96652.zip
device: get rid of nonce routine
This moves to a simple queue with no routine processing it, to reduce scheduler pressure. This splits latency in half! benchmark old ns/op new ns/op delta BenchmarkThroughput-16 2394 2364 -1.25% BenchmarkLatency-16 259652 120810 -53.47% Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'device/receive.go')
-rw-r--r--device/receive.go9
1 files changed, 1 insertions, 8 deletions
diff --git a/device/receive.go b/device/receive.go
index a8e55cc..e891fd0 100644
--- a/device/receive.go
+++ b/device/receive.go
@@ -427,10 +427,6 @@ func (device *Device) RoutineHandshake() {
peer.timersSessionDerived()
peer.timersHandshakeComplete()
peer.SendKeepalive()
- select {
- case peer.signals.newKeypairArrived <- struct{}{}:
- default:
- }
}
}
}
@@ -485,10 +481,7 @@ func (peer *Peer) RoutineSequentialReceiver() {
// check if using new keypair
if peer.ReceivedWithKeypair(elem.keypair) {
peer.timersHandshakeComplete()
- select {
- case peer.signals.newKeypairArrived <- struct{}{}:
- default:
- }
+ peer.SendStagedPackets()
}
peer.keepKeyFreshReceiving()