diff options
author | Paolo Abeni | 2020-06-26 19:30:00 +0200 |
---|---|---|
committer | David S. Miller | 2020-06-26 16:21:39 -0700 |
commit | 2c5ebd001d4f0c64a2dfda94eb1d9b31a8863c8d (patch) | |
tree | a9da12e3766a23f235056ea6d76190189aa21b18 /net/mptcp/Makefile | |
parent | d39dceca388ad0e4f748836806349ebe09282283 (diff) |
mptcp: refactor token container
Replace the radix tree with a hash table allocated
at boot time. The radix tree has some shortcoming:
a single lock is contented by all the mptcp operation,
the lookup currently use such lock, and traversing
all the items would require a lock, too.
With hash table instead we trade a little memory to
address all the above - a per bucket lock is used.
To hash the MPTCP sockets, we re-use the msk' sk_node
entry: the MPTCP sockets are never hashed by the stack.
Replace the existing hash proto callbacks with a dummy
implementation, annotating the above constraint.
Additionally refactor the token creation to code to:
- limit the number of consecutive attempts to a fixed
maximum. Hitting a hash bucket with a long chain is
considered a failed attempt
- accept() no longer can fail to token management.
- if token creation fails at connect() time, we do
fallback to TCP (before the connection was closed)
v1 -> v2:
- fix "no newline at end of file" - Jakub
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mptcp/Makefile')
0 files changed, 0 insertions, 0 deletions