Skip to content

mlxsw: Multicast flood update

Jiri Pirko netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest16 patches 1 replyIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/16mlxsw: spectrum_switchdev: Change mc_router to mrouterdrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+9 -90 replies
2/16mlxsw: spectrum_switchdev: Add a ports bitmap to the mid dbdrivers/net/ethernet/mellanox/mlxsw/spectrum.h drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+18 -30 replies
3/16mlxsw: spectrum_switchdev: Remove reference count from middrivers/net/ethernet/mellanox/mlxsw/spectrum.h drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+10 -110 replies
4/16mlxsw: spectrum_switchdev: Save mids list per bridge devicedrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+24 -250 replies
5/16mlxsw: spectrum_switchdev: Break smid write functiondrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+30 -120 replies
6/16mlxsw: spectrum_switchdev: Attach mid id allocation to HW writedrivers/net/ethernet/mellanox/mlxsw/spectrum.h drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+56 -330 replies
7/16mlxsw: spectrum_switchdev: Break mid deletion into two functiondrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+20 -120 replies
8/16mlxsw: spectrum_switchdev: Don't write mids to the HW when mc is disableddrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+17 -40 replies
9/16mlxsw: spectrum_switchdev: Disable mdb when mc is disableddrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+37 -40 replies
10/16mlxsw: spectrum_switchdev: Use generic mc flood functiondrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+9 -90 replies
11/16mlxsw: spectrum_switchdev: Flood mc when mc is disabled by user flagdrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+17 -40 replies
12/16mlxsw: spectrum_switchdev: Flush the mdb when a port is being removeddrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+29 -100 replies
13/16mlxsw: spectrum_switchdev: Flood all mc packets to mrouter portsdrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+60 -50 replies
14/16mlxsw: spectrum_switchdev: Update the mdb of mrouter port changedrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+23 -00 replies
15/16mlxsw: spectrum_switchdev: Remove mrouter flood in mdb flushdrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+3 -00 replies
16/16mlxsw: spectrum_switchdev: Consider mrouter status for mdb changesdrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c+9 -40 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [patch net-next 00/16] mlxsw: Multicast flood update

From: Jiri Pirko <[email protected]>

Nogah says:

Currently, there are four erroneous flows in MC flood:
1. When MC is disabled it affects only the flood table for unregistered MC packets, but packets that match an entry in the MDB are unaffected.
2. When MC is disabled, MC packets are being sent to all the ports in the bridge (like BC and link-local MC packets) regardless of the designated flag (BR_MCAST_FLAG).
3. When a port is being deleted from a bridge it might remain in the MDB.
4. When MC is enabled packets are flooded to the mrouter ports only if they don't match any entry in the MDB, when they should always be flooded to them.

What these problems have in common is the discrepancy between how the hardware handles MDB and mcast flood, and how the driver does it. Each of these problems needs fixing either in the MDB code, or in mcast flood code, and some in both.

Patches 1-6 change the way the MDB is handled in the driver to make the following changes easier.
Patches 7-8 fix problem number 1 by removing the MDB from the HW when MC is being disabled and restoring it when it is being enabled. Patches 9-10 fix problem number 2 by offloading the flood table by the appropriate flag.
Patch 11 fixes problem number 3 by adding MDB flush to the port removal. Patches 12-14 fix problem number 4 by adding the mrouter ports to every MDB entry in the HW to mimic the wanted behaviour.

Nogah Frankel (16):
mlxsw: spectrum_switchdev: Change mc_router to mrouter
mlxsw: spectrum_switchdev: Add a ports bitmap to the mid db
mlxsw: spectrum_switchdev: Remove reference count from mid
mlxsw: spectrum_switchdev: Save mids list per bridge device
mlxsw: spectrum_switchdev: Break smid write function
mlxsw: spectrum_switchdev: Attach mid id allocation to HW write
mlxsw: spectrum_switchdev: Break mid deletion into two function
mlxsw: spectrum_switchdev: Don't write mids to the HW when mc is
disabled
mlxsw: spectrum_switchdev: Disable mdb when mc is disabled
mlxsw: spectrum_switchdev: Use generic mc flood function
mlxsw: spectrum_switchdev: Flood mc when mc is disabled by user flag
mlxsw: spectrum_switchdev: Flush the mdb when a port is being removed
mlxsw: spectrum_switchdev: Flood all mc packets to mrouter ports
mlxsw: spectrum_switchdev: Update the mdb of mrouter port change
mlxsw: spectrum_switchdev: Remove mrouter flood in mdb flush
mlxsw: spectrum_switchdev: Consider mrouter status for mdb changes

 drivers/net/ethernet/mellanox/mlxsw/spectrum.h     |   3 +-
 .../ethernet/mellanox/mlxsw/spectrum_switchdev.c   | 417 ++++++++++++++++-----
 2 files changed, 323 insertions(+), 97 deletions(-)
Signature · 1 line
2.9.5