• Vladimir Oltean's avatar
    net: dsa: fix SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING getting ignored · 99b8202b
    Vladimir Oltean authored
    The bridge emits VLAN filtering events and quite a few others via
    switchdev with orig_dev = br->dev. After the blamed commit, these events
    started getting ignored.
    
    The point of the patch was to not offload switchdev objects for ports
    that didn't go through dsa_port_bridge_join, because the configuration
    is unsupported:
    - ports that offload a bonding/team interface go through
      dsa_port_bridge_join when that bonding/team interface is later bridged
      with another switch port or LAG
    - ports that don't offload LAG don't get notified of the bridge that is
      on top of that LAG.
    
    Sadly, a check is missing, which is that the orig_dev is equal to the
    bridge device. This check is compatible with the original intention,
    because ports that don't offload bridging because they use a software
    LAG don't have dp->bridge_dev set.
    
    On a semi-related note, we should not offload switchdev objects or
    populate dp->bridge_dev if the driver doesn't implement .port_bridge_join
    either. However there is no regression associated with that, so it can
    be done separately.
    
    Fixes: 5696c8ae ("net: dsa: Don't offload port attributes on standalone ports")
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarTobias Waldekranz <tobias@waldekranz.com>
    Tested-by: default avatarTobias Waldekranz <tobias@waldekranz.com>
    Link: https://lore.kernel.org/r/20210202233109.1591466-1-olteanv@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    99b8202b
dsa_priv.h 8.81 KB