> +static void ftgmac100_reset_task(struct work_struct *work)
> +{
> +     struct ftgmac100 *priv = container_of(work, struct ftgmac100,
> +                                           reset_task);
> +     struct net_device *netdev = priv->netdev;
> +     int err;
> +
> +     netdev_dbg(netdev, "Resetting NIC...\n");
> +
> +     /* Block PHY polling */
> +     if (netdev->phydev)
> +             mutex_lock(&netdev->phydev->lock);
> +
> +     rtnl_lock();

Hi Ben

Have you run lockdep tests on this? I think it is normal to take the
rtnl lock first, then the phydev lock. Try some ethtool operations and
see if you get a splat.

Also, do you need to be worried about mdio operations? Do you need to
take that lock as well, since there might be other PHYs, or an
Ethernet switch on the bus?

    Andrew

Reply via email to