net: phy: core: use genphy version of callbacks read_status and config_aneg per default

read_status and config_aneg are the only mandatory callbacks and most
of the time the generic implementation is used by drivers.
So make the core fall back to the generic version if a driver doesn't
implement the respective callback.

Also currently the core doesn't seem to verify that drivers implement
the mandatory calls. If a driver doesn't do so we'd just get a NPE.
With this patch this potential issue doesn't exit any longer.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Heiner Kallweit
2017-11-30 23:46:19 +01:00
committed by David S. Miller
parent efbae71643
commit 00fde79532
2 changed files with 22 additions and 16 deletions

View File

@@ -493,7 +493,10 @@ static int phy_start_aneg_priv(struct phy_device *phydev, bool sync)
/* Invalidate LP advertising flags */
phydev->lp_advertising = 0;
err = phydev->drv->config_aneg(phydev);
if (phydev->drv->config_aneg)
err = phydev->drv->config_aneg(phydev);
else
err = genphy_config_aneg(phydev);
if (err < 0)
goto out_unlock;