diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2023-02-04 06:56:26 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2023-02-04 06:56:26 +0300 |
| commit | 8788260e8f61cd0444b0db443c2f22af2b49c9fb (patch) | |
| tree | acd0874966a904b5fc338dd0696ef8e050ab37e0 /include | |
| parent | dfefcb0c04174996fbfc1484197423c0c0938a6d (diff) | |
| parent | 6579f5bacc2c4cbc5ef6abb45352416939d1f844 (diff) | |
| download | linux-8788260e8f61cd0444b0db443c2f22af2b49c9fb.tar.xz | |
Merge branch 'raw-add-drop-reasons-and-use-another-hash-function'
Eric Dumazet says:
====================
raw: add drop reasons and use another hash function
Two first patches add drop reasons to raw input processing.
Last patch spreads RAW sockets in the shared hash tables
to avoid long hash buckets in some cases.
====================
Link: https://lore.kernel.org/r/20230202094100.3083177-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/raw.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/include/net/raw.h b/include/net/raw.h index 5e665934ebc7..2c004c20ed99 100644 --- a/include/net/raw.h +++ b/include/net/raw.h @@ -15,6 +15,8 @@ #include <net/inet_sock.h> #include <net/protocol.h> +#include <net/netns/hash.h> +#include <linux/hash.h> #include <linux/icmp.h> extern struct proto raw_prot; @@ -29,13 +31,20 @@ int raw_local_deliver(struct sk_buff *, int); int raw_rcv(struct sock *, struct sk_buff *); -#define RAW_HTABLE_SIZE MAX_INET_PROTOS +#define RAW_HTABLE_LOG 8 +#define RAW_HTABLE_SIZE (1U << RAW_HTABLE_LOG) struct raw_hashinfo { spinlock_t lock; - struct hlist_nulls_head ht[RAW_HTABLE_SIZE]; + + struct hlist_nulls_head ht[RAW_HTABLE_SIZE] ____cacheline_aligned; }; +static inline u32 raw_hashfunc(const struct net *net, u32 proto) +{ + return hash_32(net_hash_mix(net) ^ proto, RAW_HTABLE_LOG); +} + static inline void raw_hashinfo_init(struct raw_hashinfo *hashinfo) { int i; |
