From: Florian Fainelli <f.fainelli@gmail.com>
To: Guenter Roeck <linux@roeck-us.net>,
"David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>
Subject: Re: [PATCH] net: dsa: Set valid phy interface type
Date: Tue, 17 Feb 2015 09:04:48 -0800 [thread overview]
Message-ID: <54E374B0.5070603@gmail.com> (raw)
In-Reply-To: <1424150631-22396-1-git-send-email-linux@roeck-us.net>
On 16/02/15 21:23, Guenter Roeck wrote:
> If the phy interface mode is not found in devicetree, or if devicetree
> is not configured, of_get_phy_mode returns -ENODEV. The current code
> sets the phy interface mode to the return value from of_get_phy_mode
> without checking if it is valid.
>
> This invalid phy interface mode is passed as parameter to of_phy_connect
> or to phy_connect_direct. This sets the phy interface mode to the invalid
> value, which in turn causes problems for any code using phydev->interface.
>
> Fixes: b31f65fb4383 ("net: dsa: slave: Fix autoneg for phys on switch MDIO bus")
> Fixes: 0d8bcdd383b8 ("net: dsa: allow for more complex PHY setups")
> Cc: Florian Fainelli <f.fainelli@gmail.com>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
This is 'net' material since you are fixing a bug here, thanks!
> ---
> net/dsa/slave.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/net/dsa/slave.c b/net/dsa/slave.c
> index d104ae1..f23dead 100644
> --- a/net/dsa/slave.c
> +++ b/net/dsa/slave.c
> @@ -521,10 +521,13 @@ static int dsa_slave_phy_setup(struct dsa_slave_priv *p,
> struct device_node *phy_dn, *port_dn;
> bool phy_is_fixed = false;
> u32 phy_flags = 0;
> - int ret;
> + int mode, ret;
>
> port_dn = cd->port_dn[p->port];
> - p->phy_interface = of_get_phy_mode(port_dn);
> + mode = of_get_phy_mode(port_dn);
> + if (mode < 0)
> + mode = PHY_INTERFACE_MODE_NA;
> + p->phy_interface = mode;
>
> phy_dn = of_parse_phandle(port_dn, "phy-handle", 0);
> if (of_phy_is_fixed_link(port_dn)) {
> @@ -559,6 +562,8 @@ static int dsa_slave_phy_setup(struct dsa_slave_priv *p,
> if (!p->phy)
> return -ENODEV;
>
> + /* Use already configured phy mode */
> + p->phy_interface = p->phy->interface;
> phy_connect_direct(slave_dev, p->phy, dsa_slave_adjust_link,
> p->phy_interface);
> } else {
>
--
Florian
next prev parent reply other threads:[~2015-02-17 17:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-17 5:23 [PATCH] net: dsa: Set valid phy interface type Guenter Roeck
2015-02-17 17:04 ` Florian Fainelli [this message]
2015-02-17 18:37 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54E374B0.5070603@gmail.com \
--to=f.fainelli@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=linux@roeck-us.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.