[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2d6e5cdd-bcfb-1632-1458-38d506e15b82@windriver.com>
Date: Thu, 17 Nov 2022 12:39:45 +0800
From: "Wang, Xiaolei" <xiaolei.wang@...driver.com>
To: Florian Fainelli <f.fainelli@...il.com>, andrew@...n.ch,
hkallweit1@...il.com, linux@...linux.org.uk, davem@...emloft.net,
edumazet@...gle.com, kuba@...nel.org, pabeni@...hat.com
Cc: netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] net: phy: Add link between phy dev and mac dev
On 11/17/2022 7:22 AM, Florian Fainelli wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender
> and know the content is safe.
>
> On 11/16/22 06:43, Xiaolei Wang wrote:
>> The external phy used by current mac interface
>> is managed by another mac interface, so we should
>> create a device link between phy dev and mac dev.
>>
>> Signed-off-by: Xiaolei Wang <xiaolei.wang@...driver.com>
>> ---
>> drivers/net/phy/phy.c | 20 ++++++++++++++++++++
>> include/linux/phy.h | 1 +
>> 2 files changed, 21 insertions(+)
>>
>> diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
>> index e741d8aebffe..0ef6b69026c7 100644
>> --- a/drivers/net/phy/phy.c
>> +++ b/drivers/net/phy/phy.c
>> @@ -35,6 +35,7 @@
>> #include <net/netlink.h>
>> #include <net/genetlink.h>
>> #include <net/sock.h>
>> +#include <linux/of_mdio.h>
>>
>> #define PHY_STATE_TIME HZ
>>
>> @@ -1535,3 +1536,22 @@ int phy_ethtool_nway_reset(struct net_device
>> *ndev)
>> return phy_restart_aneg(phydev);
>> }
>> EXPORT_SYMBOL(phy_ethtool_nway_reset);
>> +
>> +/**
>> + * The external phy used by current mac interface is managed by
>> + * another mac interface, so we should create a device link between
>> + * phy dev and mac dev.
>> + */
>> +void phy_mac_link_add(struct device_node *phy_np, struct net_device
>> *ndev)
>> +{
>> + struct phy_device *phy_dev = of_phy_find_device(phy_np);
>> + struct device *dev = phy_dev ? &phy_dev->mdio.dev : NULL;
>> +
>> + if (dev && ndev->dev.parent != dev)
>> + device_link_add(ndev->dev.parent, dev,
>> + DL_FLAG_PM_RUNTIME);
>
> Where is the matching device_link_del()?
Hi
Oh, what do you mean when some modules are uninstalled, should we delete
the link?
My original idea was to wait for the dev (consumer or supplier) to be
unregistered and automatically deleted, I read the comment of
device_link_add, if DL_FLAG_STATELESS is not set, the caller of this
function will completely hand over the management of the link to the
driver core, then The link will remain until one of the devices it
points to (consumer or provider) is unregistered.
thanks
xiaolei
> --
> Florian
>
Powered by blists - more mailing lists