From: Thomas Monjalon <thomas@monjalon.net>
To: "Zhang, RobinX" <robinx.zhang@intel.com>,
Bruce Richardson <bruce.richardson@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
"Yang, Qiming" <qiming.yang@intel.com>,
"Zhang, Qi Z" <qi.z.zhang@intel.com>,
"Yang, SteveX" <stevex.yang@intel.com>,
david.marchand@redhat.com, andrew.rybchenko@oktetlabs.ru
Subject: Re: [PATCH v2] common/sff_module: add telemetry command to dump module EEPROM
Date: Wed, 13 Apr 2022 14:13:29 +0200 [thread overview]
Message-ID: <3156254.N7aMVyhfb1@thomas> (raw)
In-Reply-To: <YlPxIuZgmS2pV34j@bricha3-MOBL.ger.corp.intel.com>
11/04/2022 11:13, Bruce Richardson:
> On Mon, Apr 11, 2022 at 09:13:47AM +0100, Zhang, RobinX wrote:
> > Hi Bruce,
> >
> > > -----Original Message-----
> > > From: Richardson, Bruce <bruce.richardson@intel.com>
> > > Sent: Friday, April 8, 2022 7:27 PM
> > > To: Zhang, RobinX <robinx.zhang@intel.com>
> > > Cc: dev@dpdk.org; Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> > > <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>
> > > Subject: Re: [PATCH v2] common/sff_module: add telemetry command to
> > > dump module EEPROM
> > >
> > > On Fri, Apr 08, 2022 at 12:20:23PM +0100, Zhang, RobinX wrote:
> > > > Hi Bruce
> > > >
> > > > > -----Original Message-----
> > > > > From: Richardson, Bruce <bruce.richardson@intel.com>
> > > > > Sent: Friday, April 8, 2022 7:01 PM
> > > > > To: Zhang, RobinX <robinx.zhang@intel.com>
> > > > > Cc: dev@dpdk.org; Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> > > > > <qi.z.zhang@intel.com>; Yang, SteveX <stevex.yang@intel.com>
> > > > > Subject: Re: [PATCH v2] common/sff_module: add telemetry command
> > > to
> > > > > dump module EEPROM
> > > > >
> > > > > On Fri, Apr 08, 2022 at 11:55:07AM +0100, Zhang, RobinX wrote:
> > > > > > Hi Bruce,
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: Richardson, Bruce <bruce.richardson@intel.com>
> > > > > > > Sent: Friday, April 8, 2022 6:33 PM
> > > > > > > To: Zhang, RobinX <robinx.zhang@intel.com>
> > > > > > > Cc: dev@dpdk.org; Yang, Qiming <qiming.yang@intel.com>; Zhang,
> > > > > > > Qi Z <qi.z.zhang@intel.com>; Yang, SteveX
> > > > > > > <stevex.yang@intel.com>
> > > > > > > Subject: Re: [PATCH v2] common/sff_module: add telemetry
> > > command
> > > > > to
> > > > > > > dump module EEPROM
> > > > > > >
> > > > > > > On Fri, Apr 08, 2022 at 10:23:30AM +0000, Robin Zhang wrote:
> > > > > > > > This patch introduce a new telemetry command '/sff_module/info'
> > > > > > > > to dump format module EEPROM information.
> > > > > > > >
> > > > > > > > The format support for SFP(Small Formfactor Pluggable)/SFP+
> > > > > > > > /QSFP+(Quad Small Formfactor Pluggable)/QSFP28 modules based
> > > > > > > > on SFF(Small Form Factor) Committee specifications
> > > > > > > > SFF-8079/SFF-8472/SFF-8024/SFF-8636.
> > > > > > > >
> > > > > > > > Signed-off-by: Robin Zhang <robinx.zhang@intel.com>
> > > > > > > > ---
> > > > > > > >
> > > > > > > > v2:
> > > > > > > > - Redesign the dump function as a telemetry command, so that
> > > > > > > > the
> > > > > > > EEPROM
> > > > > > > > information can be used by other app.
> > > > > > > >
> > > > > > > > - The usage like this:
> > > > > > > >
> > > > > > > > Launch the primary application with telemetry:
> > > > > > > > Take testpmd as example: ./app/dpdk-testpmd
> > > > > > > >
> > > > > > > > Then launch the telemetry client script:
> > > > > > > > ./usertools/dpdk-telemetry.py
> > > > > > > >
> > > > > > > > In telemetry client run command:
> > > > > > > > --> /sff_module/info,<port number>
> > > > > > > >
> > > > > > > > Both primary application and telemetry client will show the
> > > formated
> > > > > > > > module EEPROM information.
> > > > > > > >
> > > > > > > > drivers/common/meson.build | 1 +
> > > > > > > > drivers/common/sff_module/meson.build | 16 +
> > > > > > > > drivers/common/sff_module/sff_8079.c | 672
> > > ++++++++++++++
> > > > > > > > drivers/common/sff_module/sff_8472.c | 301 ++++++
> > > > > > > > drivers/common/sff_module/sff_8636.c | 1004
> > > > > > > +++++++++++++++++++++
> > > > > > > > drivers/common/sff_module/sff_8636.h | 592 ++++++++++++
> > > > > > > > drivers/common/sff_module/sff_common.c | 415 +++++++++
> > > > > > > > drivers/common/sff_module/sff_common.h | 192 ++++
> > > > > > > > drivers/common/sff_module/sff_telemetry.c | 142 +++
> > > > > > > > drivers/common/sff_module/sff_telemetry.h | 41 +
> > > > > > > > drivers/common/sff_module/version.map | 9 +
> > > > > > > > 11 files changed, 3385 insertions(+) create mode 100644
> > > > > > > > drivers/common/sff_module/meson.build
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_8079.c
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_8472.c
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_8636.c
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_8636.h
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_common.c
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_common.h
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_telemetry.c
> > > > > > > > create mode 100644 drivers/common/sff_module/sff_telemetry.h
> > > > > > > > create mode 100644 drivers/common/sff_module/version.map
> > > > > > > >
> > > > > > > Is this is whole new driver just to provide telemetry dumps of
> > > > > > > SFP information? I can understand the problem somewhat - though
> > > > > > > I am in some doubt that telemetry is the best way to expose this
> > > > > > > information
> > > > > > > - but creating a new driver seems the wrong approach here. SFPs
> > > > > > > are for NIC devices, so why isn't this available in a common API
> > > > > > > such as
> > > > > ethdev?
> > > > > > >
> > > > > >
> > > > > > I have considered add this function as a new telemetry command of
> > > > > ethdev (like '/ethdev/sff_module_info') to dump these SFP information.
> > > > > > But I'm not sure if it's acceptable to add all these production
> > > > > > code
> > > > > (sff_8xxx.c) into lib/ethdev?
> > > > > > If it's OK, I can make V3 patches to change it as a telemetry
> > > > > > command of
> > > > > ethdev.
> > > > > >
> > > > >
> > > > > Hi,
> > > > >
> > > > > I think some discussion is needed before you go preparing a new
> > > > > version of this patchset.
> > > > >
> > > > > Some initial questions:
> > > > >
> > > > > 1. Does SFF code apply only to Intel products/NICs or is it multi-vendor?
> > > > The SFF code apply to multi-vendor.
> > > > In fact, it's applied to all the NIC driver which implemented dev_ops-
> > > >get_module_eeprom.
> > > >
> > > > > 2. For the driver approach you previously took, how was the presence of
> > > > > hardware detected to load the driver?
> > > > The purpose of put these production code into drivers/common is want to
> > > treat it as a common function for NIC drivers.
> > > > It will not related to any presence of hardware.
> > > >
> > > > > 3. Does this work on SFPs need to interact with the NIC drivers in any way?
> > > > >
> > > > Yes, just like my answer in question 1, the module EEPROM raw data is get
> > > from dev_ops->get_module_eeprom.
> > > > So need the NIC drivers to implement dev_ops->get_module_eeprom.
> > > >
> > >
> > > So is the intent that individual NIC drivers would add a get_module_eeprom
> > > function to their drivers pointing at this driver? If so, this approach of putting
> > > the code in drivers/common does make sense. However, this needs to be
> > > better explained in the patch description, and maybe include with the driver
> > > patch (which should probably be split up into easier reviewed sections),
> > > additional patches to add the get_eeprom function to some drivers to show
> > > use.
> > >
> >
> > Let me explain in more detail.
> >
> > This patch actually include two parts:
> > 1. Module EEPROM raw data parser code
> > Files: sff_common.h, sff_common.c, sff_8xxx.*
> > 2. Add new telemetry command
> > Files: sff_telemetry.h, sff_telemetry.c
> >
> > Part 1 will only parsing the module EEPROM raw data base on different module type.
> > Now DPDK support 4 types that defined in rte_dev_info.h with macro RTE_ETH_MODULE_SFF_8xxx.
> >
> > Part 2 will call rte_eth_dev_get_module_info and rte_eth_dev_get_module_eeprom to get the module EEPROM raw data, then pass the raw data to Part 1 parser code. Finally, Part 1 parser code will print formatted information.
> >
> > So, these codes are more likely a common tool than a common driver, because it will only read the module EEPROM raw data from NIC PMD driver.
> > For those NIC drivers who has not implemented get_module_info and get_module_eeprom dev_ops, we will simply return not support.
> >
> Thanks for the additional explanation. Adding more folks on CC who may have
> more thoughts on the best way to handle this.
That's ethdev and/or net driver code.
If I understand well, SFF are standards and no tight to any HW, right?
In this case, I think the common code can be in ethdev library.
next prev parent reply other threads:[~2022-04-13 12:13 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-15 10:18 [PATCH] app/testpmd: format dump information of " Robin Zhang
2022-02-15 13:28 ` Ferruh Yigit
2022-02-15 15:07 ` Thomas Monjalon
2022-02-16 2:26 ` Zhang, RobinX
2022-02-16 8:03 ` David Marchand
2022-02-16 8:45 ` Thomas Monjalon
2022-02-16 9:30 ` Bruce Richardson
2022-02-16 9:41 ` David Marchand
2022-02-16 10:02 ` Bruce Richardson
2022-02-16 10:15 ` David Marchand
2022-04-08 10:23 ` [PATCH v2] common/sff_module: add telemetry command to dump " Robin Zhang
2022-04-08 10:33 ` Bruce Richardson
2022-04-08 10:55 ` Zhang, RobinX
2022-04-08 11:00 ` Bruce Richardson
2022-04-08 11:20 ` Zhang, RobinX
2022-04-08 11:26 ` Bruce Richardson
2022-04-11 8:13 ` Zhang, RobinX
2022-04-11 9:13 ` Bruce Richardson
2022-04-13 12:13 ` Thomas Monjalon [this message]
2022-04-14 7:41 ` David Marchand
2022-04-20 7:00 ` [PATCH v3 0/5] add telemetry command for show " Robin Zhang
2022-04-20 7:00 ` [PATCH v3 1/5] ethdev: add telemetry command for " Robin Zhang
2022-04-20 9:16 ` Andrew Rybchenko
2022-04-20 7:00 ` [PATCH v3 2/5] ethdev: common utilities for different SFF specs Robin Zhang
2022-04-20 7:00 ` [PATCH v3 3/5] ethdev: format module EEPROM for SFF-8079 Robin Zhang
2022-04-20 7:00 ` [PATCH v3 4/5] ethdev: format module EEPROM for SFF-8472 Robin Zhang
2022-04-20 7:00 ` [PATCH v3 5/5] ethdev: format module EEPROM for SFF-8636 Robin Zhang
2022-04-20 8:49 ` [PATCH v3 0/5] add telemetry command for show module EEPROM Morten Brørup
2022-04-25 5:34 ` [PATCH v4 " Robin Zhang
2022-04-25 5:34 ` [PATCH v4 1/5] ethdev: add telemetry command for " Robin Zhang
2022-04-25 5:34 ` [PATCH v4 2/5] ethdev: common utilities for different SFF specs Robin Zhang
2022-04-25 5:34 ` [PATCH v4 3/5] ethdev: format module EEPROM for SFF-8079 Robin Zhang
2022-04-25 5:34 ` [PATCH v4 4/5] ethdev: format module EEPROM for SFF-8472 Robin Zhang
2022-04-25 5:34 ` [PATCH v4 5/5] ethdev: format module EEPROM for SFF-8636 Robin Zhang
2022-04-26 2:43 ` [PATCH v5 0/5] add telemetry command for show module EEPROM Robin Zhang
2022-04-26 2:43 ` [PATCH v5 1/5] ethdev: add telemetry command for " Robin Zhang
2022-05-04 10:16 ` Andrew Rybchenko
2022-04-26 2:43 ` [PATCH v5 2/5] ethdev: common utilities for different SFF specs Robin Zhang
2022-04-26 2:43 ` [PATCH v5 3/5] ethdev: format module EEPROM for SFF-8079 Robin Zhang
2022-04-26 2:43 ` [PATCH v5 4/5] ethdev: format module EEPROM for SFF-8472 Robin Zhang
2022-04-26 2:43 ` [PATCH v5 5/5] ethdev: format module EEPROM for SFF-8636 Robin Zhang
2022-05-04 8:13 ` [PATCH v5 0/5] add telemetry command for show module EEPROM Andrew Rybchenko
2022-05-11 2:14 ` [PATCH v6 " Robin Zhang
2022-05-11 2:14 ` [PATCH v6 1/5] ethdev: add telemetry command for " Robin Zhang
2022-05-11 2:14 ` [PATCH v6 2/5] ethdev: common utilities for different SFF specs Robin Zhang
2022-05-11 2:14 ` [PATCH v6 3/5] ethdev: format module EEPROM for SFF-8079 Robin Zhang
2022-05-11 2:14 ` [PATCH v6 4/5] ethdev: format module EEPROM for SFF-8472 Robin Zhang
2022-05-19 8:33 ` Andrew Rybchenko
2022-05-11 2:14 ` [PATCH v6 5/5] ethdev: format module EEPROM for SFF-8636 Robin Zhang
2022-05-24 6:24 ` [PATCH v7 0/5] add telemetry command for show module EEPROM Robin Zhang
2022-05-24 6:24 ` [PATCH v7 1/5] ethdev: add telemetry command for " Robin Zhang
2022-05-24 6:24 ` [PATCH v7 2/5] ethdev: common utilities for different SFF specs Robin Zhang
2022-05-24 6:24 ` [PATCH v7 3/5] ethdev: format module EEPROM for SFF-8079 Robin Zhang
2022-05-24 6:24 ` [PATCH v7 4/5] ethdev: format module EEPROM for SFF-8472 Robin Zhang
2022-05-24 6:24 ` [PATCH v7 5/5] ethdev: format module EEPROM for SFF-8636 Robin Zhang
2022-05-24 9:03 ` David Marchand
2022-05-25 2:43 ` Zhang, RobinX
2022-05-25 3:14 ` [PATCH v8 0/5] add telemetry command for show module EEPROM Robin Zhang
2022-05-25 3:14 ` [PATCH v8 1/5] ethdev: add telemetry command for " Robin Zhang
2022-05-25 9:24 ` Andrew Rybchenko
2022-05-25 3:14 ` [PATCH v8 2/5] ethdev: common utilities for different SFF specs Robin Zhang
2022-05-25 8:51 ` Andrew Rybchenko
2022-05-25 9:40 ` Andrew Rybchenko
2022-05-25 3:14 ` [PATCH v8 3/5] ethdev: format module EEPROM for SFF-8079 Robin Zhang
2022-05-25 9:55 ` Andrew Rybchenko
2022-05-25 3:14 ` [PATCH v8 4/5] ethdev: format module EEPROM for SFF-8472 Robin Zhang
2022-05-25 11:58 ` Andrew Rybchenko
2022-05-25 3:14 ` [PATCH v8 5/5] ethdev: format module EEPROM for SFF-8636 Robin Zhang
2022-05-25 9:01 ` Andrew Rybchenko
2022-05-25 12:01 ` Andrew Rybchenko
2022-05-26 7:32 ` [PATCH v9 0/5] add telemetry command for show module EEPROM Robin Zhang
2022-05-26 7:32 ` [PATCH v9 1/5] ethdev: add telemetry command for " Robin Zhang
2022-05-26 7:32 ` [PATCH v9 2/5] ethdev: add common code for different SFF specs Robin Zhang
2022-05-26 7:32 ` [PATCH v9 3/5] ethdev: support SFF-8079 module information telemetry Robin Zhang
2022-05-26 7:32 ` [PATCH v9 4/5] ethdev: support SFF-8472 " Robin Zhang
2022-05-26 7:32 ` [PATCH v9 5/5] ethdev: support SFF-8636 " Robin Zhang
2022-05-31 14:43 ` [PATCH v9 0/5] add telemetry command for show module EEPROM Andrew Rybchenko
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=3156254.N7aMVyhfb1@thomas \
--to=thomas@monjalon.net \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=bruce.richardson@intel.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=qi.z.zhang@intel.com \
--cc=qiming.yang@intel.com \
--cc=robinx.zhang@intel.com \
--cc=stevex.yang@intel.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).