net: listening_hash get a spinlock per bucket
This patch prepares RCU migration of listening_hash table for TCP/DCCP protocols. listening_hash table being small (32 slots per protocol), we add a spinlock for each slot, instead of a single rwlock for whole table. This should reduce hold time of readers, and writers concurrency. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
d8b83c57a7
commit
5caea4ea70
@ -44,12 +44,7 @@ atomic_t dccp_orphan_count = ATOMIC_INIT(0);
|
||||
|
||||
EXPORT_SYMBOL_GPL(dccp_orphan_count);
|
||||
|
||||
struct inet_hashinfo __cacheline_aligned dccp_hashinfo = {
|
||||
.lhash_lock = RW_LOCK_UNLOCKED,
|
||||
.lhash_users = ATOMIC_INIT(0),
|
||||
.lhash_wait = __WAIT_QUEUE_HEAD_INITIALIZER(dccp_hashinfo.lhash_wait),
|
||||
};
|
||||
|
||||
struct inet_hashinfo dccp_hashinfo;
|
||||
EXPORT_SYMBOL_GPL(dccp_hashinfo);
|
||||
|
||||
/* the maximum queue length for tx in packets. 0 is no limit */
|
||||
@ -1030,6 +1025,7 @@ static int __init dccp_init(void)
|
||||
BUILD_BUG_ON(sizeof(struct dccp_skb_cb) >
|
||||
FIELD_SIZEOF(struct sk_buff, cb));
|
||||
|
||||
inet_hashinfo_init(&dccp_hashinfo);
|
||||
dccp_hashinfo.bind_bucket_cachep =
|
||||
kmem_cache_create("dccp_bind_bucket",
|
||||
sizeof(struct inet_bind_bucket), 0,
|
||||
|
Reference in New Issue
Block a user