mbox series

[net-next,v2,00/12] net: dsa: management mode for bcm_sf2

Message ID 20190130005548.2212-1-f.fainelli@gmail.com
Headers show
Series net: dsa: management mode for bcm_sf2 | expand

Message

Florian Fainelli Jan. 30, 2019, 12:55 a.m. UTC
Hi all,

This patch series does a number of things in order to enable management
mode for bcm_sf2 (which could be easily extended to b53 with proper
testing later on). In order to get there, there were several use cases
that did not work correctly and that needed to be fixed:

- VLAN devices on top of switch ports not being member of a bridge, with
  other switch ports being bridged, with the bridge having VLAN
  filtering enabled.

- lack of multicast filtering by default on network ports which should
  be happening in order for the non-bridged DSA ports to behave strictly
  as Ethernet NICs with proper filering. This is accomplished by hooking
  a ndo_set_rx_mode() function to the DSA slave network devices

- when VLAN filtering is globally enabled on the switch (because at
  least a bridge device requires it), then we also need to make sure
  that when doing multicast over VLAN devices over a switch port
  (bridged or not) happens with the correct MDB address *and* VID

Hopefully the changes to net/8021q and net/bridge are deemed acceptable.

The Broadcom switches have a switch-wide VLAN filtering attribute,
which is why we must always make sure there is a valid VLAN entry even
for switch ports which are not part of a bridge device, yet there is at
least one bridge device spanning the switch.

Multicast flooding can be done on a per-port basis, including for the
CPU/management port, however, once multicast reception is enabled on the
CPU port, it bypasses the ARL (Address Resolution Logic), so we receive
*all* multicast, even from ports do not have their flooding bit set,
which is unfortunate. This is the reason why we must continue adding
enough HOST_MDB notifications to let the CPU port continue to filter
multicast traffic.

Changes in v2:

- correctly propagate return from br_mc_disabled_update() called from
  br_multicast_toggle

- dropped changes to VLAN and bridge code that was pushing multicast
  entries with VID and instead refuse disabling multicast snooping in
  b53 when there is another standalone port, or that there are other
  bridged ports with multicast snooping enabled

Florian Fainelli (12):
  net: bridge: multicast: Propagate br_mc_disabled_update() return
  net: dsa: b53: Fix default VLAN ID
  net: dsa: b53: Properly account for VLAN filtering
  net: systemport: Fix reception of BPDUs
  net: dsa: b53: Define registers for IGMP snooping
  net: dsa: b53: Add support for MDB
  net: dsa: Add ability to program multicast filter for CPU port
  net: dsa: Add ndo_vlan_rx_{add,kill}_vid implementation
  net: dsa: Make VLAN filtering use DSA notifiers
  net: dsa: Wire up multicast IGMP snooping attribute notification
  net: dsa: b53: Add support for toggling IGMP snooping
  net: dsa: bcm_sf2: Enable management mode

 drivers/net/dsa/b53/b53_common.c           | 257 +++++++++++++++++++--
 drivers/net/dsa/b53/b53_priv.h             |  14 +-
 drivers/net/dsa/b53/b53_regs.h             |  22 ++
 drivers/net/dsa/bcm_sf2.c                  |  56 +++--
 drivers/net/dsa/bcm_sf2_regs.h             |   5 +
 drivers/net/ethernet/broadcom/bcmsysport.c |   4 +
 include/net/dsa.h                          |   2 +
 net/bridge/br_multicast.c                  |  23 +-
 net/dsa/dsa_priv.h                         |  22 +-
 net/dsa/port.c                             |  42 +++-
 net/dsa/slave.c                            | 107 ++++++++-
 net/dsa/switch.c                           |  57 +++++
 12 files changed, 552 insertions(+), 59 deletions(-)

Comments

Ido Schimmel Jan. 30, 2019, 7:38 a.m. UTC | #1
On Tue, Jan 29, 2019 at 04:55:36PM -0800, Florian Fainelli wrote:
> Hi all,
> 
> This patch series does a number of things in order to enable management
> mode for bcm_sf2 (which could be easily extended to b53 with proper
> testing later on). In order to get there, there were several use cases
> that did not work correctly and that needed to be fixed:
> 
> - VLAN devices on top of switch ports not being member of a bridge, with
>   other switch ports being bridged, with the bridge having VLAN
>   filtering enabled.
> 
> - lack of multicast filtering by default on network ports which should
>   be happening in order for the non-bridged DSA ports to behave strictly
>   as Ethernet NICs with proper filering. This is accomplished by hooking
>   a ndo_set_rx_mode() function to the DSA slave network devices
> 
> - when VLAN filtering is globally enabled on the switch (because at
>   least a bridge device requires it), then we also need to make sure
>   that when doing multicast over VLAN devices over a switch port
>   (bridged or not) happens with the correct MDB address *and* VID
> 
> Hopefully the changes to net/8021q and net/bridge are deemed acceptable.

You're not touching net/8021q :) Probably leftover from v1

...

> 
>  drivers/net/dsa/b53/b53_common.c           | 257 +++++++++++++++++++--
>  drivers/net/dsa/b53/b53_priv.h             |  14 +-
>  drivers/net/dsa/b53/b53_regs.h             |  22 ++
>  drivers/net/dsa/bcm_sf2.c                  |  56 +++--
>  drivers/net/dsa/bcm_sf2_regs.h             |   5 +
>  drivers/net/ethernet/broadcom/bcmsysport.c |   4 +
>  include/net/dsa.h                          |   2 +
>  net/bridge/br_multicast.c                  |  23 +-
>  net/dsa/dsa_priv.h                         |  22 +-
>  net/dsa/port.c                             |  42 +++-
>  net/dsa/slave.c                            | 107 ++++++++-
>  net/dsa/switch.c                           |  57 +++++
>  12 files changed, 552 insertions(+), 59 deletions(-)
> 
> -- 
> 2.17.1
>
David Miller Jan. 30, 2019, 10:23 p.m. UTC | #2
Florian, Ido has a question about how the driver return value is
propagated wrt. patch #1 since the operation is deferred.

Please address this.

Thanks!