[PATCH ethtool-next v3 00/16] Add JSON output to --module-info
From: Danielle Ratson <hidden>
Date: 2025-02-04 13:40:41
Add JSON output for 'ethtool -m' / --module-info, following the guideline below: 1. Fields with description, will have a separate description field. 2. Units will be documented in a separate module-info.json file. 3. ASCII fields will be presented as strings. 4. On/Off is rendered as true/false. 5. Yes/no is rendered as true/false. 6. Per-channel fields will be presented as array, when each element represents a channel. 7. Fields that hold version, will be split to major and minor sub fields. This patchset suppose to extend [1] to cover all types of modules. Patchset overview: Patches #1-#7: Preparations. Patches #8-#9: Add JSON output support for CMIS compliant modules. Patches #10-#11: Add JSON output support for SFF8636 modules. Patches #12-#14: Add JSON output support for SFF8079 and SFF8472 modules. Patch #15: Add a new schema JSON file for units documentation. Patches #16: Add '-j' support to ethtool [1] https://lore.kernel.org/all/20220704054114.22582-2-matt@traverse.com.au/ (local) v3: * Remove unit fields from JSON output. * Reword commit messages. * Add patch #2 and #15. * Enable properly JSON output support for SFF8079. * Remove printings from fields that might be empty strings. * Fix JSON output in sff8636_show_dom_mod_lvl_flags(). v2: * In rx_power JSON field, add a type field to let the user know what type is printed in "value". * Use uint instead of hexa fields in JSON context. * Simplify sff8636_show_dom(). * Use "false" in module_show_lane_status() instead of "None" in JSON context. Danielle Ratson (16): module_common: Add a new file to all the common code for all module types ethtool: Standardize Link Length field names across module types sff_common: Move sff_show_revision_compliance() to qsfp.c cmis: Change loop order in cmis_show_dom_chan_lvl_flags() qsfp: Reorder the channel-level flags list for SFF8636 module type qsfp: Refactor sff8636_show_dom() by moving code into separate functions module_common: Add helpers to support JSON printing for common value types cmis: Add JSON output handling to --module-info in CMIS modules cmis: Enable JSON output support in CMIS modules qsfp: Add JSON output handling to --module-info in SFF8636 modules qsfp: Enable JSON output support for SFF8636 modules sfpid: Add JSON output handling to --module-info in SFF8079 modules sfpdiag: Add JSON output handling to --module-info in SFF8472 modules ethtool: Enable JSON output support for SFF8079 and SFF8472 modules module_info: Add a new JSON file for units documentation ethtool: Add '-j' support to ethtool Makefile.am | 7 +- cmis.c | 493 +++++++++++----------- cmis.h | 62 --- ethtool.c | 10 +- module-common.c | 662 +++++++++++++++++++++++++++++ module-common.h | 287 +++++++++++++ module_info.json | 191 +++++++++ netlink/module-eeprom.c | 26 +- qsfp.c | 892 +++++++++++++++++++++------------------- qsfp.h | 108 ----- sff-common.c | 348 ++++------------ sff-common.h | 119 ++---- sfpdiag.c | 52 ++- sfpid.c | 446 +++++++++++--------- 14 files changed, 2248 insertions(+), 1455 deletions(-) create mode 100644 module-common.c create mode 100644 module-common.h create mode 100644 module_info.json -- 2.47.0