[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CA+h21hq1O=hKbcFkNVHEBd_tTPL3o00ZhAFq5JHvSJx=+RyfFw@mail.gmail.com>
Date: Thu, 19 Sep 2019 18:36:12 +0300
From: Vladimir Oltean <olteanv@...il.com>
To: Alexandre Belloni <alexandre.belloni@...tlin.com>,
Joergen Andreasen <joergen.andreasen@...rochip.com>,
"Allan W. Nielsen" <allan.nielsen@...rochip.com>,
netdev <netdev@...r.kernel.org>
Subject: Segregating L2 forwarding domains with ocelot
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
Powered by blists - more mailing lists