diff options
Diffstat (limited to 'net/8021q')
-rw-r--r-- | net/8021q/vlan.c | 3 | ||||
-rw-r--r-- | net/8021q/vlan_dev.c | 3 |
2 files changed, 3 insertions, 3 deletions
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index 718d635d3379..b2274d1fd605 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c | |||
@@ -119,6 +119,9 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head) | |||
119 | 119 | ||
120 | grp->nr_vlans--; | 120 | grp->nr_vlans--; |
121 | 121 | ||
122 | if (vlan->flags & VLAN_FLAG_GVRP) | ||
123 | vlan_gvrp_request_leave(dev); | ||
124 | |||
122 | vlan_group_set_device(grp, vlan_id, NULL); | 125 | vlan_group_set_device(grp, vlan_id, NULL); |
123 | /* Because unregister_netdevice_queue() makes sure at least one rcu | 126 | /* Because unregister_netdevice_queue() makes sure at least one rcu |
124 | * grace period is respected before device freeing, | 127 | * grace period is respected before device freeing, |
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index d174c312b7f1..58f8010e1aef 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
@@ -314,9 +314,6 @@ static int vlan_dev_stop(struct net_device *dev) | |||
314 | struct vlan_dev_info *vlan = vlan_dev_info(dev); | 314 | struct vlan_dev_info *vlan = vlan_dev_info(dev); |
315 | struct net_device *real_dev = vlan->real_dev; | 315 | struct net_device *real_dev = vlan->real_dev; |
316 | 316 | ||
317 | if (vlan->flags & VLAN_FLAG_GVRP) | ||
318 | vlan_gvrp_request_leave(dev); | ||
319 | |||
320 | dev_mc_unsync(real_dev, dev); | 317 | dev_mc_unsync(real_dev, dev); |
321 | dev_uc_unsync(real_dev, dev); | 318 | dev_uc_unsync(real_dev, dev); |
322 | if (dev->flags & IFF_ALLMULTI) | 319 | if (dev->flags & IFF_ALLMULTI) |