linux_dsm_epyc7002/drivers/net/phy
Marek Vasut 70e927b98b mdio_bus: Fix MDIO bus scanning in __mdiobus_register()
Since commit b74766a0a0 ("phylib: don't return NULL
from get_phy_device()") in linux-next, phy_get_device() will return
ERR_PTR(-ENODEV) instead of NULL if the PHY device ID is all ones.

This causes problem with stmmac driver and likely some other drivers
which call mdiobus_register(). I triggered this bug on SoCFPGA MCVEVK
board with linux-next 20160427 and 20160428. In case of the stmmac, if
there is no PHY node specified in the DT for the stmmac block, the stmmac
driver ( drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c function
stmmac_mdio_register() ) will call mdiobus_register() , which will
register the MDIO bus and probe for the PHY.

The mdiobus_register() resp. __mdiobus_register() iterates over all of
the addresses on the MDIO bus and calls mdiobus_scan() for each of them,
which invokes get_phy_device(). Before the aforementioned patch, the
mdiobus_scan() would return NULL if no PHY was found on a given address
and mdiobus_register() would continue and try the next PHY address. Now,
mdiobus_scan() returns ERR_PTR(-ENODEV), which is caught by the
'if (IS_ERR(phydev))' condition and the loop exits immediately if the
PHY address does not contain PHY.

Repair this by explicitly checking for the ERR_PTR(-ENODEV) and if this
error comes around, continue with the next PHY address.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: David S. Miller <davem@davemloft.net>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-05-01 20:50:08 -04:00
..
amd.c
aquantia.c
at803x.c net: phy: at803x: Request 'reset' GPIO only for AT8030 PHY 2016-03-23 13:39:25 -04:00
bcm7xxx.c net: phy: bcm7xxx: Add entries for Broadcom BCM7346 and BCM7362 2016-03-25 11:37:57 -04:00
bcm63xx.c
bcm87xx.c
bcm-cygnus.c
bcm-phy-lib.c
bcm-phy-lib.h
broadcom.c
cicada.c
davicom.c
dp83640_reg.h
dp83640.c
dp83848.c
dp83867.c
et1011c.c
fixed_phy.c fixed_phy: get_phy_device() doesn't return NULL anymore 2016-04-26 15:41:20 -04:00
icplus.c
Kconfig phy: mdio-thunder: Fix some Kconfig typos 2016-03-18 23:02:03 -04:00
lxt.c
Makefile phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses. 2016-03-14 15:27:22 -04:00
marvell.c
mdio_bus.c mdio_bus: Fix MDIO bus scanning in __mdiobus_register() 2016-05-01 20:50:08 -04:00
mdio_device.c
mdio-bcm-iproc.c
mdio-bcm-unimac.c
mdio-bitbang.c
mdio-cavium.c phy: mdio-cavium: Add missing MODULE_* annotations. 2016-03-16 19:55:37 -04:00
mdio-cavium.h phy: mdio-octeon: Refactor into two files/modules 2016-03-14 15:27:22 -04:00
mdio-gpio.c
mdio-moxart.c
mdio-mux-gpio.c
mdio-mux-mmioreg.c
mdio-mux.c net: mdio: Fix lockdep falls positive splat 2016-04-11 21:15:48 -04:00
mdio-octeon.c phy: mdio-octeon: Refactor into two files/modules 2016-03-14 15:27:22 -04:00
mdio-sun4i.c mdio-sun4i: oops in error handling in probe 2016-03-21 11:30:01 -04:00
mdio-thunder.c phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses. 2016-03-14 15:27:22 -04:00
micrel.c
microchip.c
national.c
phy_device.c phylib: don't return NULL from get_phy_device() 2016-04-26 15:41:19 -04:00
phy.c phy: add generic function to support ksetting support 2016-04-18 14:45:08 -04:00
qsemi.c
realtek.c
smsc.c
spi_ks8995.c net: phy: spi_ks8895: Don't leak references to SPI devices 2016-04-21 15:00:27 -04:00
ste10Xp.c
teranetics.c
vitesse.c