aboutgitcodebugslistschat
path: root/tcp_conn.h
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2022-11-17 16:58:54 +1100
committerStefano Brivio <sbrivio@redhat.com>2022-11-25 01:35:28 +0100
commitb65d603e23d7f05c4974dcf22f3244d2ae987482 (patch)
treeaff065e264bfa2ec743ed8d988543781c272eaec /tcp_conn.h
parent233b95e90f8e9391d93d2187f682eaf51b6f3dd1 (diff)
downloadpasst-b65d603e23d7f05c4974dcf22f3244d2ae987482.tar
passt-b65d603e23d7f05c4974dcf22f3244d2ae987482.tar.gz
passt-b65d603e23d7f05c4974dcf22f3244d2ae987482.tar.bz2
passt-b65d603e23d7f05c4974dcf22f3244d2ae987482.tar.lz
passt-b65d603e23d7f05c4974dcf22f3244d2ae987482.tar.xz
passt-b65d603e23d7f05c4974dcf22f3244d2ae987482.tar.zst
passt-b65d603e23d7f05c4974dcf22f3244d2ae987482.zip
tcp: Don't store hash bucket in connection structures
Currently when we insert a connection into the hash table, we store its bucket number so we can find it when removing entries. However, we can recompute the hash value from other contents of the structure so we don't need to store it. This brings the size of tcp_tap_conn down to 64 bytes again, which means it will fit in a single cacheline on common machines. This change also removes a non-obvious constraint that the hash table have less than twice TCP_MAX_CONNS buckets, because of the way TCP_HASH_BUCKET_BITS was constructed. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp_conn.h')
-rw-r--r--tcp_conn.h5
1 files changed, 0 insertions, 5 deletions
diff --git a/tcp_conn.h b/tcp_conn.h
index faa63dc..4bffe9a 100644
--- a/tcp_conn.h
+++ b/tcp_conn.h
@@ -9,8 +9,6 @@
#ifndef TCP_CONN_H
#define TCP_CONN_H
-#define TCP_HASH_BUCKET_BITS (TCP_CONN_INDEX_BITS + 1)
-
/**
* struct tcp_conn_common - Common fields for spliced and non-spliced
* @spliced: Is this a spliced connection?
@@ -32,7 +30,6 @@ extern const char *tcp_common_flag_str[];
* @events: Connection events, implying connection states
* @timer: timerfd descriptor for timeout events
* @flags: Connection flags representing internal attributes
- * @hash_bucket: Bucket index in connection lookup hash table
* @retrans: Number of retransmissions occurred due to ACK_TIMEOUT
* @ws_from_tap: Window scaling factor advertised from tap/guest
* @ws_to_tap: Window scaling factor advertised to tap/guest
@@ -97,8 +94,6 @@ struct tcp_tap_conn {
#define ACK_FROM_TAP_DUE BIT(5)
- unsigned int hash_bucket :TCP_HASH_BUCKET_BITS;
-
#define TCP_MSS_BITS 14
unsigned int tap_mss :TCP_MSS_BITS;
#define MSS_SET(conn, mss) (conn->tap_mss = (mss >> (16 - TCP_MSS_BITS)))