On Sun, 2016-05-08 at 23:44 +0200, Philippe Reynes wrote:
The private structure contain a pointer to phydev, but the structure
net_device already contain such pointer. So we can remove the pointer
phydev in the private structure, and update the driver to use the one
contained in struct net_device.
But there is no central code that updates the pointer, so:
[...]
@@ -1928,7 +1926,6 @@ static int fec_enet_mii_probe(struct net_device *ndev)
phy_dev->advertising = phy_dev->supported;
- fep->phy_dev = phy_dev;
you need to assign ndev->phydev here
[...]
@@ -2875,8 +2869,7 @@ fec_enet_close(struct net_device *ndev)[...]
fec_stop(ndev);
}
- phy_disconnect(fep->phy_dev);
- fep->phy_dev = NULL;
+ phy_disconnect(ndev->phydev);
and you need to set it to NULL here.
Ben.