Re: [PATCH 3/4] net: phy: aquantia: Poll for TX ready at PHY system side

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux