aboutgitcodebugslistschat
path: root/tcp.h
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2022-03-20 08:16:06 +0100
committerStefano Brivio <sbrivio@redhat.com>2022-03-29 15:35:38 +0200
commit54d9df39033730234540cee49393d40cdfe3658a (patch)
tree961e67c2b97d3b94d6060f7e162a242233e19428 /tcp.h
parentbc4ec1a8e95d0787d5a6780e91e9d78e117e7da8 (diff)
downloadpasst-54d9df39033730234540cee49393d40cdfe3658a.tar
passt-54d9df39033730234540cee49393d40cdfe3658a.tar.gz
passt-54d9df39033730234540cee49393d40cdfe3658a.tar.bz2
passt-54d9df39033730234540cee49393d40cdfe3658a.tar.lz
passt-54d9df39033730234540cee49393d40cdfe3658a.tar.xz
passt-54d9df39033730234540cee49393d40cdfe3658a.tar.zst
passt-54d9df39033730234540cee49393d40cdfe3658a.zip
tcp: Fit struct tcp_conn into a single 64-byte cacheline
...by: - storing the chained-hash next connection pointer as numeric reference rather than as pointer - storing the MSS as 14-bit value, and rounding it - using only the effective amount of bits needed to store the hash bucket number - explicitly limiting window scaling factors to 4-bit values (maximum factor is 14, from RFC 7323) - scaling SO_SNDBUF values, and using a 8-bit representation for the duplicate ACK sequence - keeping window values unscaled, as received and sent Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp.h')
-rw-r--r--tcp.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/tcp.h b/tcp.h
index 3154b4b..109516d 100644
--- a/tcp.h
+++ b/tcp.h
@@ -6,11 +6,12 @@
#ifndef TCP_H
#define TCP_H
-#define REFILL_INTERVAL 1000 /* ms */
+#define REFILL_INTERVAL 1000 /* ms */
#define PORT_DETECT_INTERVAL 1000
#define TCP_TIMER_INTERVAL MIN(REFILL_INTERVAL, PORT_DETECT_INTERVAL)
-#define TCP_MAX_CONNS (128 * 1024)
+#define TCP_CONN_INDEX_BITS 17 /* 128k */
+#define TCP_MAX_CONNS (1 << TCP_CONN_INDEX_BITS)
#define TCP_MAX_SOCKS (TCP_MAX_CONNS + USHRT_MAX * 2)
#define TCP_SOCK_POOL_SIZE 32