Free resources before being disconnected from phy and calling core driver is
wrong and should not happen. It avoids a delay of 4-5s caused by the timeout of
phy_disconnect().
Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
        struct rockchip_priv_data *priv = netdev_priv(ndev);
        int err;
 
+       err = arc_emac_remove(ndev);
+
        clk_disable_unprepare(priv->refclk);
 
        if (priv->regulator)
                regulator_disable(priv->regulator);
 
-       err = arc_emac_remove(ndev);
        free_netdev(ndev);
        return err;
 }