Currently the msk sockets are stored in a single radix tree, protected by a global spin_lock. This series moves to an hash table, allocated at boot time, with per bucker spin_lock - alike inet_hashtables, but using a different key: the token itself.
The above improves scalability, as write operations will have a far later chance to compete for lock acquisition, allows lockless lookup, and will allow easier msk traversing - e.g. for diag interface implementation's sake. This also introduces trivial, related, kunit tests and move the existing in kernel's one to kunit. v1 -> v2: - fixed a few extra and sparse warns Paolo Abeni (4): mptcp: add __init annotation on setup functions mptcp: refactor token container mptcp: move crypto test to KUNIT mptcp: introduce token KUNIT self-tests net/mptcp/Kconfig | 20 ++- net/mptcp/Makefile | 4 + net/mptcp/crypto.c | 63 +-------- net/mptcp/crypto_test.c | 72 +++++++++++ net/mptcp/pm.c | 2 +- net/mptcp/pm_netlink.c | 2 +- net/mptcp/protocol.c | 49 ++++--- net/mptcp/protocol.h | 24 ++-- net/mptcp/subflow.c | 21 ++- net/mptcp/token.c | 280 ++++++++++++++++++++++++++++------------ net/mptcp/token_test.c | 140 ++++++++++++++++++++ 11 files changed, 487 insertions(+), 190 deletions(-) create mode 100644 net/mptcp/crypto_test.c create mode 100644 net/mptcp/token_test.c -- 2.26.2