This patch series adds support for the MDB handling for the marvell
Prestera Driver. It's used to propagate IGMP groups registered within
the Kernel to the underlying HW (offload registered groups).
Features:
- define (and implement) main internal MDB-related objects;
- define (and implement) main HW APIs for MDB handling;
- add MDB handling support for both regular ports as well as Bond
interfaces;
- Mirrored behavior of Bridge driver upon multicast router appearance
(all traffic flooded when there's no mcast router; mcast router
receives all mcast traffic, and only group-specific registered mcast
traffic is being received by ports who've explicitly joined any group
when there's a registered mcast router);
- Reworked prestera driver bridge flags (especially multicast)
setting - thus making it possible to react over mcast disabled messages
properly by offloading this state to the underlying HW
(disabling multicast flooding);
Limitations:
- Not full (partial) IGMPv3 support (due to limited switchdev
notification capabilities:
MDB events are being propagated only with a single MAC entry,
while IGMPv3 has Group-Specific requests and responses);
- It's possible that multiple IP groups would receive traffic from
other groups, as MDB events are being propagated with a single MAC
entry, which makes it possible to map a few IPs over same MAC;
Co-developed-by: Yevhen Orlov <[email protected]>
Signed-off-by: Yevhen Orlov <[email protected]>
Signed-off-by: Oleksandr Mazur <[email protected]>
PATCH V2:
- include all the patches of patch series (V1's been sent to
closed net-next, also had not all patches included);
Oleksandr Mazur (4):
net: marvell: prestera: rework bridge flags setting
net: marvell: prestera: define MDB/flood domain entries and HW API to
offload them to the HW
net: marvell: prestera: define and implement MDB / flood domain API
for entires creation and deletion
net: marvell: prestera: implement software MDB entries allocation
.../net/ethernet/marvell/prestera/prestera.h | 47 ++
.../ethernet/marvell/prestera/prestera_hw.c | 126 +--
.../ethernet/marvell/prestera/prestera_hw.h | 15 +-
.../ethernet/marvell/prestera/prestera_main.c | 191 +++++
.../marvell/prestera/prestera_switchdev.c | 730 +++++++++++++++++-
5 files changed, 1018 insertions(+), 91 deletions(-)
--
2.17.1