From: Choong Yong Liang <yong.liang.choong@linux.intel.com>
To: Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>
Cc: Russell King <linux@armlinux.org.uk>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Jose Abreu <joabreu@synopsys.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH net v1 1/2] net: phy: Introduce phy_update_eee() to update eee_cfg values
Date: Wed, 13 Nov 2024 18:10:55 +0800 [thread overview]
Message-ID: <eb937669-d4ce-4b72-bcae-0660e1345b76@linux.intel.com> (raw)
In-Reply-To: <71b6be0e-426f-4fb4-9d28-27c55d5afa51@lunn.ch>
On 12/11/2024 9:04 pm, Andrew Lunn wrote:
> On Tue, Nov 12, 2024 at 12:03:15PM +0100, Heiner Kallweit wrote:
>> In stmmac_ethtool_op_get_eee() you have the following:
>>
>> edata->tx_lpi_timer = priv->tx_lpi_timer;
>> edata->tx_lpi_enabled = priv->tx_lpi_enabled;
>> return phylink_ethtool_get_eee(priv->phylink, edata);
>>
>> You have to call phylink_ethtool_get_eee() first, otherwise the manually
>> set values will be overridden. However setting tx_lpi_enabled shouldn't
>> be needed if you respect phydev->enable_tx_lpi.
>
> I agree with Heiner here, this sounds like a bug somewhere, not
> something which needs new code in phylib. Lets understand why it gives
> the wrong results.
>
> Andrew
Hi Russell, Andrew, and Heiner, thanks a lot for your valuable feedback.
The current implementation of the 'ethtool --show-eee' command heavily
relies on the phy_ethtool_get_eee() in phy.c. The eeecfg values are set by
the 'ethtool --set-eee' command and the phy_support_eee() during the
initial state. The phy_ethtool_get_eee() calls eeecfg_to_eee(), which
returns the eeecfg containing tx_lpi_timer, tx_lpi_enabled, and eee_enable
for the 'ethtool --show-eee' command.
The tx_lpi_timer and tx_lpi_enabled values stored in the MAC or PHY driver
are not retrieved by the 'ethtool --show-eee' command.
Currently, we are facing 3 issues:
1. When we boot up our system and do not issue the 'ethtool --set-eee'
command, and then directly issue the 'ethtool --show-eee' command, it
always shows that EEE is disabled due to the eeecfg values not being set.
However, in the Maxliner GPY PHY, the driver EEE is enabled. If we try to
disable EEE, nothing happens because the eeecfg matches the setting
required to disable EEE in ethnl_set_eee(). The phy_support_eee() was
introduced to set the initial values to enable eee_enabled and
tx_lpi_enabled. This would allow 'ethtool --show-eee' to show that EEE is
enabled during the initial state. However, the Marvell PHY is designed to
have hardware disabled EEE during the initial state. Users are required to
use Ethtool to enable the EEE. phy_support_eee() does not show the correct
for Marvell PHY.
2. The 'ethtool --show-eee' command does not display the correct status,
even if the link is down or the speed changes to one that does not support EEE.
3. The tx_lpi_timer in 'ethtool --show-eee' always shows 0 if we have not
used 'ethtool --set-eee' to set the values, even though the driver sets
different values.
I appreciate Russell's point that eee_enabled is a user configuration bit,
not a status bit. However, I am curious if tx_lpi_timer, tx_lpi_enabled,
and other fields are also considered configuration bits.
According to the ethtool man page:
--show-eee
Queries the specified network device for its support of Energy-Efficient
Ethernet (according to the IEEE 802.3az specifications)
It does not specify which fields are configuration bits and which are
status bits.
next prev parent reply other threads:[~2024-11-13 10:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-12 7:24 [PATCH net v1 0/2] Fix ethtool --show-eee for stmmac Choong Yong Liang
2024-11-12 7:24 ` [PATCH net v1 1/2] net: phy: Introduce phy_update_eee() to update eee_cfg values Choong Yong Liang
2024-11-12 11:03 ` Heiner Kallweit
2024-11-12 13:04 ` Andrew Lunn
2024-11-13 10:10 ` Choong Yong Liang [this message]
2024-11-13 21:48 ` Heiner Kallweit
2024-11-14 4:35 ` Choong Yong Liang
2024-11-13 23:05 ` Andrew Lunn
2024-11-14 4:37 ` Choong Yong Liang
2024-11-14 9:02 ` Russell King (Oracle)
2024-11-14 9:12 ` Russell King (Oracle)
2024-11-14 10:15 ` Russell King (Oracle)
2024-11-12 7:24 ` [PATCH net v1 2/2] net: stmmac: update eee_cfg after mac link up/down Choong Yong Liang
2024-11-12 9:24 ` [PATCH net v1 0/2] Fix ethtool --show-eee for stmmac Russell King (Oracle)
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=eb937669-d4ce-4b72-bcae-0660e1345b76@linux.intel.com \
--to=yong.liang.choong@linux.intel.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=joabreu@synopsys.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux@armlinux.org.uk \
--cc=mcoquelin.stm32@gmail.com \
--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).