Skip to content
  • Marc Kleine-Budde's avatar
    phylib: phy_attach_direct: phy_init_hw can fail, add cleanup · d005a09e
    Marc Kleine-Budde authored
    
    
    The function phy_attach_direct attaches the phy and calls phy_init_hw.
    phy_init_hw can fail, but the phy is still marked as attached. Successive
    calls to phy_attach_direct will fail because the phy is busy.
    
    [    1.020000] eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=1:00, irq=-1)
    [    1.030000] eth1: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=1:01, irq=-1)
    [    2.050000] Sending DHCP requests .
    [    3.020000] PHY: 1:00 - Link is Up - 100/Full
    [    5.110000] ..... timed out!
    [   87.660000] IP-Config: Reopening network devices...
    [   88.190000] FEC: MDIO read timeout
    [   88.190000] eth0: could not attach to PHY
    [   88.190000] IP-Config: Failed to open eth0
    [   88.210000] FEC: MDIO read timeout
    [   88.210000] eth1: could not attach to PHY
    [   88.210000] IP-Config: Failed to open eth1
    [   88.220000] IP-Config: No network devices available.
    [   88.220000] Freeing init memory: 6968K
    
    [...]
    
    starting network interfaces...
    ip: RTNETLINK answers: File exists
    [   94.000000] net eth0: PHY already attached
    [   94.010000] eth0: could not attach to PHY
    ip: SIOCSIFFLAGS: Device or resource busy
    
    This patch adds phy_detach to clean up if phy_init_hw fails.
    
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d005a09e