aboutsummaryrefslogtreecommitdiffstats
path: root/net/openvswitch/vport-netdev.h
diff options
context:
space:
mode:
authorJesse Gross <jesse@nicira.com>2012-11-28 14:01:52 -0800
committerJesse Gross <jesse@nicira.com>2012-11-28 14:04:34 -0800
commit92eb1d477145b2e7780b5002e856f70b8c3d74da (patch)
treedd9856ff7feb1dd9b10485c31c26fe4fa4d344c4 /net/openvswitch/vport-netdev.h
parentopenvswitch: add skb mark matching and set action (diff)
downloadlinux-dev-92eb1d477145b2e7780b5002e856f70b8c3d74da.tar.xz
linux-dev-92eb1d477145b2e7780b5002e856f70b8c3d74da.zip
openvswitch: Use RCU callback when detaching netdevices.
Currently, each time a device is detached from an OVS datapath we call synchronize RCU before freeing associated data structures. However, if a bridge is deleted (which detaches all ports) when many devices are connected then there can be a long delay. This switches to use call_rcu() to group the cost together. Reported-by: Justin Pettit <jpettit@nicira.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'net/openvswitch/vport-netdev.h')
-rw-r--r--net/openvswitch/vport-netdev.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/openvswitch/vport-netdev.h b/net/openvswitch/vport-netdev.h
index f7072a25c604..6478079b3417 100644
--- a/net/openvswitch/vport-netdev.h
+++ b/net/openvswitch/vport-netdev.h
@@ -20,12 +20,15 @@
#define VPORT_NETDEV_H 1
#include <linux/netdevice.h>
+#include <linux/rcupdate.h>
#include "vport.h"
struct vport *ovs_netdev_get_vport(struct net_device *dev);
struct netdev_vport {
+ struct rcu_head rcu;
+
struct net_device *dev;
};