• Vladimir Oltean's avatar
    net: dsa: track the number of switches in a tree · 5b22d366
    Vladimir Oltean authored
    In preparation of supporting data plane forwarding on behalf of a
    software bridge, some drivers might need to view bridges as virtual
    switches behind the CPU port in a cross-chip topology.
    
    Give them some help and let them know how many physical switches there
    are in the tree, so that they can count the virtual switches starting
    from that number on.
    
    Note that the first dsa_switch_ops method where this information is
    reliably available is .setup(). This is because of how DSA works:
    in a tree with 3 switches, each calling dsa_register_switch(), the first
    2 will advance until dsa_tree_setup() -> dsa_tree_setup_routing_table()
    and exit with error code 0 because the topology is not complete. Since
    probing is parallel at this point, one switch does not know about the
    existence of the other. Then the third switch comes, and for it,
    dsa_tree_setup_routing_table() returns complete = true. This switch goes
    ahead and calls dsa_tree_setup_switches() for everybody else, calling
    their .setup() methods too. This acts as the synchronization point.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5b22d366
dsa2.c 31.7 KB