[PATCH v2 0/3] net: marvell: prestera: add LAG support

From: Vadym Kochan
Date: Thu Jun 10 2021 - 11:43:57 EST


From: Vadym Kochan <vkochan@xxxxxxxxxxx>

The following features are supported:

- LAG basic operations
- create/delete LAG
- add/remove a member to LAG
- enable/disable member in LAG
- LAG Bridge support
- LAG VLAN support
- LAG FDB support

Limitations:

- Only HASH lag tx type is supported
- The Hash parameters are not configurable. They are applied
during the LAG creation stage.
- Enslaving a port to the LAG device that already has an
upper device is not supported.

Changes extracted from:

https://lkml.org/lkml/2021/2/3/877

and marked with "v2".

v2:

There are 2 additional preparation patches which simplifies the
netdev topology handling.

1) Initialize 'lag' with NULL in prestera_lag_create() [suggested by Vladimir Oltean]

2) Use -ENOSPC in prestera_lag_port_add() if max lag [suggested by Vladimir Oltean]
numbers were reached.

3) Do not propagate netdev events to prestera_switchdev [suggested by Vladimir Oltean]
but call bridge specific funcs. It simplifies the code.

4) Check on info->link_up in prestera_netdev_port_lower_event() [suggested by Vladimir Oltean]

5) Return -EOPNOTSUPP in prestera_netdev_port_event() in case [suggested by Vladimir Oltean]
LAG hashing mode is not supported.

6) Do not pass "lower" netdev to bridge join/leave functions. [suggested by Vladimir Oltean]
It is not need as offloading settings applied on particular
physical port. It requires to do extra upper dev lookup
in case port is in the LAG which is in the bridge on vlans add/del.

Serhiy Boiko (1):
net: marvell: prestera: add LAG support

Vadym Kochan (2):
net: marvell: prestera: move netdev topology validation to
prestera_main
net: marvell: prestera: do not propagate netdev events to
prestera_switchdev.c

.../net/ethernet/marvell/prestera/prestera.h | 30 +-
.../ethernet/marvell/prestera/prestera_hw.c | 180 +++++++++++-
.../ethernet/marvell/prestera/prestera_hw.h | 14 +
.../ethernet/marvell/prestera/prestera_main.c | 267 +++++++++++++++++-
.../marvell/prestera/prestera_switchdev.c | 163 ++++++-----
.../marvell/prestera/prestera_switchdev.h | 7 +-
6 files changed, 573 insertions(+), 88 deletions(-)

--
2.17.1