1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/net/dsa
Vladimir Oltean 5b22d3669f net: dsa: track the number of switches in a tree
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: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-07-23 16:32:37 +01:00
..
dsa.c net: dsa: allow changing the tag protocol via the "tagging" device attribute 2021-01-29 21:24:39 -08:00
dsa2.c net: dsa: track the number of switches in a tree 2021-07-23 16:32:37 +01:00
dsa_priv.h net: bridge: move the switchdev object replay helpers to "push" mode 2021-07-22 00:26:23 -07:00
Kconfig net: dsa: build tag_8021q.c as part of DSA core 2021-07-20 06:36:42 -07:00
Makefile net: dsa: build tag_8021q.c as part of DSA core 2021-07-20 06:36:42 -07:00
master.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
port.c net: bridge: switchdev: allow the TX data plane forwarding to be offloaded 2021-07-23 16:32:37 +01:00
slave.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-07-23 16:13:06 +01:00
switch.c net: dsa: tag_8021q: add proper cross-chip notifier support 2021-07-20 06:36:42 -07:00
tag_8021q.c net: dsa: tag_8021q: add proper cross-chip notifier support 2021-07-20 06:36:42 -07:00
tag_ar9331.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_brcm.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_dsa.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_gswip.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_hellcreek.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_ksz.c net: dsa: tag_ksz: dont let the hardware process the layer 4 checksum 2021-07-21 23:14:49 -07:00
tag_lan9303.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_mtk.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_ocelot.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_ocelot_8021q.c net: dsa: sja1105: delete the best_effort_vlan_filtering mode 2021-07-20 06:36:42 -07:00
tag_qca.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_rtl4_a.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_sja1105.c net: dsa: sja1105: delete the best_effort_vlan_filtering mode 2021-07-20 06:36:42 -07:00
tag_trailer.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00
tag_xrs700x.c net: dsa: generalize overhead for taggers that use both headers and trailers 2021-06-11 12:45:38 -07:00