Re: [RFC PATCH v7 01/16] net: dsa: provide switch operations for tracking the master state

From: Vladimir Oltean
Date: Wed Jan 26 2022 - 16:00:07 EST


On Tue, Jan 25, 2022 at 07:22:51PM -0800, Florian Fainelli wrote:
>
>
> On 1/22/2022 5:33 PM, Ansuel Smith wrote:
> > From: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> >
> > Certain drivers may need to send management traffic to the switch for
> > things like register access, FDB dump, etc, to accelerate what their
> > slow bus (SPI, I2C, MDIO) can already do.
> >
> > Ethernet is faster (especially in bulk transactions) but is also more
> > unreliable, since the user may decide to bring the DSA master down (or
> > not bring it up), therefore severing the link between the host and the
> > attached switch.
> >
> > Drivers needing Ethernet-based register access already should have
> > fallback logic to the slow bus if the Ethernet method fails, but that
> > fallback may be based on a timeout, and the I/O to the switch may slow
> > down to a halt if the master is down, because every Ethernet packet will
> > have to time out. The driver also doesn't have the option to turn off
> > Ethernet-based I/O momentarily, because it wouldn't know when to turn it
> > back on.
> >
> > Which is where this change comes in. By tracking NETDEV_CHANGE,
> > NETDEV_UP and NETDEV_GOING_DOWN events on the DSA master, we should know
> > the exact interval of time during which this interface is reliably
> > available for traffic. Provide this information to switches so they can
> > use it as they wish.
> >
> > An helper is added dsa_port_master_is_operational() to check if a master
> > port is operational.

"The DSA master is able to pass traffic when it was brought
administratively up and is also operationally up. We introduce a helper
function named dsa_port_master_is_operational() which checks for the
proper conditions on a CPU port's DSA master."

> >
> > Signed-off-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> > Signed-off-by: Ansuel Smith <ansuelsmth@xxxxxxxxx>
>
> Reviewed-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
> --
> Florian