Hi Bruce, > -----Original Message----- > From: Richardson, Bruce <bruce.richard...@intel.com> > Sent: Friday, April 8, 2022 7:27 PM > To: Zhang, RobinX <robinx.zh...@intel.com> > Cc: dev@dpdk.org; Yang, Qiming <qiming.y...@intel.com>; Zhang, Qi Z > <qi.z.zh...@intel.com>; Yang, SteveX <stevex.y...@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.richard...@intel.com> > > > Sent: Friday, April 8, 2022 7:01 PM > > > To: Zhang, RobinX <robinx.zh...@intel.com> > > > Cc: dev@dpdk.org; Yang, Qiming <qiming.y...@intel.com>; Zhang, Qi Z > > > <qi.z.zh...@intel.com>; Yang, SteveX <stevex.y...@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.richard...@intel.com> > > > > > Sent: Friday, April 8, 2022 6:33 PM > > > > > To: Zhang, RobinX <robinx.zh...@intel.com> > > > > > Cc: dev@dpdk.org; Yang, Qiming <qiming.y...@intel.com>; Zhang, > > > > > Qi Z <qi.z.zh...@intel.com>; Yang, SteveX > > > > > <stevex.y...@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.zh...@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, > /Bruce