On Wed, Jun 12, 2019 at 06:33:44PM -0400, Vivien Didelot wrote: > The DSA ports must flood unknown unicast and multicast, but the switch > must not flood the CPU ports with unknown multicast, as this results > in a lot of undesirable traffic that the network stack needs to filter > in software.
What if you have configured IPv6 on the bridge device, and are expecting the multicasted IPv6 frames for neighbour discovery to work? > > Signed-off-by: Vivien Didelot <[email protected]> > --- > drivers/net/dsa/mv88e6xxx/chip.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/drivers/net/dsa/mv88e6xxx/chip.c > b/drivers/net/dsa/mv88e6xxx/chip.c > index d8d1781810e2..e412ccabd104 100644 > --- a/drivers/net/dsa/mv88e6xxx/chip.c > +++ b/drivers/net/dsa/mv88e6xxx/chip.c > @@ -2111,15 +2111,13 @@ static int mv88e6xxx_setup_message_port(struct > mv88e6xxx_chip *chip, int port) > static int mv88e6xxx_setup_egress_floods(struct mv88e6xxx_chip *chip, int > port) > { > struct dsa_switch *ds = chip->ds; > - bool flood; > + bool uc = dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port); > + bool mc = dsa_is_dsa_port(ds, port); > > - /* Upstream ports flood frames with unknown unicast or multicast DA */ > - flood = dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port); > - if (chip->info->ops->port_set_egress_floods) > - return chip->info->ops->port_set_egress_floods(chip, port, > - flood, flood); > + if (!chip->info->ops->port_set_egress_floods) > + return 0; > > - return 0; > + return chip->info->ops->port_set_egress_floods(chip, port, uc, mc); > } > > static int mv88e6xxx_serdes_power(struct mv88e6xxx_chip *chip, int port, > -- > 2.21.0 > > -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up
