igmp: hash a hash table to speedup ip_check_mc_rcu()
After IP route cache removal, multicast applications using a lot of multicast addresses hit a O(N) behavior in ip_check_mc_rcu() Add a per in_device hash table to get faster lookup. This hash table is created only if the number of items in mc_list is above 4. Reported-by: Shawn Bohrer <sbohrer@rgmadvisors.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Tested-by: Shawn Bohrer <sbohrer@rgmadvisors.com> Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
64153ce0a7
commit
e989707135
4 changed files with 77 additions and 3 deletions
|
@ -215,6 +215,7 @@ void in_dev_finish_destroy(struct in_device *idev)
|
|||
|
||||
WARN_ON(idev->ifa_list);
|
||||
WARN_ON(idev->mc_list);
|
||||
kfree(rcu_dereference_protected(idev->mc_hash, 1));
|
||||
#ifdef NET_REFCNT_DEBUG
|
||||
pr_debug("%s: %p=%s\n", __func__, idev, dev ? dev->name : "NIL");
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue