aboutsummaryrefslogtreecommitdiffstats
path: root/net/8021q/vlan.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/8021q/vlan.c')
-rw-r--r--net/8021q/vlan.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 694be86e4490..5975ec3be7f3 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -384,17 +384,35 @@ static void vlan_sync_address(struct net_device *dev,
384 memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN); 384 memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN);
385} 385}
386 386
387static void __vlan_device_event(struct net_device *dev, unsigned long event)
388{
389 switch (event) {
390 case NETDEV_CHANGENAME:
391 vlan_proc_rem_dev(dev);
392 if (vlan_proc_add_dev(dev) < 0)
393 pr_warning("8021q: failed to change proc name for %s\n",
394 dev->name);
395 break;
396 }
397}
398
387static int vlan_device_event(struct notifier_block *unused, unsigned long event, 399static int vlan_device_event(struct notifier_block *unused, unsigned long event,
388 void *ptr) 400 void *ptr)
389{ 401{
390 struct net_device *dev = ptr; 402 struct net_device *dev = ptr;
391 struct vlan_group *grp = __vlan_find_group(dev->ifindex); 403 struct vlan_group *grp;
392 int i, flgs; 404 int i, flgs;
393 struct net_device *vlandev; 405 struct net_device *vlandev;
394 406
395 if (dev_net(dev) != &init_net) 407 if (dev_net(dev) != &init_net)
396 return NOTIFY_DONE; 408 return NOTIFY_DONE;
397 409
410 if (is_vlan_dev(dev)) {
411 __vlan_device_event(dev, event);
412 goto out;
413 }
414
415 grp = __vlan_find_group(dev->ifindex);
398 if (!grp) 416 if (!grp)
399 goto out; 417 goto out;
400 418