diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2022-03-20 08:16:06 +0100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-03-29 15:35:38 +0200 |
commit | 54d9df39033730234540cee49393d40cdfe3658a (patch) | |
tree | 961e67c2b97d3b94d6060f7e162a242233e19428 /tcp.h | |
parent | bc4ec1a8e95d0787d5a6780e91e9d78e117e7da8 (diff) | |
download | passt-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.h | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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 |