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

Reply via email to