Message ID | 1532358375-8146-1-git-send-email-camelia.groza@nxp.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] net: phy: prevent PHYs w/o Clause 22 regs from calling genphy_config_aneg | expand |
On Mon, Jul 23, 2018 at 06:06:15PM +0300, Camelia Groza wrote: > genphy_config_aneg() should be called only by PHYs that implement > the Clause 22 register set. Prevent Clause 45 PHYs that don't implement > the register set from calling the genphy function. > > Signed-off-by: Camelia Groza <camelia.groza@nxp.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
From: Camelia Groza <camelia.groza@nxp.com> Date: Mon, 23 Jul 2018 18:06:15 +0300 > genphy_config_aneg() should be called only by PHYs that implement > the Clause 22 register set. Prevent Clause 45 PHYs that don't implement > the register set from calling the genphy function. > > Signed-off-by: Camelia Groza <camelia.groza@nxp.com> Applied, thank you.
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index efa0a3c..6049652 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -471,8 +471,14 @@ static int phy_config_aneg(struct phy_device *phydev) { if (phydev->drv->config_aneg) return phydev->drv->config_aneg(phydev); - else - return genphy_config_aneg(phydev); + + /* Clause 45 PHYs that don't implement Clause 22 registers are not + * allowed to call genphy_config_aneg() + */ + if (phydev->is_c45 && !(phydev->c45_ids.devices_in_package & BIT(0))) + return -EOPNOTSUPP; + + return genphy_config_aneg(phydev); } /**
genphy_config_aneg() should be called only by PHYs that implement the Clause 22 register set. Prevent Clause 45 PHYs that don't implement the register set from calling the genphy function. Signed-off-by: Camelia Groza <camelia.groza@nxp.com> --- drivers/net/phy/phy.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)