• Scott Feldman's avatar
    bridge: use either ndo VLAN ops or switchdev VLAN ops to install MASTER vlans · 7f109539
    Scott Feldman authored
    v2:
    
    Move struct switchdev_obj automatics to inner scope where there used.
    
    v1:
    
    To maintain backward compatibility with the existing iproute2 "bridge vlan"
    command, let bridge's setlink/dellink handler call into either the port
    driver's 8021q ndo ops or the port driver's bridge_setlink/dellink ops.
    
    This allows port driver to choose 8021q ops or the newer
    bridge_setlink/dellink ops when implementing VLAN add/del filtering on the
    device.  The iproute "bridge vlan" command does not need to be modified.
    
    To summarize using the "bridge vlan" command examples, we have:
    
    1) bridge vlan add|del vid VID dev DEV
    
    Here iproute2 sets MASTER flag.  Bridge's bridge_setlink/dellink is called.
    Vlan is set on bridge for port.  If port driver implements ndo 8021q ops,
    call those to port driver can install vlan filter on device.  Otherwise, if
    port driver implements bridge_setlink/dellink ops, call those to install
    vlan filter to device.  This option only works if port is bridged.
    
    2) bridge vlan add|del vid VID dev DEV master
    
    Same as 1)
    
    3) bridge vlan add|del vid VID dev DEV self
    
    Bridge's bridge_setlink/dellink isn't called.  Port driver's
    bridge_setlink/dellink is called, if implemented.  This option works if
    port is bridged or not.  If port is not bridged, a VLAN can still be
    added/deleted to device filter using this variant.
    
    4) bridge vlan add|del vid VID dev DEV master self
    
    This is a combination of 1) and 3), but will only work if port is bridged.
    Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7f109539
br_vlan.c 16.2 KB