From 1b092ce584cbee0f86f3e25b5498870c8ca96652 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 27 Jan 2021 18:13:53 +0100 Subject: 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 --- device/receive.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'device/receive.go') 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() -- cgit v1.2.3-59-g8ed1b