[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <de65ec64-3e1b-447f-2fad-3f8a3a207940@huawei.com>
Date: Wed, 28 Jun 2017 08:33:12 +0800
From: Yunsheng Lin <linyunsheng@...wei.com>
To: Madalin-cristian Bucur <madalin.bucur@....com>,
"davem@...emloft.net" <davem@...emloft.net>,
"andrew@...n.ch" <andrew@...n.ch>,
"f.fainelli@...il.com" <f.fainelli@...il.com>
CC: "huangdaode@...ilicon.com" <huangdaode@...ilicon.com>,
"xuwei5@...ilicon.com" <xuwei5@...ilicon.com>,
"liguozhu@...ilicon.com" <liguozhu@...ilicon.com>,
"Yisen.Zhuang@...wei.com" <Yisen.Zhuang@...wei.com>,
"gabriele.paoloni@...wei.com" <gabriele.paoloni@...wei.com>,
"john.garry@...wei.com" <john.garry@...wei.com>,
"linuxarm@...wei.com" <linuxarm@...wei.com>,
"salil.mehta@...wei.com" <salil.mehta@...wei.com>,
"lipeng321@...wei.com" <lipeng321@...wei.com>,
"tremyfr@...il.com" <tremyfr@...il.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH NET V6 1/2] net: phy: Add phy loopback support in net phy
framework
Hi, Madalin
On 2017/6/27 19:48, Madalin-cristian Bucur wrote:
>> -----Original Message-----
>> From: netdev-owner@...r.kernel.org [mailto:netdev-owner@...r.kernel.org]
>> On Behalf Of Lin Yun Sheng
>> Sent: Tuesday, June 27, 2017 2:01 PM
>> To: davem@...emloft.net; andrew@...n.ch; f.fainelli@...il.com
>> Cc: huangdaode@...ilicon.com; xuwei5@...ilicon.com;
>> liguozhu@...ilicon.com; Yisen.Zhuang@...wei.com;
>> gabriele.paoloni@...wei.com; john.garry@...wei.com; linuxarm@...wei.com;
>> yisen.zhuang@...wei.com; salil.mehta@...wei.com; lipeng321@...wei.com;
>> tremyfr@...il.com; netdev@...r.kernel.org; linux-kernel@...r.kernel.org
>> Subject: [PATCH NET V6 1/2] net: phy: Add phy loopback support in net phy
>> framework
>>
>> This patch add set_loopback in phy_driver, which is used by Mac
>> driver to enable or disable a phy. it also add a generic
>> genphy_loopback function, which use BMCR loopback bit to enable
>> or disable a phy.
>
> "disable a phy" or disable the PHY loopback function?
It should be disable the PHY loopback function, thanks for pointing out.
>
>> @@ -1123,6 +1123,39 @@ int phy_resume(struct phy_device *phydev)
>> }
>> EXPORT_SYMBOL(phy_resume);
>>
>> +int phy_loopback(struct phy_device *phydev, bool enable)
>> +{
>> + struct phy_driver *phydrv = to_phy_driver(phydev->mdio.dev.driver);
>> + int ret = 0;
>> +
>> + mutex_lock(&phydev->lock);
>> +
>> + if (enable && phydev->loopback_enabled) {
>> + ret = -EBUSY;
>> + goto out;
>> + }
>> +
>> + if (!enable && !phydev->loopback_enabled) {
>> + ret = -EINVAL;
>> + goto out;
>> + }
>> +
>
> if (enable == phydev->loopback_enabled)
One if statement don't work here, it returns different error code.
>
>> + if (phydev->drv && phydrv->set_loopback)
>> + ret = phydrv->set_loopback(phydev, enable);
>> + else
>> + ret = -EOPNOTSUPP;
>> +
>> + if (ret)
>> + goto out;
>> +
>> + phydev->loopback_enabled = enable;
>> +
>> +out:
>> + mutex_unlock(&phydev->lock);
>> + return ret;
>> +}
>> +EXPORT_SYMBOL(phy_loopback);
>> +
>
Best Regards
Yunsheng
Powered by blists - more mailing lists