Re: [PATCH v1] net: sfp: add quirks for ODI DFP-34X-2C2

From: Shengyu Qu
Date: Wed Feb 28 2024 - 05:43:22 EST


Hi Russell,

I got contact with someone that has access to this chip's datasheet.
He tolds me that according to the datasheet, this chip
"supports a rate adaptor feature, which is a Realtek proprietary SERDES
mechanism."
" When the chip's SERDES operates in Rate adaptor mode, the SERDES speed
is fixed at 2.5Gbps and the Ethernet speed cannot be higher than the
SERDES speed.
The SOC need not follow the Ethernet link speed, and cannot change the
SERDES speed in this mode. There is a data flow control mechanism to
ensure correct data transmission."

Is it enough to put this into the commit information?

Best regards,
Shengyu


在 2024/2/26 23:42, Russell King (Oracle) 写道:
On Mon, Feb 26, 2024 at 10:51:36PM +0800, Shengyu Qu wrote:
Hi Russell,

在 2024/2/26 22:39, Russell King (Oracle) 写道:
On Mon, Feb 26, 2024 at 10:16:46PM +0800, Shengyu Qu wrote:
Hi Russell,

On Mon, Feb 26, 2024 at 09:23:46PM +0800, Shengyu Qu wrote:
ODI DFP-34X-2C2 is capable of 2500base-X, but incorrectly report its
capabilities in the EEPROM.
So use sfp_quirk_2500basex for this module to allow 2500Base-X mode.
This was previously submitted by Sergio Palumbo, and comes in two
different forms - an OEM version and non-OEM. There was extensive
discussion about this, and the result is that I'm not accepting this
quirk for this module.

The reason is that the module _defaults_ to 1000base-X and requires
manual reconfiguration by the user to operate at 2500base-X.
Unfortunately, there is no way for the kernel to know whether that
reconfiguration has occurred.
No, In the firmware of this stick, the speed rate is configured to auto
negotiation rather than fixed 1000base-X.

How does this "auto negotiation" work?

I mean *exactly* how does it work? How does it know whether the host is
operating at 1000base-X or 2500base-X?

There is *no* inband protocol to allow this to be negotiated.

Well, that seems some kind weird trick implemented in that chip's SDK (maybe
hardware?). It would automatically detect the speed rate that host uses and
switch to that rate. The system log of the stick shows that.

This sounds racy - between the SFP detecting the speed of the host and
the kernel code reconfiguring the interface. More details please...

Attachment: OpenPGP_0xE3520CC91929C8E7.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature