]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
device: allow reducing queue constants on iOS
authorJason A. Donenfeld <Jason@zx2c4.com>
Fri, 21 May 2021 22:57:42 +0000 (00:57 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 21 May 2021 23:00:51 +0000 (01:00 +0200)
Heavier network extensions might require the wireguard-go component to
use less ram, so let users of this reduce these as needed.

At some point we'll put this behind a configuration method of sorts, but
for now, just expose the consts as vars.

Requested-by: Josh Bleecher Snyder <josh@tailscale.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
device/constants.go
device/device.go
device/queueconstants_ios.go

index 2252917d027bca377d455ab5c11b5f19ce15d8d1..53a252623b27a410a2b065815effa62fa4e50401 100644 (file)
@@ -35,7 +35,6 @@ const (
 /* Implementation constants */
 
 const (
-       UnderLoadQueueSize = QueueHandshakeSize / 8
        UnderLoadAfterTime = time.Second // how long does the device remain under load after detected
        MaxPeers           = 1 << 16     // maximum number of configured peers
 )
index 86f519aa0c5b959eb84402ce13bcf0b9c11b58d3..5644c8a5049ddde1005e4c2d24302de47f35a02b 100644 (file)
@@ -210,7 +210,7 @@ func (device *Device) Down() error {
 func (device *Device) IsUnderLoad() bool {
        // check if currently under load
        now := time.Now()
-       underLoad := len(device.queue.handshake.c) >= UnderLoadQueueSize
+       underLoad := len(device.queue.handshake.c) >= QueueHandshakeSize/8
        if underLoad {
                atomic.StoreInt64(&device.rate.underLoadUntil, now.Add(UnderLoadAfterTime).UnixNano())
                return true
index be30e196350d198d7f50387556add38af9d1ee2e..36c8704040a2f72af214415e58f69a53b46ca936 100644 (file)
@@ -7,13 +7,15 @@
 
 package device
 
-/* Fit within memory limits for iOS's Network Extension API, which has stricter requirements */
-
-const (
-       QueueStagedSize            = 128
-       QueueOutboundSize          = 1024
-       QueueInboundSize           = 1024
-       QueueHandshakeSize         = 1024
-       MaxSegmentSize             = 1700
-       PreallocatedBuffersPerPool = 1024
+// Fit within memory limits for iOS's Network Extension API, which has stricter requirements.
+// These are vars instead of consts, because heavier network extensions might want to reduce
+// them further.
+var (
+       QueueStagedSize                   = 128
+       QueueOutboundSize                 = 1024
+       QueueInboundSize                  = 1024
+       QueueHandshakeSize                = 1024
+       PreallocatedBuffersPerPool uint32 = 1024
 )
+
+const MaxSegmentSize = 1700