Messages in this thread | | | Date | Wed, 15 Dec 2021 11:51:46 +0200 | From | Vladimir Oltean <> | Subject | Re: [net-next PATCH RFC v6 11/16] net: dsa: qca8k: add tracking state of master port |
| |
On Tue, Dec 14, 2021 at 11:44:04PM +0100, Ansuel Smith wrote: > MDIO/MIB Ethernet require the master port and the tagger availabale to > correctly work. Use the new api master_state_change to track when master > is operational or not and set a bool in qca8k_priv. > We cache the first cached master available and we check if other cpu > port are operational when the cached one goes down. > This cached master will later be used by mdio read/write and mib request to > correctly use the working function. > > qca8k implementation for MDIO/MIB Ethernet is bad. CPU port0 is the only > one that answers with the ack packet or sends MIB Ethernet packets. For > this reason the master_state_change ignore CPU port6 and checkes only > CPU port0 if it's operational and enables this mode.
CPU port 0 may not always be wired, it depends on board design, right? So the Ethernet management protocol may or may not be available to all users.
> > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> > --- > diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h > index ab4a417b25a9..6edd6adc3063 100644 > --- a/drivers/net/dsa/qca8k.h > +++ b/drivers/net/dsa/qca8k.h > @@ -353,6 +353,7 @@ struct qca8k_priv { > struct dsa_switch_ops ops; > struct gpio_desc *reset_gpio; > unsigned int port_mtu[QCA8K_NUM_PORTS]; > + const struct net_device *master; /* Track if mdio/mib Ethernet is available */
Maybe "mgmt_master" would be a clearer naming scheme?
> }; > > struct qca8k_mib_desc { > -- > 2.33.1 >
| |