From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jon Hunter <jonathanh@nvidia.com>
Cc: Bartosz Golaszewski <brgl@bgdev.pl>, Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
Brad Griffis <bgriffis@nvidia.com>
Subject: Re: [RESEND PATCH net-next v3 2/4] net: phy: aquantia: wait for FW reset before checking the vendor ID
Date: Tue, 30 Jul 2024 12:23:45 +0100 [thread overview]
Message-ID: <ZqjNQW5HhTUgCc5x@shell.armlinux.org.uk> (raw)
In-Reply-To: <8ac00a45-ac61-41b4-9f74-d18157b8b6bf@nvidia.com>
On Tue, Jul 30, 2024 at 10:59:59AM +0100, Jon Hunter wrote:
> Hi Bartosz,
>
> On 08/07/2024 08:50, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> >
> > Checking the firmware register before it complete the boot process makes
> > no sense, it will report 0 even if FW is available from internal memory.
> > Always wait for FW to boot before continuing or we'll unnecessarily try
> > to load it from nvmem/filesystem and fail.
> >
> > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > ---
> > drivers/net/phy/aquantia/aquantia_firmware.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/net/phy/aquantia/aquantia_firmware.c b/drivers/net/phy/aquantia/aquantia_firmware.c
> > index 0c9640ef153b..524627a36c6f 100644
> > --- a/drivers/net/phy/aquantia/aquantia_firmware.c
> > +++ b/drivers/net/phy/aquantia/aquantia_firmware.c
> > @@ -353,6 +353,10 @@ int aqr_firmware_load(struct phy_device *phydev)
> > {
> > int ret;
> > + ret = aqr_wait_reset_complete(phydev);
> > + if (ret)
> > + return ret;
> > +
> > /* Check if the firmware is not already loaded by pooling
> > * the current version returned by the PHY. If 0 is returned,
> > * no firmware is loaded.
>
>
> Although this fixed another issue we were seeing with this driver, we have
> been reviewing this change and have a question about it.
>
> According to the description for the function aqr_wait_reset_complete() this
> function is intended to give the device time to load firmware and check
> there is a valid firmware ID.
>
> If a valid firmware ID (non-zero) is detected, then
> aqr_wait_reset_complete() will return 0 (because phy_read_mmd_poll_timeout()
> returns 0 on success and -ETIMEDOUT upon a timeout).
>
> If it times out, then it would appear that with the above code we don't
> attempt to load the firmware by any other means?
I'm also wondering about aqr_wait_reset_complete(). It uses
phy_read_mmd_poll_timeout(), which prints an error message if it times
out (which means no firmware has been loaded.) If we're then going on to
attempt to load firmware, the error is not an error at all. So, I think
while phy_read_poll_timeout() is nice and convenient, we need something
like:
#define phy_read_poll_timeout_quiet(phydev, regnum, val, cond, sleep_us, \
timeout_us, sleep_before_read) \
({ \
int __ret, __val; \
__ret = read_poll_timeout(__val = phy_read, val, \
__val < 0 || (cond), \
sleep_us, timeout_us, sleep_before_read, phydev, regnum); \
if (__val < 0) \
__ret = __val; \
__ret; \
})
#define phy_read_poll_timeout(phydev, regnum, val, cond, sleep_us, \
timeout_us, sleep_before_read) \
({ \
int __ret = phy_read_poll_timeout_quiet(phydev, regnum, val, cond, \
sleep_us, timeout_us, \
sleep_before_read); \
if (__ret) \
phydev_err(phydev, "%s failed: %d\n", __func__, __ret); \
__ret; \
})
and aqr_wait_reset_complete() needs to use phy_read_poll_timeout_quiet().
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2024-07-30 11:23 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-08 7:50 [RESEND PATCH net-next v3 0/4] net: phy: aquantia: enable support for aqr115c Bartosz Golaszewski
2024-07-08 7:50 ` [RESEND PATCH net-next v3 1/4] net: phy: aquantia: rename and export aqr107_wait_reset_complete() Bartosz Golaszewski
2024-07-08 7:50 ` [RESEND PATCH net-next v3 2/4] net: phy: aquantia: wait for FW reset before checking the vendor ID Bartosz Golaszewski
2024-07-30 9:59 ` Jon Hunter
2024-07-30 11:23 ` Russell King (Oracle) [this message]
2024-08-06 11:36 ` Vladimir Oltean
2024-08-06 11:27 ` Vladimir Oltean
2024-07-08 7:50 ` [RESEND PATCH net-next v3 3/4] net: phy: aquantia: wait for the GLOBAL_CFG to start returning real values Bartosz Golaszewski
2024-07-18 12:23 ` Jon Hunter
2024-07-18 13:04 ` Bartosz Golaszewski
2024-07-18 13:29 ` Bartosz Golaszewski
2024-07-18 14:08 ` Jon Hunter
2024-07-18 14:13 ` Bartosz Golaszewski
2024-07-18 14:49 ` Jon Hunter
2024-07-18 14:59 ` Bartosz Golaszewski
2024-07-18 17:42 ` Jon Hunter
2024-07-18 19:05 ` Bartosz Golaszewski
2024-07-19 8:39 ` Jon Hunter
2024-07-19 3:41 ` Andrew Lunn
2024-07-08 7:50 ` [RESEND PATCH net-next v3 4/4] net: phy: aquantia: add support for aqr115c Bartosz Golaszewski
2024-07-10 10:20 ` [RESEND PATCH net-next v3 0/4] net: phy: aquantia: enable " patchwork-bot+netdevbpf
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=ZqjNQW5HhTUgCc5x@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=bartosz.golaszewski@linaro.org \
--cc=bgriffis@nvidia.com \
--cc=brgl@bgdev.pl \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/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).