Prevent the MDB replay logic from racing with the IGMP/MLD snooping logic, which can otherwise cause the bridge to generate replays of events that will also be delivered as regular events. The log message of 2/2 has all the details. We choose to preserve events in the deferred queue, eliding the corresponding replay instead of the opposite. This is important because purging the deferred event instead, would rob other listeners of of that event entirely. I.e., regular events are "broadcast" to all listeners, while replays are "unicast" only to the port joining or leaving the bridge. br0 / \ sw1p0 sw2p0 (hwdom 1) (hwdom 2) In a setup like above, it is vital that sw1p0 learns about all group memberships on sw2p0, since it may want to translate such memberships to host equivalents, in order to let the bridge sofware forward them to ports in other hardware domains. Tobias Waldekranz (2): net: switchdev: Add helper to check if an object event is pending net: bridge: switchdev: Skip MDB replays of pending events include/net/switchdev.h | 3 ++ net/bridge/br_switchdev.c | 44 +++++++++++++++++----------- net/switchdev/switchdev.c | 61 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 17 deletions(-) -- 2.34.1