> @@ -1520,17 +1513,22 @@ static int smsc911x_open(struct net_device *dev)
>       unsigned int timeout;
>       unsigned int temp;
>       unsigned int intcfg;
> +     int retval;
>  
> -     /* if the phy is not yet registered, retry later*/
> +     /* find and start the given phy */
>       if (!dev->phydev) {
> -             SMSC_WARN(pdata, hw, "phy_dev is NULL");
> -             return -EAGAIN;
> +             if (smsc911x_mii_probe(dev) < 0) {
> +                     SMSC_WARN(pdata, probe, "Error starting phy");
> +                     retval = -EAGAIN;

smsc911x_mii_probe() returns an error code. It is better to use that,
than -EAGAIN, which is rather odd to start with.

> +                     goto out;
> +             }
>       }
>  
>       /* Reset the LAN911x */
>       if (smsc911x_soft_reset(pdata)) {
>               SMSC_WARN(pdata, hw, "soft reset failed");
> -             return -EIO;
> +             retval = -EIO;
> +             goto mii_free_out;

smsc911x_soft_reset() also returns an error code you should use.

This patch also seems to do quite a few different things. Please can
you break it up into multiple patches.

Thanks
        Andrew

Reply via email to