• Vladimir Oltean's avatar
    net: dsa: Unset vlan_filtering when ports leave the bridge · d371b7c9
    Vladimir Oltean authored
    When ports are standalone (after they left the bridge), they should have
    no VLAN filtering semantics (they should pass all traffic to the CPU).
    Currently this is not true for switchdev drivers, because the bridge
    "forgets" to unset that.
    
    Normally one would think that doing this at the bridge layer would be a
    better idea, i.e. call br_vlan_filter_toggle() from br_del_if(), similar
    to how nbp_vlan_init() is called from br_add_if().
    
    However what complicates that approach, and makes this one preferable,
    is the fact that for the bridge core, vlan_filtering is a per-bridge
    setting, whereas for switchdev/DSA it is per-port. Also there are
    switches where the setting is per the entire device, and unsetting
    vlan_filtering one by one, for each leaving port, would not be possible
    from the bridge core without a certain level of awareness. So do this in
    DSA and let drivers be unaware of it.
    Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d371b7c9
switch.c 9.6 KB