Thread (30 messages) 30 messages, 5 authors, 2021-03-29

RE: [PATCH v2] eeprom/optoe: driver to read/write SFP/QSFP/CMIS EEPROMS

flat view

From: Don Bollinger <hidden>
Date: 2021-03-13 21:37:07
Also in: lkml

quoted
This interface is implemented in python scripts provided by the switch
platform vendor.  Those scripts encode the mapping of CPLD i2c muxes
to i2c buses to port numbers, specific to each switch.

At the bottom of that python stack, all EEPROM access goes through
open/seek/read/close access to the optoe managed file in
/sys/bus/i2c/devices/{num}-0050/eeprom.
And this python stack is all open source? So you should be able to throw
It is open in the sense that it is accessible to the world on github and the
maintainers would presumably entertain contributions.

In practice, these are developed and maintained by the white box switch
vendors.  There is one implementation for each platform on each supported
NOS.  There is lots of commonality among them, but each is nonetheless
unique.  Optoe has been adopted across this ecosystem as a common piece that
has been factored out of many of the platform specific implementations.
away parts of the bottom end and replace it with a different KAPI, and
nobody will notice? In fact, this is probably how it was designed. Anybody
Actually everyone who touches this code would notice, each implementation
would have to be modified, with literally no benefit to this community.
working with out of tree code knows what gets merged later is going to be
different because of review comments. And KAPI code is even more likely to
be different. So nobody really expected optoe to get merged as is.
The list of 'nobody' includes myself, my switch platform partners, my NOS
partners and Greg KH.  I did expect to accommodate constructive review of
the code, which I have already done (this is v2).
quoted
You're not going to like this, but ethtool -e and ethtool -m both
return ' Ethernet0 Cannot get EEPROM data: Operation not supported',
for every port managed by the big switch silicon.
You are still missing what i said. The existing IOCTL interface needs a
network
interface name. But there is no reason why you cannot extend the new
netlink KAPI to take an alternative identifier, sfp42. That maps directly
to the
SFP device, without using an interface name. Your pile of python can
directly
use the netlink API, the ethtool command does not need to make use of this
form of identifier, and you don't need to "screen scrape" ethtool.
It is just software, your proposal is certainly technically feasible.  It
provides no benefit to the community that is using optoe.

optoe is using a perfectly good KAPI, the nvmem interface that is being
developed and maintained by the folks who manage the EEPROM  drivers in the
kernel.  It has been updated since the prior submittal in 2018 to use the
nvmem interface and the regmap interface, both from the at24.c driver.  This
community isn't using the rest of the netdev/netlink interfaces, and has
adopted (before I wrote optoe) a perfectly reasonable approach of writing a
simple driver to access these simple devices.  

optoe does not undermine the netlink KAPI that Moshe is working on.  If your
community is interested, it could adopt optoe, WITH your KAPI, to
consolidate and improve module EEPROM access for mainstream netdev
consumers.  I am eager to collaborate on the fairly simple integration.
It seems very unlikely optoe is going to get merged. The network
maintainers
are against it, due to KAPI issues. I'm trying to point out a path you can
take
to get code merged. But it is up to you if you decided to follow it.
Thank you, I decline.  I respectfully request that optoe be accepted as a
useful implementation of the EEPROM driver, with the same access methods as
other EEPROM drivers, customized for the unique memory layout of SFP, QSFP
and CMIS devices.  I remain open to improvements in the implementation, but
my community finds no value in an implementation that removes the standard
EEPROM access via sysfs and open/seek/read/close calls.
	Andrew
Don
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help