[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210614033730.46vnyemwvxjk5s5n@pengutronix.de>
Date: Mon, 14 Jun 2021 05:37:30 +0200
From: Oleksij Rempel <o.rempel@...gutronix.de>
To: Florian Fainelli <f.fainelli@...il.com>
Cc: Vladimir Oltean <olteanv@...il.com>,
Woojung Huh <woojung.huh@...rochip.com>,
Andrew Lunn <andrew@...n.ch>,
Michael Grzeschik <m.grzeschik@...gutronix.de>,
Russell King <linux@...linux.org.uk>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org,
Vivien Didelot <vivien.didelot@...il.com>,
kernel@...gutronix.de, Jakub Kicinski <kuba@...nel.org>,
UNGLinuxDriver@...rochip.com,
"David S. Miller" <davem@...emloft.net>
Subject: Re: [PATCH net-next v4 8/9] net: dsa: dsa_slave_phy_connect():
extend phy's flags with port specific phy flags
On Fri, Jun 11, 2021 at 04:26:33PM -0700, Florian Fainelli wrote:
>
>
> On 6/11/2021 12:24 PM, Vladimir Oltean wrote:
> > On Fri, Jun 11, 2021 at 09:15:26AM +0200, Oleksij Rempel wrote:
> >> This patch extends the flags of the phy that's being connected with the
> >> port specific flags of the switch port.
> >>
> >> This is needed to handle a port specific erratum of the KSZ8873 switch,
> >> which is added in a later patch.
> >>
> >> Signed-off-by: Oleksij Rempel <o.rempel@...gutronix.de>
> >> ---
> >
> > What happens differently between having this patch and not having it?
>
> The current get_phy_flags() is only processed when we connect to a PHY
> via a designed phy-handle property via phylink_of_phy_connect((, but if
> we fallback on the internal MDIO bus created by a switch and take the
> dsa_slave_phy_connect() path then we would not be processing that flag
> and using it at PHY connection time. Oleksij, your proposed patch fails
> to check that dsa_switch_ops::get_phy_flags is actually non-NULL, how
> about this approach instead where we only fetch the flags once, and we
> deal with an option get_phy_flags callback too:
ok, sounds good.
Thank you.
> diff --git a/net/dsa/slave.c b/net/dsa/slave.c
> index d4756b920108..ba7866ec946f 100644
> --- a/net/dsa/slave.c
> +++ b/net/dsa/slave.c
> @@ -1749,7 +1749,7 @@ static void dsa_slave_phylink_fixed_state(struct
> phylink_config *config,
> }
>
> /* slave device setup
> *******************************************************/
> -static int dsa_slave_phy_connect(struct net_device *slave_dev, int addr)
> +static int dsa_slave_phy_connect(struct net_device *slave_dev, int
> addr, u32 flags)
> {
> struct dsa_port *dp = dsa_slave_to_port(slave_dev);
> struct dsa_switch *ds = dp->ds;
> @@ -1760,6 +1760,8 @@ static int dsa_slave_phy_connect(struct net_device
> *slave_dev, int addr)
> return -ENODEV;
> }
>
> + slave_dev->phydev->dev_flags |= flags;
> +
> return phylink_connect_phy(dp->pl, slave_dev->phydev);
> }
>
> @@ -1804,7 +1806,7 @@ static int dsa_slave_phy_setup(struct net_device
> *slave_dev)
> /* We could not connect to a designated PHY or SFP, so
> try to
> * use the switch internal MDIO bus instead
> */
> - ret = dsa_slave_phy_connect(slave_dev, dp->index);
> + ret = dsa_slave_phy_connect(slave_dev, dp->index,
> phy_flags);
> if (ret) {
> netdev_err(slave_dev,
> "failed to connect to port %d: %d\n",
> --
> Florian
>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
Powered by blists - more mailing lists