* [PATCH RESUBMIT net-next] r8169: simplify EEE handling
@ 2024-01-31 20:31 Heiner Kallweit
2024-02-02 0:16 ` Andrew Lunn
2024-02-03 5:10 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 8+ messages in thread
From: Heiner Kallweit @ 2024-01-31 20:31 UTC (permalink / raw)
To: Realtek linux nic maintainers, Jakub Kicinski, David Miller,
Paolo Abeni, Eric Dumazet
Cc: netdev@vger.kernel.org
We don't have to store the EEE modes to be advertised in the driver,
phylib does this for us and stores it in phydev->advertising_eee.
phylib also takes care of properly handling the EEE advertisement.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/net/ethernet/realtek/r8169_main.c | 32 +++--------------------
1 file changed, 4 insertions(+), 28 deletions(-)
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 3d30d4499..e0abdbcfa 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -629,7 +629,6 @@ struct rtl8169_private {
struct rtl8169_counters *counters;
struct rtl8169_tc_offsets tc_offset;
u32 saved_wolopts;
- int eee_adv;
const char *fw_name;
struct rtl_fw *rtl_fw;
@@ -1987,17 +1986,11 @@ static int rtl8169_get_eee(struct net_device *dev, struct ethtool_keee *data)
static int rtl8169_set_eee(struct net_device *dev, struct ethtool_keee *data)
{
struct rtl8169_private *tp = netdev_priv(dev);
- int ret;
if (!rtl_supports_eee(tp))
return -EOPNOTSUPP;
- ret = phy_ethtool_set_eee(tp->phydev, data);
-
- if (!ret)
- tp->eee_adv = phy_read_mmd(dev->phydev, MDIO_MMD_AN,
- MDIO_AN_EEE_ADV);
- return ret;
+ return phy_ethtool_set_eee(tp->phydev, data);
}
static void rtl8169_get_ringparam(struct net_device *dev,
@@ -2062,21 +2055,6 @@ static const struct ethtool_ops rtl8169_ethtool_ops = {
.set_pauseparam = rtl8169_set_pauseparam,
};
-static void rtl_enable_eee(struct rtl8169_private *tp)
-{
- struct phy_device *phydev = tp->phydev;
- int adv;
-
- /* respect EEE advertisement the user may have set */
- if (tp->eee_adv >= 0)
- adv = tp->eee_adv;
- else
- adv = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_PCS_EEE_ABLE);
-
- if (adv >= 0)
- phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, adv);
-}
-
static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
{
/*
@@ -2313,9 +2291,6 @@ static void rtl8169_init_phy(struct rtl8169_private *tp)
/* We may have called phy_speed_down before */
phy_speed_up(tp->phydev);
- if (rtl_supports_eee(tp))
- rtl_enable_eee(tp);
-
genphy_soft_reset(tp->phydev);
}
@@ -5058,7 +5033,9 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
}
tp->phydev->mac_managed_pm = true;
-
+ if (rtl_supports_eee(tp))
+ linkmode_copy(tp->phydev->advertising_eee,
+ tp->phydev->supported_eee);
phy_support_asym_pause(tp->phydev);
/* PHY will be woken up in rtl_open() */
@@ -5193,7 +5170,6 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
tp->dev = dev;
tp->pci_dev = pdev;
tp->supports_gmii = ent->driver_data == RTL_CFG_NO_GBIT ? 0 : 1;
- tp->eee_adv = -1;
tp->ocp_base = OCP_STD_PHY_BASE;
raw_spin_lock_init(&tp->cfg9346_usage_lock);
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH RESUBMIT net-next] r8169: simplify EEE handling
2024-01-31 20:31 [PATCH RESUBMIT net-next] r8169: simplify EEE handling Heiner Kallweit
@ 2024-02-02 0:16 ` Andrew Lunn
2024-02-02 6:55 ` Heiner Kallweit
2024-02-03 5:10 ` patchwork-bot+netdevbpf
1 sibling, 1 reply; 8+ messages in thread
From: Andrew Lunn @ 2024-02-02 0:16 UTC (permalink / raw)
To: Heiner Kallweit
Cc: Realtek linux nic maintainers, Jakub Kicinski, David Miller,
Paolo Abeni, Eric Dumazet, netdev@vger.kernel.org
> @@ -5058,7 +5033,9 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
> }
>
> tp->phydev->mac_managed_pm = true;
> -
> + if (rtl_supports_eee(tp))
> + linkmode_copy(tp->phydev->advertising_eee,
> + tp->phydev->supported_eee);
This looks odd. Does it mean something is missing on phylib?
Andrew
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH RESUBMIT net-next] r8169: simplify EEE handling
2024-02-02 0:16 ` Andrew Lunn
@ 2024-02-02 6:55 ` Heiner Kallweit
2024-02-02 13:12 ` Andrew Lunn
0 siblings, 1 reply; 8+ messages in thread
From: Heiner Kallweit @ 2024-02-02 6:55 UTC (permalink / raw)
To: Andrew Lunn
Cc: Realtek linux nic maintainers, Jakub Kicinski, David Miller,
Paolo Abeni, Eric Dumazet, netdev@vger.kernel.org
On 02.02.2024 01:16, Andrew Lunn wrote:
>> @@ -5058,7 +5033,9 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
>> }
>>
>> tp->phydev->mac_managed_pm = true;
>> -
>> + if (rtl_supports_eee(tp))
>> + linkmode_copy(tp->phydev->advertising_eee,
>> + tp->phydev->supported_eee);
>
> This looks odd. Does it mean something is missing on phylib?
>
Reason is that we treat "normal" advertising and EEE advertising differently
in phylib. See this code snippet from phy_probe().
phy_advertise_supported(phydev);
/* Get PHY default EEE advertising modes and handle them as potentially
* safe initial configuration.
*/
err = genphy_c45_read_eee_adv(phydev, phydev->advertising_eee);
For EEE we don't change the initial advertising to what's supported,
but preserve the EEE advertising at the time of phy probing.
So if I want to mimic the behavior of phy_advertise_supported() for EEE,
I have to populate advertising_eee in the driver.
Alternative would be to change phy_advertise_supported(), but this may
impact systems with PHY's with EEE flaws.
> Andrew
Heiner
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH RESUBMIT net-next] r8169: simplify EEE handling
2024-02-02 6:55 ` Heiner Kallweit
@ 2024-02-02 13:12 ` Andrew Lunn
2024-02-02 16:06 ` Heiner Kallweit
0 siblings, 1 reply; 8+ messages in thread
From: Andrew Lunn @ 2024-02-02 13:12 UTC (permalink / raw)
To: Heiner Kallweit
Cc: Realtek linux nic maintainers, Jakub Kicinski, David Miller,
Paolo Abeni, Eric Dumazet, netdev@vger.kernel.org
On Fri, Feb 02, 2024 at 07:55:38AM +0100, Heiner Kallweit wrote:
> On 02.02.2024 01:16, Andrew Lunn wrote:
> >> @@ -5058,7 +5033,9 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
> >> }
> >>
> >> tp->phydev->mac_managed_pm = true;
> >> -
> >> + if (rtl_supports_eee(tp))
> >> + linkmode_copy(tp->phydev->advertising_eee,
> >> + tp->phydev->supported_eee);
> >
> > This looks odd. Does it mean something is missing on phylib?
> >
> Reason is that we treat "normal" advertising and EEE advertising differently
> in phylib. See this code snippet from phy_probe().
>
> phy_advertise_supported(phydev);
> /* Get PHY default EEE advertising modes and handle them as potentially
> * safe initial configuration.
> */
> err = genphy_c45_read_eee_adv(phydev, phydev->advertising_eee);
>
> For EEE we don't change the initial advertising to what's supported,
> but preserve the EEE advertising at the time of phy probing.
> So if I want to mimic the behavior of phy_advertise_supported() for EEE,
> I have to populate advertising_eee in the driver.
So the device you are using is advertising less than what it supports?
> Alternative would be to change phy_advertise_supported(), but this may
> impact systems with PHY's with EEE flaws.
If i remember correctly, there was some worry enabling EEE by default
could upset some low latency use cases, PTP accuracy etc. So lets
leave it as it is. Maybe a helper would be useful
phy_advertise_eee_all() with a comment about why it could be used.
Andrew
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH RESUBMIT net-next] r8169: simplify EEE handling
2024-02-02 13:12 ` Andrew Lunn
@ 2024-02-02 16:06 ` Heiner Kallweit
2024-02-02 16:15 ` Jakub Kicinski
0 siblings, 1 reply; 8+ messages in thread
From: Heiner Kallweit @ 2024-02-02 16:06 UTC (permalink / raw)
To: Andrew Lunn
Cc: Realtek linux nic maintainers, Jakub Kicinski, David Miller,
Paolo Abeni, Eric Dumazet, netdev@vger.kernel.org
On 02.02.2024 14:12, Andrew Lunn wrote:
> On Fri, Feb 02, 2024 at 07:55:38AM +0100, Heiner Kallweit wrote:
>> On 02.02.2024 01:16, Andrew Lunn wrote:
>>>> @@ -5058,7 +5033,9 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
>>>> }
>>>>
>>>> tp->phydev->mac_managed_pm = true;
>>>> -
>>>> + if (rtl_supports_eee(tp))
>>>> + linkmode_copy(tp->phydev->advertising_eee,
>>>> + tp->phydev->supported_eee);
>>>
>>> This looks odd. Does it mean something is missing on phylib?
>>>
>> Reason is that we treat "normal" advertising and EEE advertising differently
>> in phylib. See this code snippet from phy_probe().
>>
>> phy_advertise_supported(phydev);
>> /* Get PHY default EEE advertising modes and handle them as potentially
>> * safe initial configuration.
>> */
>> err = genphy_c45_read_eee_adv(phydev, phydev->advertising_eee);
>>
>> For EEE we don't change the initial advertising to what's supported,
>> but preserve the EEE advertising at the time of phy probing.
>> So if I want to mimic the behavior of phy_advertise_supported() for EEE,
>> I have to populate advertising_eee in the driver.
>
> So the device you are using is advertising less than what it supports?
>
It may. If on a board with this chip version the BIOS for whatever reason
disabled EEE advertising, then users may complain that their system consumes
more power with r8169 than with r8125. Typical users don't necessarily
know that EEE exists and what it is, and how to enable it with ethtool.
Therefore I'd like to ensure that the supported EEE modes are also advertised.
>> Alternative would be to change phy_advertise_supported(), but this may
>> impact systems with PHY's with EEE flaws.
>
> If i remember correctly, there was some worry enabling EEE by default
> could upset some low latency use cases, PTP accuracy etc. So lets
> leave it as it is. Maybe a helper would be useful
> phy_advertise_eee_all() with a comment about why it could be used.
>
Yes, I think that's the way to go.
To minimize efforts I'd like to keep this patch here as it is, then I'll
add the helper and change this place in r8169 to use the new helper.
> Andrew
Heiner
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH RESUBMIT net-next] r8169: simplify EEE handling
2024-02-02 16:06 ` Heiner Kallweit
@ 2024-02-02 16:15 ` Jakub Kicinski
2024-02-02 20:36 ` Heiner Kallweit
0 siblings, 1 reply; 8+ messages in thread
From: Jakub Kicinski @ 2024-02-02 16:15 UTC (permalink / raw)
To: Heiner Kallweit
Cc: Andrew Lunn, Realtek linux nic maintainers, David Miller,
Paolo Abeni, Eric Dumazet, netdev@vger.kernel.org
On Fri, 2 Feb 2024 17:06:10 +0100 Heiner Kallweit wrote:
> >> Alternative would be to change phy_advertise_supported(), but this may
> >> impact systems with PHY's with EEE flaws.
> >
> > If i remember correctly, there was some worry enabling EEE by default
> > could upset some low latency use cases, PTP accuracy etc. So lets
> > leave it as it is. Maybe a helper would be useful
> > phy_advertise_eee_all() with a comment about why it could be used.
> >
> Yes, I think that's the way to go.
> To minimize efforts I'd like to keep this patch here as it is, then I'll
> add the helper and change this place in r8169 to use the new helper.
Sorry for being slow - on top or as v2? :)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH RESUBMIT net-next] r8169: simplify EEE handling
2024-02-02 16:15 ` Jakub Kicinski
@ 2024-02-02 20:36 ` Heiner Kallweit
0 siblings, 0 replies; 8+ messages in thread
From: Heiner Kallweit @ 2024-02-02 20:36 UTC (permalink / raw)
To: Jakub Kicinski
Cc: Andrew Lunn, Realtek linux nic maintainers, David Miller,
Paolo Abeni, Eric Dumazet, netdev@vger.kernel.org
On 02.02.2024 17:15, Jakub Kicinski wrote:
> On Fri, 2 Feb 2024 17:06:10 +0100 Heiner Kallweit wrote:
>>>> Alternative would be to change phy_advertise_supported(), but this may
>>>> impact systems with PHY's with EEE flaws.
>>>
>>> If i remember correctly, there was some worry enabling EEE by default
>>> could upset some low latency use cases, PTP accuracy etc. So lets
>>> leave it as it is. Maybe a helper would be useful
>>> phy_advertise_eee_all() with a comment about why it could be used.
>>>
>> Yes, I think that's the way to go.
>> To minimize efforts I'd like to keep this patch here as it is, then I'll
>> add the helper and change this place in r8169 to use the new helper.
>
> Sorry for being slow - on top or as v2? :)
I'll do it on top.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH RESUBMIT net-next] r8169: simplify EEE handling
2024-01-31 20:31 [PATCH RESUBMIT net-next] r8169: simplify EEE handling Heiner Kallweit
2024-02-02 0:16 ` Andrew Lunn
@ 2024-02-03 5:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 8+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-02-03 5:10 UTC (permalink / raw)
To: Heiner Kallweit; +Cc: nic_swsd, kuba, davem, pabeni, edumazet, netdev
Hello:
This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 31 Jan 2024 21:31:01 +0100 you wrote:
> We don't have to store the EEE modes to be advertised in the driver,
> phylib does this for us and stores it in phydev->advertising_eee.
> phylib also takes care of properly handling the EEE advertisement.
>
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> ---
> drivers/net/ethernet/realtek/r8169_main.c | 32 +++--------------------
> 1 file changed, 4 insertions(+), 28 deletions(-)
Here is the summary with links:
- [RESUBMIT,net-next] r8169: simplify EEE handling
https://git.kernel.org/netdev/net-next/c/f5d59230ec26
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-02-03 5:10 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-31 20:31 [PATCH RESUBMIT net-next] r8169: simplify EEE handling Heiner Kallweit
2024-02-02 0:16 ` Andrew Lunn
2024-02-02 6:55 ` Heiner Kallweit
2024-02-02 13:12 ` Andrew Lunn
2024-02-02 16:06 ` Heiner Kallweit
2024-02-02 16:15 ` Jakub Kicinski
2024-02-02 20:36 ` Heiner Kallweit
2024-02-03 5:10 ` patchwork-bot+netdevbpf
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).