Re: [PATCH net] net: dsa: mv88e6xxx: isolate unbridged ports

From: Andrew Lunn
Date: Wed Nov 04 2015 - 18:25:24 EST


> > +int mv88e6xxx_port_bridge_join(struct dsa_switch *ds, int port, u32 members)
> > +{
> > + struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
> > + const u16 pvid = 4000 + ds->index * DSA_MAX_PORTS + port;
> > + int err;
> > +
> > + /* The port joined a bridge, so leave its reserved VLAN */
> > + mutex_lock(&ps->smi_mutex);
> > + err = _mv88e6xxx_port_vlan_del(ds, port, pvid);
> > + if (!err)
> > + err = _mv88e6xxx_port_pvid_set(ds, port, 0);
>
> Does that mean that the following happens:
>
> - bridge is created and port joins it
> - port is configured to be in pvid 0 while joining
> - port is then configured again by the bridge layer to be in whatever
> pvid the user has decided
>
> The other question is, does that break isolation between multiple
> bridges on the same switch? Should we use the bridge ifindex here
> somehow as a pvid indication?

Hi Florian

The old code which got changed when VLAN support was added used some
property from the bridge to handle multiple bridges.

But that is probably a different bug to the one being fixed here.
This is all about using ports individually.

Andrew
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/