+++ /dev/null
-From c832962ac972082b3a1f89775c9d4274c8cb5670 Mon Sep 17 00:00:00 2001
-From: Oleksandr Mazur <oleksandr.mazur@plvision.eu>
-Date: Tue, 15 Feb 2022 18:53:03 +0200
-Subject: net: bridge: multicast: notify switchdev driver whenever MC processing gets disabled
-
-From: Oleksandr Mazur <oleksandr.mazur@plvision.eu>
-
-commit c832962ac972082b3a1f89775c9d4274c8cb5670 upstream.
-
-Whenever bridge driver hits the max capacity of MDBs, it disables
-the MC processing (by setting corresponding bridge option), but never
-notifies switchdev about such change (the notifiers are called only upon
-explicit setting of this option, through the registered netlink interface).
-
-This could lead to situation when Software MDB processing gets disabled,
-but this event never gets offloaded to the underlying Hardware.
-
-Fix this by adding a notify message in such case.
-
-Fixes: 147c1e9b902c ("switchdev: bridge: Offload multicast disabled")
-Signed-off-by: Oleksandr Mazur <oleksandr.mazur@plvision.eu>
-Acked-by: Nikolay Aleksandrov <nikolay@nvidia.com>
-Link: https://lore.kernel.org/r/20220215165303.31908-1-oleksandr.mazur@plvision.eu
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- net/bridge/br_multicast.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/net/bridge/br_multicast.c
-+++ b/net/bridge/br_multicast.c
-@@ -77,6 +77,9 @@ __br_multicast_add_group(struct net_brid
- static void br_multicast_find_del_pg(struct net_bridge *br,
- struct net_bridge_port_group *pg);
-
-+static int br_mc_disabled_update(struct net_device *dev, bool value,
-+ struct netlink_ext_ack *extack);
-+
- static struct net_bridge_port_group *
- br_sg_port_find(struct net_bridge *br,
- struct net_bridge_port_group_sg_key *sg_p)
-@@ -1040,6 +1043,7 @@ struct net_bridge_mdb_entry *br_multicas
- return mp;
-
- if (atomic_read(&br->mdb_hash_tbl.nelems) >= br->hash_max) {
-+ br_mc_disabled_update(br->dev, false, NULL);
- br_opt_toggle(br, BROPT_MULTICAST_ENABLED, false);
- return ERR_PTR(-E2BIG);
- }