Message ID | 20241107160444.2913124-3-gnaaman@drivenets.com (mailing list archive) |
---|---|
State | Accepted |
Commit | d7ddee1a522ddf5b28e2a3f7093cf238c96f492a |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Improve neigh_flush_dev performance | expand |
On Thu, Nov 7, 2024 at 5:05 PM Gilad Naaman <gnaaman@drivenets.com> wrote: > > Introduce neigh_for_each_in_bucket in neighbour.h, to help iterate over > the neighbour table more succinctly. > > Signed-off-by: Gilad Naaman <gnaaman@drivenets.com> > Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com> Reviewed-by: Eric Dumazet <edumazet@google.com>
diff --git a/include/net/neighbour.h b/include/net/neighbour.h index 0402447854c7..4b9068c5e668 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h @@ -277,6 +277,12 @@ static inline void *neighbour_priv(const struct neighbour *n) extern const struct nla_policy nda_policy[]; +#define neigh_for_each_in_bucket(pos, head) hlist_for_each_entry(pos, head, hash) +#define neigh_for_each_in_bucket_rcu(pos, head) \ + hlist_for_each_entry_rcu(pos, head, hash) +#define neigh_for_each_in_bucket_safe(pos, tmp, head) \ + hlist_for_each_entry_safe(pos, tmp, head, hash) + static inline bool neigh_key_eq32(const struct neighbour *n, const void *pkey) { return *(const u32 *)n->primary_key == *(const u32 *)pkey;