2 * Distributed under the terms of the GNU GPL version 2.
3 * Copyright (c) 2007, 2008, 2009, 2010 Nicira Networks.
5 * Significant portions of this file may be copied from parts of the Linux
6 * kernel, by Linus Torvalds and others.
9 /* Handle changes to managed devices */
11 #include <linux/netdevice.h>
14 #include "vport-internal_dev.h"
15 #include "vport-netdev.h"
17 static int dp_device_event(struct notifier_block *unused, unsigned long event,
20 struct net_device *dev = ptr;
24 if (is_internal_dev(dev))
25 vport = internal_dev_get_vport(dev);
27 vport = netdev_get_vport(dev);
35 case NETDEV_UNREGISTER:
36 if (!is_internal_dev(dev)) {
37 mutex_lock(&dp->mutex);
38 dp_detach_port(vport);
39 mutex_unlock(&dp->mutex);
43 case NETDEV_CHANGENAME:
44 if (vport->port_no != ODPP_LOCAL) {
45 mutex_lock(&dp->mutex);
46 dp_sysfs_del_if(vport);
47 dp_sysfs_add_if(vport);
48 mutex_unlock(&dp->mutex);
52 case NETDEV_CHANGEMTU:
53 if (!is_internal_dev(dev))
54 set_internal_devs_mtu(dp);
60 struct notifier_block dp_device_notifier = {
61 .notifier_call = dp_device_event