From: Marek Vasut <marex@nabladev.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Fidelio Lawson <lawson.fidelio@gmail.com>,
Woojung Huh <woojung.huh@microchip.com>,
UNGLinuxDriver@microchip.com, Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Maxime Chevallier <maxime.chevallier@bootlin.com>,
Simon Horman <horms@kernel.org>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Fidelio Lawson <fidelio.lawson@exotec.com>
Subject: Re: [PATCH v3 1/3] net: dsa: microchip: implement KSZ87xx Module 3 low-loss cable errata
Date: Tue, 14 Apr 2026 17:49:07 +0200 [thread overview]
Message-ID: <712cc46a-5ceb-4f0f-88bb-fa0a47002258@nabladev.com> (raw)
In-Reply-To: <d9b161dd-f698-4d7e-8ccb-9ec12411bf87@lunn.ch>
On 4/14/26 2:40 PM, Andrew Lunn wrote:
> On Tue, Apr 14, 2026 at 01:05:49PM +0200, Marek Vasut wrote:
>> On 4/14/26 11:12 AM, Fidelio Lawson wrote:
>>> Implement the "Module 3: Equalizer fix for short cables" erratum from
>>> Microchip document DS80000687C for KSZ87xx switches.
>>>
>>> The issue affects short or low-loss cable links (e.g. CAT5e/CAT6),
>>> where the PHY receiver equalizer may amplify high-amplitude signals
>>> excessively, resulting in internal distortion and link establishment
>>> failures.
>>>
>>> KSZ87xx devices require a workaround for the Module 3 low-loss cable
>>> condition, controlled through the switch TABLE_LINK_MD_V indirect
>>> registers.
>>>
>>> The affected registers are part of the switch address space and are not
>>> directly accessible from the PHY driver. To keep the PHY-facing API
>>> clean and avoid leaking switch-specific details, model this errata
>>> control as vendor-specific Clause 22 PHY registers.
>>>
>>> A vendor-specific Clause 22 PHY register is introduced as a mode
>>> selector in PHY_REG_LOW_LOSS_CTRL, and ksz8_r_phy() / ksz8_w_phy()
>>> translate accesses to these bits into the appropriate indirect
>>> TABLE_LINK_MD_V accesses.
>>>
>>> The control register defines the following modes:
>>> 0: disabled (default behavior)
>>> 1: EQ training workaround
>>> 2: LPF 90 MHz
>>> 3: LPF 62 MHz
>>> 4: LPF 55 MHz
>>> 5: LPF 44 MHz
>> I may not fully understand this, but aren't the EQ and LPF settings
>> orthogonal ?
>
> What is the real life experience using this feature? Is it needed for
> 1cm cables, but most > 1m cables are O.K with the defaults? Do we need
> all these configuration options? How is a user supposed to discover
> the different options? Can we simplify it down to a Boolean?
The report I got was, that if the device is cooled down AND the user
used special short low-loss CAT6 cable, then there was packet loss until
the communication completely broke down.
With the LPF set to 62 MHz and DSP EQ initial value set to 0, that
situation improved and there was still up to 0.14% packet less, but it
is better than total breakdown of communication. We couldn't get the
packet loss down to 0% no matter which tuning we applied.
> Ethernet is just supposed to work with any valid length of cable,
> KISS. So maybe we should try to keep this feature KISS. Just tell the
> driver it is a short cable, pick different defaults which should work
> with any short cable?
I think the user should be able to configure the LPF bandwidth and DSP
EQ initial value as needed. While the short cable improvement settings
are "LPF set to 62 MHz bandwidth and DSP EQ initial value to 0", there
might be future configurations which require different settings.
I think the ideal setup would be if those two settings were configurable
separately, with a bit of documentation explaining the two currently
known good settings:
- Default (LPF 90 MHz BW, DSP EQ initial value as needed)
- Short cable (LPF 62 MHz BW, DSP EQ initial value 0)
But if the user needs to reduce the BW further e.g. to improve noise
resistance further, they shouldn't be prevented from doing so.
> A boolean should also help with making this tunable reusable with
> other devices. It is unlikely any other devices have these same
> configuration options, unless it is from the same vendor.
Could the LPF PHY tunable simply take integer as a parameter ? Then it
would be portable across other PHYs I think ?
The DSP EQ initial value can also be an integer tunable.
next prev parent reply other threads:[~2026-04-14 15:49 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-14 9:12 [PATCH v3 0/3] ksz87xx: add support for low-loss cable equalizer errata Fidelio Lawson
2026-04-14 9:12 ` [PATCH v3 1/3] net: dsa: microchip: implement KSZ87xx Module 3 low-loss cable errata Fidelio Lawson
2026-04-14 11:05 ` Marek Vasut
2026-04-14 11:59 ` Fidelio LAWSON
2026-04-14 12:40 ` Andrew Lunn
2026-04-14 13:48 ` Fidelio LAWSON
2026-04-14 14:54 ` Andrew Lunn
2026-04-14 15:50 ` Marek Vasut
2026-04-14 15:49 ` Marek Vasut [this message]
2026-04-16 11:53 ` Fidelio LAWSON
2026-04-16 12:25 ` Andrew Lunn
2026-04-16 14:25 ` Fidelio LAWSON
2026-04-16 14:30 ` Andrew Lunn
2026-04-16 15:05 ` Marek Vasut
2026-04-14 9:12 ` [PATCH v3 2/3] net: ethtool: add KSZ87xx low-loss PHY tunable Fidelio Lawson
2026-04-14 9:12 ` [PATCH v3 3/3] net: phy: micrel: expose KSZ87xx low-loss erratum via " Fidelio Lawson
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=712cc46a-5ceb-4f0f-88bb-fa0a47002258@nabladev.com \
--to=marex@nabladev.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=fidelio.lawson@exotec.com \
--cc=hkallweit1@gmail.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=lawson.fidelio@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maxime.chevallier@bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=woojung.huh@microchip.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