summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2009-10-30 07:11:27 +0000
committerDavid S. Miller <davem@davemloft.net>2009-11-01 23:55:08 -0800
commit72c9528bab94cc052d00ce241b8e85f5d71e45f0 (patch)
treefcec7a40e0242e659474a4d9f501d9213225aa55 /include/linux
parent68d8287ce1e1da3c99881385a93e74f68c454fc2 (diff)
downloadlinux-72c9528bab94cc052d00ce241b8e85f5d71e45f0.tar.gz
linux-72c9528bab94cc052d00ce241b8e85f5d71e45f0.tar.bz2
linux-72c9528bab94cc052d00ce241b8e85f5d71e45f0.zip
net: Introduce dev_get_by_name_rcu()
Some workloads hit dev_base_lock rwlock pretty hard. We can use RCU lookups to avoid touching this rwlock (and avoid touching netdevice refcount) netdevices are already freed after a RCU grace period, so this patch adds no penalty at device dismantle time. However, it adds a synchronize_rcu() call in dev_change_name() Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/netdevice.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index e5ece8dceaad..bcf1083857fc 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1115,6 +1115,7 @@ extern void __dev_remove_pack(struct packet_type *pt);
extern struct net_device *dev_get_by_flags(struct net *net, unsigned short flags,
unsigned short mask);
extern struct net_device *dev_get_by_name(struct net *net, const char *name);
+extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
extern struct net_device *__dev_get_by_name(struct net *net, const char *name);
extern int dev_alloc_name(struct net_device *dev, const char *name);
extern int dev_open(struct net_device *dev);