• Vladimir Oltean's avatar
    net: bridge: add helper to replay VLANs installed on port · 22f67cdf
    Vladimir Oltean authored
    Currently this simple setup with DSA:
    
    ip link add br0 type bridge vlan_filtering 1
    ip link add bond0 type bond
    ip link set bond0 master br0
    ip link set swp0 master bond0
    
    will not work because the bridge has created the PVID in br_add_if ->
    nbp_vlan_init, and it has notified switchdev of the existence of VLAN 1,
    but that was too early, since swp0 was not yet a lower of bond0, so it
    had no reason to act upon that notification.
    
    We need a helper in the bridge to replay the switchdev VLAN objects that
    were notified since the bridge port creation, because some of them may
    have been missed.
    
    As opposed to the br_mdb_replay function, the vg->vlan_list write side
    protection is offered by the rtnl_mutex which is sleepable, so we don't
    need to queue up the objects in atomic context, we can replay them right
    away.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Acked-by: default avatarNikolay Aleksandrov <nikolay@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    22f67cdf
br_vlan.c 50.1 KB