From: Heiner Kallweit <hkallweit1@gmail.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
David Miller <davem@davemloft.net>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: Re: [PATCH net-next] net: phy: check return code when requesting PHY driver module
Date: Tue, 15 Jan 2019 22:58:15 +0100 [thread overview]
Message-ID: <a1de0637-98aa-2c47-e930-53c1a6dde0fa@gmail.com> (raw)
In-Reply-To: <a47c5dce-5b9a-6a58-a184-c0a250071b93@gmail.com>
On 15.01.2019 22:52, Heiner Kallweit wrote:
> On 15.01.2019 22:43, Andrew Lunn wrote:
>> On Tue, Jan 15, 2019 at 09:33:52PM +0100, Heiner Kallweit wrote:
>>> When requesting the PHY driver module fails we'll bind the genphy
>>> driver later. This isn't obvious to the user and may cause, depending
>>> on the PHY, different types of issues. Therefore check the return code
>>> of request_module() and inform the user in case of failure.
>>>
>>> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
>>> ---
>>> drivers/net/phy/phy_device.c | 17 +++++++++++++----
>>> 1 file changed, 13 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
>>> index a2423cbb2..1527ed0f2 100644
>>> --- a/drivers/net/phy/phy_device.c
>>> +++ b/drivers/net/phy/phy_device.c
>>> @@ -548,6 +548,17 @@ static const struct device_type mdio_bus_phy_type = {
>>> .pm = MDIO_BUS_PHY_PM_OPS,
>>> };
>>>
>>> +static void phy_request_driver_module(struct phy_device *dev, int phy_id)
>>> +{
>>> + int ret;
>>> +
>>> + ret = request_module(MDIO_MODULE_PREFIX MDIO_ID_FMT,
>>> + MDIO_ID_ARGS(phy_id));
>>> + if (IS_ENABLED(CONFIG_MODULES) && ret < 0)
>>> + phydev_err(dev, "error %d loading PHY driver module for ID 0x%08x\n",
>>> + ret, phy_id);
>>> +}
>>> +
>>> struct phy_device *phy_device_create(struct mii_bus *bus, int addr, int phy_id,
>>> bool is_c45,
>>> struct phy_c45_device_ids *c45_ids)
>>> @@ -610,12 +621,10 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, int phy_id,
>>> if (!(c45_ids->devices_in_package & (1 << i)))
>>> continue;
>>>
>>> - request_module(MDIO_MODULE_PREFIX MDIO_ID_FMT,
>>> - MDIO_ID_ARGS(c45_ids->device_ids[i]));
>>> + phy_request_driver_module(dev, c45_ids->device_ids[i]);
>>
>> Hi Heiner
>>
>> I'm not sure this is a good idea for a c45 device. It can have
>> multiple devices ids. All we really need is that a driver is loaded
>> for one of them. That driver should then be able to control all the
>> devices in the package. So i would probably only warn when all
>> request_module() calls of failed.
>>
> I explicitly check for ret < 0. If there's no PHY driver module for
> a specific PHY ID then the return code would be > 0.
> My understanding of request_module() is that a return code < 0
> is returned if something bad happens in modprobe() call as such.
>
>> Maybe it is actually better to warning when we bind the generic phy
>> driver to the PHY? That is the real problem we are trying to warn
>> about.
>>
Ah, I see. We have a misunderstanding about what is actually checked.
My intention is to check whether something failed in the usermode
helper or modprobe internally. I don't want to check whether a
PHY driver module was found for the PHY ID.
> There are several PHY's which don't need a dedicated driver because
> they work perfectly fine with the generic PHY driver. Therefore I
> think it's hard to tell between regular genphy usage and error when
> binding the genphy driver.
>
>> I also think reporting this as an error is too strong. Some PHYs are
>> happy with the generic PHY driver. So i think a warning is better than
>> an error.
>>
> As stated above, the error message isn't triggered if there's no
> PHY driver module for a PHY ID.
>
>> Andrew
>>
> Heiner
>
next prev parent reply other threads:[~2019-01-15 21:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-15 20:33 [PATCH net-next] net: phy: check return code when requesting PHY driver module Heiner Kallweit
2019-01-15 21:43 ` Andrew Lunn
2019-01-15 21:52 ` Heiner Kallweit
2019-01-15 21:58 ` Heiner Kallweit [this message]
2019-01-15 22:40 ` Andrew Lunn
2019-01-15 22:32 ` Florian Fainelli
2019-01-16 6:06 ` Heiner Kallweit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a1de0637-98aa-2c47-e930-53c1a6dde0fa@gmail.com \
--to=hkallweit1@gmail.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).