|
@@ -86,13 +86,6 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head)
|
|
|
|
|
|
grp = &vlan_info->grp;
|
|
|
|
|
|
- /* Take it out of our own structures, but be sure to interlock with
|
|
|
- * HW accelerating devices or SW vlan input packet processing if
|
|
|
- * VLAN is not 0 (leave it there for 802.1p).
|
|
|
- */
|
|
|
- if (vlan_id)
|
|
|
- vlan_vid_del(real_dev, vlan_id);
|
|
|
-
|
|
|
grp->nr_vlan_devs--;
|
|
|
|
|
|
if (vlan->flags & VLAN_FLAG_MVRP)
|
|
@@ -114,6 +107,13 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head)
|
|
|
vlan_gvrp_uninit_applicant(real_dev);
|
|
|
}
|
|
|
|
|
|
+ /* Take it out of our own structures, but be sure to interlock with
|
|
|
+ * HW accelerating devices or SW vlan input packet processing if
|
|
|
+ * VLAN is not 0 (leave it there for 802.1p).
|
|
|
+ */
|
|
|
+ if (vlan_id)
|
|
|
+ vlan_vid_del(real_dev, vlan_id);
|
|
|
+
|
|
|
/* Get rid of the vlan's reference to real_dev */
|
|
|
dev_put(real_dev);
|
|
|
}
|