projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dpif-linux: Use get_32aligned_u64() in an appropriate place.
[openvswitch]
/
datapath
/
dp_notify.c
diff --git
a/datapath/dp_notify.c
b/datapath/dp_notify.c
index 1415833fdda4a756b32e9194f637a1751324a76c..07fd222de297d20812f83a7d89407ed6ec66b249 100644
(file)
--- a/
datapath/dp_notify.c
+++ b/
datapath/dp_notify.c
@@
-1,6
+1,6
@@
/*
* Distributed under the terms of the GNU GPL version 2.
/*
* Distributed under the terms of the GNU GPL version 2.
- * Copyright (c) 2007, 2008, 2009, 2010 Nicira Networks.
+ * Copyright (c) 2007, 2008, 2009, 2010
, 2011
Nicira Networks.
*
* Significant portions of this file may be copied from parts of the Linux
* kernel, by Linus Torvalds and others.
*
* Significant portions of this file may be copied from parts of the Linux
* kernel, by Linus Torvalds and others.
@@
-9,6
+9,7
@@
/* Handle changes to managed devices */
#include <linux/netdevice.h>
/* Handle changes to managed devices */
#include <linux/netdevice.h>
+#include <net/genetlink.h>
#include "datapath.h"
#include "vport-internal_dev.h"
#include "datapath.h"
#include "vport-internal_dev.h"
@@
-34,25
+35,30
@@
static int dp_device_event(struct notifier_block *unused, unsigned long event,
switch (event) {
case NETDEV_UNREGISTER:
if (!is_internal_dev(dev)) {
switch (event) {
case NETDEV_UNREGISTER:
if (!is_internal_dev(dev)) {
- mutex_lock(&dp->mutex);
+ struct sk_buff *reply;
+
+ reply = ovs_vport_cmd_build_info(vport, 0, 0,
+ OVS_VPORT_CMD_DEL);
dp_detach_port(vport);
dp_detach_port(vport);
- mutex_unlock(&dp->mutex);
+ if (IS_ERR(reply)) {
+ netlink_set_err(INIT_NET_GENL_SOCK, 0,
+ dp_vport_multicast_group.id,
+ PTR_ERR(reply));
+ break;
+ }
+
+ genl_notify(reply, dev_net(dev), 0,
+ dp_vport_multicast_group.id, NULL,
+ GFP_KERNEL);
}
break;
case NETDEV_CHANGENAME:
}
break;
case NETDEV_CHANGENAME:
- if (vport->port_no != ODPP_LOCAL) {
- mutex_lock(&dp->mutex);
+ if (vport->port_no != OVSP_LOCAL) {
dp_sysfs_del_if(vport);
dp_sysfs_add_if(vport);
dp_sysfs_del_if(vport);
dp_sysfs_add_if(vport);
- mutex_unlock(&dp->mutex);
}
break;
}
break;
-
- case NETDEV_CHANGEMTU:
- if (!is_internal_dev(dev))
- set_internal_devs_mtu(dp);
- break;
}
return NOTIFY_DONE;
}
}
return NOTIFY_DONE;
}