On 04/25/2018 10:04 AM, [email protected] wrote:
> Hi Andrew,
>>>>
>>> dev->fixedphy stores the fixed phydev, which will be passed to the
>>> fixed_phy_unregister routine , so I think phy_is_pseudo_fixed_link check
>> is not necessary.
>>
>> I'm saying you can get rid of dev->fixedphy, and just use
>> netdev->phydev, and phy_is_pseudo_fixed_link(netdev->phydev)
>>
> After phy_disconnect() , the netdev->phydev becomes null, but the 
> phydev->mdio instances
> are still valid. So I'm saving the phydev ptr and passing to unregister the 
> fixed phy.
> If I try to unregister first and disconnect, I see panic at sysfs remove 
> link. 
> I believe having dev->fixedphy should not cause any problem.

It still is completely unnecessary, you can do something like the following:

        struct phy_device *phydev = netdev->phydev;

        phy_disconnect(phydev);
        if (phy_is_pseudo_fixed_link(phydev))
                fixed_phy_unregister(phydev);

while netdev->phydev becomes NULL after phy_disconnect(), you retained a
reference to the original PHY device before disconnecting, in order to
unregister it. Can you see if that works?
-- 
Florian

Reply via email to