From: Jiri Pirko <j...@mellanox.com> Nogah says:
When multicast is enabled, the Linux bridge floods unregistered multicast packets only to ports connected to a multicast router. Devices capable of offloading the Linux bridge need to be made aware of such ports, for proper flooding behavior. On the other hand, when multicast is disabled, such packets should be flooded to all ports. This patchset aims to fix that, by offloading the multicast state and the list of multicast router ports. The first 3 patches adds switchdev attributes to offload this data. The rest of the patchset add implementation for handling this data in the mlxsw driver. The effects this data has on the MDB (namely, when the multicast is disabled the MDB should be considered as invalid, and when it is enabled, a packet that is flooded by it should also be flooded to the multicast routers ports) is subject of future work. Testing of this patchset included: Sending 3 mc packets streams, LL, register and unregistered, and checking that they reached only to the ports that should have received them. The configs were: mc disabled, mc without mc router ports and mc with fixed router port. It was checked for vlan aware bridge, vlan unaware bridge and vlan unaware bridge with another vlan unaware bridge on the same machine Nogah Frankel (10): switchdev: bridge: Offload multicast disabled bridge: mcast: Merge the mc router ports deletions to one function switchdev: bridge: Offload mc router ports mlxsw: spectrum: Break flood set func to be per table mlxsw: spectrum: Make port flood update more generic mlxsw: spectrum: Change max vfid mlxsw: spectrum: Separate bc and mc floods mlxsw: spectrum: Add an option to flood mc by mc_router_port mlxsw: spectrum: Extend port_orig_get for bridge devices mlxsw: spectrum: Update mc_disabled flag by switchdev attr drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 29 +++- drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 10 +- .../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 154 +++++++++++++++++---- include/net/switchdev.h | 4 + net/bridge/br_multicast.c | 55 ++++++-- 5 files changed, 198 insertions(+), 54 deletions(-) -- 2.7.4