• Fabio Estevam's avatar
    smsc95xx: Ignore -ENODEV errors when device is unplugged · c70c453a
    Fabio Estevam authored
    According to Documentation/driver-api/usb/URB.rst when a device
    is unplugged usb_submit_urb() returns -ENODEV.
    
    This error code propagates all the way up to usbnet_read_cmd() and
    usbnet_write_cmd() calls inside the smsc95xx.c driver during
    Ethernet cable unplug, unbind or reboot.
    
    This causes the following errors to be shown on reboot, for example:
    
    ci_hdrc ci_hdrc.1: remove, state 1
    usb usb2: USB disconnect, device number 1
    usb 2-1: USB disconnect, device number 2
    usb 2-1.1: USB disconnect, device number 3
    smsc95xx 2-1.1:1.0 eth1: unregister 'smsc95xx' usb-ci_hdrc.1-1.1, smsc95xx USB 2.0 Ethernet
    smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
    smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
    smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
    smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
    smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
    smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
    smsc95xx 2-1.1:1.0 eth1: hardware isn't capable of remote wakeup
    usb 2-1.4: USB disconnect, device number 4
    ci_hdrc ci_hdrc.1: USB bus 2 deregistered
    ci_hdrc ci_hdrc.0: remove, state 4
    usb usb1: USB disconnect, device number 1
    ci_hdrc ci_hdrc.0: USB bus 1 deregistered
    imx2-wdt 30280000.watchdog: Device shutdown: Expect reboot!
    reboot: Restarting system
    
    Ignore the -ENODEV errors inside __smsc95xx_mdio_read() and
    __smsc95xx_phy_wait_not_busy() and do not print error messages
    when -ENODEV is returned.
    
    Fixes: a049a30f ("net: usb: Correct PHY handling of smsc95xx")
    Signed-off-by: default avatarFabio Estevam <festevam@denx.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c70c453a
smsc95xx.c 51.1 KB