Hi Russell,
On 24/07/2023 12:57, Russell King (Oracle) wrote:
On Mon, Jul 24, 2023 at 11:29:33AM +0000, Revanth Kumar Uppala wrote:
-----Original Message-----
From: Russell King <linux@xxxxxxxxxxxxxxx>
Sent: Wednesday, June 28, 2023 7:04 PM
To: Revanth Kumar Uppala <ruppala@xxxxxxxxxx>
Cc: andrew@xxxxxxx; hkallweit1@xxxxxxxxx; netdev@xxxxxxxxxxxxxxx; linux-
tegra@xxxxxxxxxxxxxxx
Subject: Re: [PATCH 3/4] net: phy: aquantia: Poll for TX ready at PHY system side
External email: Use caution opening links or attachments
On Wed, Jun 28, 2023 at 06:13:25PM +0530, Revanth Kumar Uppala wrote:
+ /* Lane bring-up failures are seen during interface up, as interface
+ * speed settings are configured while the PHY is still initializing.
+ * To resolve this, poll until PHY system side interface gets ready
+ * and the interface speed settings are configured.
+ */
+ ret = phy_read_mmd_poll_timeout(phydev, MDIO_MMD_PHYXS,
MDIO_PHYXS_VEND_IF_STATUS,
+ val, (val & MDIO_PHYXS_VEND_IF_STATUS_TX_READY),
+ 20000, 2000000, false);
What does this actually mean when the condition succeeds? Does it mean that
the system interface is now fully configured (but may or may not have link)?
Yes, your understanding is correct.
It means that the system interface is now fully configured and has the link.
As you indicate that it also indicates that the system interface has
link, then you leave me no option but to NAK this patch, sorry. The
reason is:
... If it doesn't succeed because the system
interface doesn't have link, then that would be very bad, because _this_ function
needs to return so the MAC side can then be configured to gain link with the PHY
with the appropriate link parameters.
Essentially, if the PHY changes its host interface because the media
side has changed, we *need* the read_status() function to succeed, tell
us that the link is up, and what the parameters are for the media side
link _and_ the host side interface.
At this point, if the PHY has changed its host-side interface, then the
link with the host MAC will be _down_ because the MAC driver is not yet
aware of the new parameters for the link. read_status() has to succeed
and report the new parameters to the MAC so that the MAC (or phylink)
can reconfigure the MAC and PCS for the PHY's new operating mode.
Sorry, but NAK.
Apologies for not following up before on this and now that is has been a
year I am not sure if it is even appropriate to dig this up as opposed
to starting a new thread completely.
However, I want to resume this conversation because we have found that
this change does resolve a long-standing issue where we occasionally see
our ethernet controller fail to get an IP address.
I understand that your objection to the above change is that (per
Revanth's feedback) this change assumes interface has the link. However,
looking at the aqr107_read_status() function where this change is made
the function has the following ...
static int aqr107_read_status(struct phy_device *phydev)
{
int val, ret;
ret = aqr_read_status(phydev);
if (ret)
return ret;
if (!phydev->link || phydev->autoneg == AUTONEG_DISABLE)
return 0;
So my understanding is that if we don't have the link, then the above
test will return before we attempt to poll the TX ready status. If that
is the case, then would the change being proposed be OK?
If you prefer we re-send and restart the discussion again, versus
reviving a dead thread, that's fine and I will do just that.
Thanks
Jon
--
nvpublic