linux/net/dsa
Tobias Waldekranz 058102a6e9 net: dsa: Link aggregation support
Monitor the following events and notify the driver when:

- A DSA port joins/leaves a LAG.
- A LAG, made up of DSA ports, joins/leaves a bridge.
- A DSA port in a LAG is enabled/disabled (enabled meaning
  "distributing" in 802.3ad LACP terms).

When a LAG joins a bridge, the DSA subsystem will treat that as each
individual port joining the bridge. The driver may look at the port's
LAG device pointer to see if it is associated with any LAG, if that is
required. This is analogue to how switchdev events are replicated out
to all lower devices when reaching e.g. a LAG.

Drivers can optionally request that DSA maintain a linear mapping from
a LAG ID to the corresponding netdev by setting ds->num_lag_ids to the
desired size.

In the event that the hardware is not capable of offloading a
particular LAG for any reason (the typical case being use of exotic
modes like broadcast), DSA will take a hands-off approach, allowing
the LAG to be formed as a pure software construct. This is reported
back through the extended ACK, but is otherwise transparent to the
user.

Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Tested-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-01-14 17:11:56 -08:00
..
dsa2.c net: dsa: Link aggregation support 2021-01-14 17:11:56 -08:00
dsa_priv.h net: dsa: Link aggregation support 2021-01-14 17:11:56 -08:00
dsa.c net: dsa: remove the DSA specific notifiers 2021-01-07 15:42:07 -08:00
Kconfig net: dsa: tag_dsa: Unify regular and ethertype DSA taggers 2020-11-17 09:16:12 -08:00
Makefile net: dsa: tag_dsa: Unify regular and ethertype DSA taggers 2020-11-17 09:16:12 -08:00
master.c net: dsa: print the MTU value that could not be set 2020-12-08 11:24:07 -08:00
port.c net: dsa: Link aggregation support 2021-01-14 17:11:56 -08:00
slave.c net: dsa: Link aggregation support 2021-01-14 17:11:56 -08:00
switch.c net: dsa: Link aggregation support 2021-01-14 17:11:56 -08:00
tag_8021q.c net: dsa: tag_8021q: add VLANs to the master interface too 2020-09-20 19:01:34 -07:00
tag_ar9331.c net: dsa: tag_ar9331: let DSA core deal with TX reallocation 2020-11-02 17:41:17 -08:00
tag_brcm.c net: dsa: move the Broadcom tag information in a separate header file 2021-01-07 15:42:07 -08:00
tag_dsa.c net: dsa: tag_dsa: Use a consistent comment style 2020-11-17 09:16:12 -08:00
tag_gswip.c net: dsa: tag_gswip: let DSA core deal with TX reallocation 2020-11-02 17:41:16 -08:00
tag_hellcreek.c net: dsa: tag_hellcreek: Cleanup includes 2020-11-23 16:57:21 -08:00
tag_ksz.c net: dsa: tag_ksz: don't allocate additional memory for padding/tagging 2020-11-02 17:41:16 -08:00
tag_lan9303.c net: dsa: tag_lan9303: let DSA core deal with TX reallocation 2020-11-02 17:41:16 -08:00
tag_mtk.c net: dsa: tag_mtk: let DSA core deal with TX reallocation 2020-11-02 17:41:16 -08:00
tag_ocelot.c net: dsa: tag_ocelot: let DSA core deal with TX reallocation 2020-11-02 17:41:16 -08:00
tag_qca.c net: dsa: tag_qca: let DSA core deal with TX reallocation 2020-11-02 17:41:16 -08:00
tag_rtl4_a.c net: dsa: tag_rtl4_a: use the generic flow dissector procedure 2020-09-26 14:17:59 -07:00
tag_sja1105.c net: dsa: tag_sja1105: use a custom flow dissector procedure 2020-09-26 14:17:59 -07:00
tag_trailer.c net: dsa: trailer: don't allocate additional memory for padding/tagging 2020-11-02 17:41:16 -08:00