]> Pileus Git - ~andy/linux/blobdiff - net/bridge/br_vlan.c
bridge: Call vlan_vid_del for all vids at nbp_vlan_flush
[~andy/linux] / net / bridge / br_vlan.c
index 57074be62fcbcb49ecdef2dc6118c9fae1e1380e..af5ebd18d7059f2d0cc289e226c544f210309dc2 100644 (file)
@@ -390,6 +390,7 @@ int nbp_vlan_delete(struct net_bridge_port *port, u16 vid)
 void nbp_vlan_flush(struct net_bridge_port *port)
 {
        struct net_port_vlans *pv;
+       u16 vid;
 
        ASSERT_RTNL();
 
@@ -397,6 +398,9 @@ void nbp_vlan_flush(struct net_bridge_port *port)
        if (!pv)
                return;
 
+       for_each_set_bit(vid, pv->vlan_bitmap, VLAN_N_VID)
+               vlan_vid_del(port->dev, htons(ETH_P_8021Q), vid);
+
        __vlan_flush(pv);
 }