Hi Alex, Joergen, Allan, Currently the ocelot driver rejects enslaving switch ports to more than one bridge:
static int ocelot_port_bridge_join(struct ocelot_port *ocelot_port, struct net_device *bridge) { struct ocelot *ocelot = ocelot_port->ocelot; if (!ocelot->bridge_mask) { ocelot->hw_bridge_dev = bridge; } else { if (ocelot->hw_bridge_dev != bridge) /* This is adding the port to a second bridge, this is * unsupported */ return -ENODEV; } ocelot->bridge_mask |= BIT(ocelot_port->chip_port); return 0; } I am wondering why the ocelot driver is writing the same bridge_fwd_mask to all PGID_SRC[port] registers? Judging from the reference manual description of PGID_SRC, the hardware should be able of managing a forwarding matrix and not just a forwarding array? Regards, -Vladimir