Merge branch 'mlxsw-Multicast-flood-update'
authorDavid S. Miller <davem@davemloft.net>
Thu, 21 Sep 2017 01:03:13 +0000 (18:03 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Sep 2017 01:03:13 +0000 (18:03 -0700)
commit908a23efb76eed04f5b5173ecf09b6cbd05d886b
treeca6f615c753f08045cd11d5cece24d00e9741a25
parent34929cb4d691f7f9e217ba0e3f536978cd56aa6c
parentded711c87a0411a7f3f56f8c575d7b642ee0110e
Merge branch 'mlxsw-Multicast-flood-update'

Jiri Pirko says:

====================
mlxsw: Multicast flood update

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.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>