mbox series

[V5,net-next,0/4] net: marvell: prestera: add MDB offloading support

Message ID 20220711112822.13725-1-oleksandr.mazur@plvision.eu (mailing list archive)
Headers show
Series net: marvell: prestera: add MDB offloading support | expand

Message

Oleksandr Mazur July 11, 2022, 11:28 a.m. UTC
This patch series adds support for the MDB handling for the marvell
Prestera Driver. It's used to propagate IGMP groups registered within
the Kernel to the underlying HW (offload registered groups).

Features:
 - define (and implement) main internal MDB-related objects;
 - define (and implement) main HW APIs for MDB handling;
 - add MDB handling support for both regular ports as well as Bond
   interfaces;
 - Mirrored behavior of Bridge driver upon multicast router appearance
   (all traffic flooded when there's no mcast router; mcast router
    receives all mcast traffic, and only group-specific registered mcast
    traffic is being received by ports who've explicitly joined any group
    when there's a registered mcast router);
 - Reworked prestera driver bridge flags (especially multicast)
   setting - thus making it possible to react over mcast disabled messages
   properly by offloading this state to the underlying HW
   (disabling multicast flooding);

Limitations:
 - Not full (partial) IGMPv3 support (due to limited switchdev
   notification capabilities:
     MDB events are being propagated only with a single MAC entry,
     while IGMPv3 has Group-Specific requests and responses);
 - It's possible that multiple IP groups would receive traffic from
   other groups, as MDB events are being propagated with a single MAC
   entry, which makes it possible to map a few IPs over same MAC;

Co-developed-by: Yevhen Orlov <yevhen.orlov@plvision.eu>
Signed-off-by: Yevhen Orlov <yevhen.orlov@plvision.eu>
Signed-off-by: Oleksandr Mazur <oleksandr.mazur@plvision.eu>

PATCH V5:
 - fix checkpatch errors (4/4).
 - remove function forward declarations, and move
   function implementations to match the removed
   forward declarations (4/4).
 - rebased changes on top of latest master.
PATCH V4:
 - fix clang warning - var uninitialized when used.
PATCH V3:
 - add missing function implementations to 2/4 (HW API implementation),
   only definitions were added int V1, V2, and implementation waas missed
   by mistake.

Reported-by: kernel test robot <lkp@intel.com>
 - fix compiletime warning (unused variable)

PATCH V2:
 - include all the patches of patch series (V1's been sent to
   closed net-next, also had not all patches included);

Oleksandr Mazur (4):
  net: marvell: prestera: rework bridge flags setting
  net: marvell: prestera: define MDB/flood domain entries and HW API to
    offload them to the HW
  net: marvell: prestera: define and implement MDB / flood domain API
    for entries creation and deletion
  net: marvell: prestera: implement software MDB entries allocation

 .../net/ethernet/marvell/prestera/prestera.h  |  47 ++
 .../ethernet/marvell/prestera/prestera_hw.c   | 256 +++++--
 .../ethernet/marvell/prestera/prestera_hw.h   |  15 +-
 .../ethernet/marvell/prestera/prestera_main.c | 191 +++++
 .../marvell/prestera/prestera_switchdev.c     | 706 +++++++++++++++++-
 5 files changed, 1124 insertions(+), 91 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org July 13, 2022, 11:20 a.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:

On Mon, 11 Jul 2022 14:28:18 +0300 you wrote:
> This patch series adds support for the MDB handling for the marvell
> Prestera Driver. It's used to propagate IGMP groups registered within
> the Kernel to the underlying HW (offload registered groups).
> 
> Features:
>  - define (and implement) main internal MDB-related objects;
>  - define (and implement) main HW APIs for MDB handling;
>  - add MDB handling support for both regular ports as well as Bond
>    interfaces;
>  - Mirrored behavior of Bridge driver upon multicast router appearance
>    (all traffic flooded when there's no mcast router; mcast router
>     receives all mcast traffic, and only group-specific registered mcast
>     traffic is being received by ports who've explicitly joined any group
>     when there's a registered mcast router);
>  - Reworked prestera driver bridge flags (especially multicast)
>    setting - thus making it possible to react over mcast disabled messages
>    properly by offloading this state to the underlying HW
>    (disabling multicast flooding);
> 
> [...]

Here is the summary with links:
  - [V5,net-next,1/4] net: marvell: prestera: rework bridge flags setting
    https://git.kernel.org/netdev/net-next/c/116f5af7c3ab
  - [V5,net-next,2/4] net: marvell: prestera: define MDB/flood domain entries and HW API to offload them to the HW
    https://git.kernel.org/netdev/net-next/c/fec7c9c73fd3
  - [V5,net-next,3/4] net: marvell: prestera: define and implement MDB / flood domain API for entries creation and deletion
    https://git.kernel.org/netdev/net-next/c/7950b214a1e4
  - [V5,net-next,4/4] net: marvell: prestera: implement software MDB entries allocation
    https://git.kernel.org/netdev/net-next/c/deef0d6afe84

You are awesome, thank you!