lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <bb949d68-3229-45b8-964c-54ccf812f6f8@nvidia.com>
Date: Fri, 19 Jul 2024 14:27:24 +0100
From: Jon Hunter <jonathanh@...dia.com>
To: "Russell King (Oracle)" <linux@...linux.org.uk>,
 Revanth Kumar Uppala <ruppala@...dia.com>
Cc: "andrew@...n.ch" <andrew@...n.ch>,
 "hkallweit1@...il.com" <hkallweit1@...il.com>,
 "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
 "linux-tegra@...r.kernel.org" <linux-tegra@...r.kernel.org>
Subject: Re: [PATCH 3/4] net: phy: aquantia: Poll for TX ready at PHY system
 side

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@...linux.org.uk>
>>> Sent: Wednesday, June 28, 2023 7:04 PM
>>> To: Revanth Kumar Uppala <ruppala@...dia.com>
>>> Cc: andrew@...n.ch; hkallweit1@...il.com; netdev@...r.kernel.org; linux-
>>> tegra@...r.kernel.org
>>> 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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ