[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
<DM6PR12MB451628E919440310BC5726E5D8422@DM6PR12MB4516.namprd12.prod.outlook.com>
Date: Sun, 20 Oct 2024 10:42:51 +0000
From: Danielle Ratson <danieller@...dia.com>
To: Daniel Zahka <daniel.zahka@...il.com>, "mkubecek@...e.cz"
<mkubecek@...e.cz>
CC: "netdev@...r.kernel.org" <netdev@...r.kernel.org>, Jakub Kicinski
<kuba@...nel.org>, Ido Schimmel <idosch@...dia.com>
Subject: RE: [RFC ethtool] ethtool: mock JSON output for --module-info
Hi Daniel,
I started to work on this feature myself lately, how far along did you advance with the coding?
If you are in advanced stages, I guess you'll prefer to finish, but if not maybe I can do it, according to the below RFC and my comments, please see them below.
> From: Daniel Zahka <daniel.zahka@...il.com>
> Sent: Tuesday, 15 October 2024 23:14
> To: mkubecek@...e.cz
> Cc: netdev@...r.kernel.org; Jakub Kicinski <kuba@...nel.org>; Ido Schimmel
> <idosch@...dia.com>; Danielle Ratson <danieller@...dia.com>
> Subject: [RFC ethtool] ethtool: mock JSON output for --module-info
>
> I would like to support json output for the ethtool --module-info command.
> As a first step, I would like to show some real output from a CMIS 4.0
> compliant transceiver and then propose some mock output for the --json
> version. The general approach is as follows:
>
> 1. Byte fields that are currently rendered as hex with a parenthetical
> description get split into two keys: one with a number value, and a second key
> with a "_description" suffix containing the string description. This idea is from
> https://lore.kernel.org/all/20220704054114.22582-2-
> matt@...verse.com.au/
> 2. Fields that are currently rendered as floating point numbers with units get
> split into two keys: one with the number value, and one with a string value
> showing the units.
Why not keeping the units along with the number value?
> 3. On/Off is rendered as true/false.
> 4. yes/no is rendered as true/false.
> 5. per channel fields are rendered as arrays of boolean. In the sample output
> the module has one bank with 8 total channels.
> 6. vendor info is displayed as byte arrays.
I agree with Andrew that string or UTF-8 is better than byte array.
The rest makes sense to me.
>
> Here is the original output for ethtool -m <iface> for the CMIS 4.0 module:
>
> Identifier : 0x18 (QSFP-DD Double Density 8X Pluggable
> Transceiver (INF-8628)) Power class : 5 Max
> power : 10.00W Connector : 0x0c (MPO
> Parallel Optic) Cable assembly length : 0.00m Tx CDR bypass
> control : No Rx CDR bypass control : No Tx
> CDR : Yes Rx CDR : Yes Transmitter
> technology : 0x06 (1310 nm EML) Laser wavelength :
> 1311.000nm Laser wavelength tolerance : 6.500nm Length
> (SMF) : 2.00km Length (OM5) : 0m Length
> (OM4) : 0m Length (OM3 50/125um) : 0m Length
> (OM2 50/125um) : 0m Vendor name : Arista
> Networks Vendor OUI : 00:1c:73 Vendor PN :
> QDD-400G-XDR4 Vendor rev : 41 Vendor SN :
> XKT242211481 Date code : 240531 Revision
> compliance : Rev. 4.0 Rx loss of signal : None Tx loss of
> signal : None Rx loss of lock : None Tx loss of
> lock : None Tx fault : None Module
> State : 0x03 (ModuleReady)
> LowPwrAllowRequestHW : On LowPwrRequestSW :
> Off Module temperature : 70.49 degrees C / 158.89 degrees F
> Module voltage : 3.2186 V Laser tx bias current (Channel 1) :
> 83.806 mA Laser tx bias current (Channel 2) : 81.878 mA Laser tx bias
> current (Channel 3) : 72.900 mA Laser tx bias current (Channel 4) :
> 110.100 mA Laser tx bias current (Channel 5) : 0.000 mA Laser tx bias
> current (Channel 6) : 0.000 mA Laser tx bias current (Channel 7) :
> 0.000 mA Laser tx bias current (Channel 8) : 0.000 mA Transmit avg
> optical power (Channel 1) : 1.5975 mW / 2.03 dBm Transmit avg optical
> power (Channel 2) : 1.6486 mW / 2.17 dBm Transmit avg optical power
> (Channel 3) : 1.6333 mW / 2.13 dBm Transmit avg optical power (Channel
> 4) : 1.4387 mW / 1.58 dBm Transmit avg optical power (Channel 5) :
> 0.0000 mW / -inf dBm Transmit avg optical power (Channel 6) : 0.0000 mW
> / -inf dBm Transmit avg optical power (Channel 7) : 0.0000 mW / -inf dBm
> Transmit avg optical power (Channel 8) : 0.0000 mW / -inf dBm Rcvr signal
> avg optical power (Channel 1) : 2.2489 mW / 3.52 dBm Rcvr signal avg optical
> power (Channel 2) : 1.8629 mW / 2.70 dBm Rcvr signal avg optical power
> (Channel 3) : 1.8427 mW / 2.65 dBm Rcvr signal avg optical power (Channel
> 4) : 1.8215 mW / 2.60 dBm Rcvr signal avg optical power (Channel 5) : 0.0000
> mW / -inf dBm Rcvr signal avg optical power (Channel 6) : 0.0000 mW / -inf
> dBm Rcvr signal avg optical power (Channel 7) : 0.0000 mW / -inf dBm Rcvr
> signal avg optical power (Channel 8) : 0.0000 mW / -inf dBm Module
> temperature high alarm : Off Module temperature low alarm : Off
> Module temperature high warning : On Module temperature low
> warning : Off Module voltage high alarm : Off Module voltage
> low alarm : Off Module voltage high warning : Off Module
> voltage low warning : Off Laser bias current high alarm (Chan 1) : Off
> Laser bias current low alarm (Chan 1) : Off Laser bias current high warning
> (Chan 1) : Off Laser bias current low warning (Chan 1) : Off Laser tx power
> high alarm (Channel 1) : Off Laser tx power low alarm (Channel 1) : Off
> Laser tx power high warning (Channel 1) : Off Laser tx power low
> warning (Channel 1) : Off Laser rx power high alarm (Channel 1) : Off Laser
> rx power low alarm (Channel 1) : Off Laser rx power high warning (Channel
> 1) : Off Laser rx power low warning (Channel 1) : Off Laser bias current high
> alarm (Chan 2) : Off Laser bias current low alarm (Chan 2) : Off Laser bias
> current high warning (Chan 2) : Off Laser bias current low warning (Chan 2) :
> Off Laser tx power high alarm (Channel 2) : Off Laser tx power low
> alarm (Channel 2) : Off Laser tx power high warning (Channel 2) : Off Laser
> tx power low warning (Channel 2) : Off Laser rx power high alarm (Channel
> 2) : Off Laser rx power low alarm (Channel 2) : Off Laser rx power high
> warning (Channel 2) : Off Laser rx power low warning (Channel 2) : Off Laser
> bias current high alarm (Chan 3) : Off Laser bias current low alarm (Chan
> 3) : Off Laser bias current high warning (Chan 3) : Off Laser bias current low
> warning (Chan 3) : Off Laser tx power high alarm (Channel 3) : Off Laser tx
> power low alarm (Channel 3) : Off Laser tx power high warning (Channel
> 3) : Off Laser tx power low warning (Channel 3) : Off Laser rx power high
> alarm (Channel 3) : Off Laser rx power low alarm (Channel 3) : Off Laser rx
> power high warning (Channel 3) : Off Laser rx power low warning (Channel
> 3) : Off Laser bias current high alarm (Chan 4) : Off Laser bias current low
> alarm (Chan 4) : Off Laser bias current high warning (Chan 4) : Off Laser bias
> current low warning (Chan 4) : Off Laser tx power high alarm (Channel 4) :
> Off Laser tx power low alarm (Channel 4) : Off Laser tx power high warning
> (Channel 4) : Off Laser tx power low warning (Channel 4) : Off Laser rx
> power high alarm (Channel 4) : Off Laser rx power low alarm (Channel 4) :
> Off Laser rx power high warning (Channel 4) : Off Laser rx power low
> warning (Channel 4) : Off Laser bias current high alarm (Chan 5) : Off Laser
> bias current low alarm (Chan 5) : Off Laser bias current high warning (Chan
> 5) : Off Laser bias current low warning (Chan 5) : Off Laser tx power high
> alarm (Channel 5) : Off Laser tx power low alarm (Channel 5) : Off Laser tx
> power high warning (Channel 5) : Off Laser tx power low warning (Channel
> 5) : Off Laser rx power high alarm (Channel 5) : Off Laser rx power low
> alarm (Channel 5) : Off Laser rx power high warning (Channel 5) : Off Laser
> rx power low warning (Channel 5) : Off Laser bias current high alarm (Chan
> 6) : Off Laser bias current low alarm (Chan 6) : Off Laser bias current high
> warning (Chan 6) : Off Laser bias current low warning (Chan 6) : Off Laser tx
> power high alarm (Channel 6) : Off Laser tx power low alarm (Channel 6) :
> Off Laser tx power high warning (Channel 6) : Off Laser tx power low
> warning (Channel 6) : Off Laser rx power high alarm (Channel 6) : Off Laser
> rx power low alarm (Channel 6) : Off Laser rx power high warning (Channel
> 6) : Off Laser rx power low warning (Channel 6) : Off Laser bias current high
> alarm (Chan 7) : Off Laser bias current low alarm (Chan 7) : Off Laser bias
> current high warning (Chan 7) : Off Laser bias current low warning (Chan 7) :
> Off Laser tx power high alarm (Channel 7) : Off Laser tx power low
> alarm (Channel 7) : Off Laser tx power high warning (Channel 7) : Off Laser
> tx power low warning (Channel 7) : Off Laser rx power high alarm (Channel
> 7) : Off Laser rx power low alarm (Channel 7) : Off Laser rx power high
> warning (Channel 7) : Off Laser rx power low warning (Channel 7) : Off Laser
> bias current high alarm (Chan 8) : Off Laser bias current low alarm (Chan
> 8) : Off Laser bias current high warning (Chan 8) : Off Laser bias current low
> warning (Chan 8) : Off Laser tx power high alarm (Channel 8) : Off Laser tx
> power low alarm (Channel 8) : Off Laser tx power high warning (Channel
> 8) : Off Laser tx power low warning (Channel 8) : Off Laser rx power high
> alarm (Channel 8) : Off Laser rx power low alarm (Channel 8) : Off Laser rx
> power high warning (Channel 8) : Off Laser rx power low warning (Channel
> 8) : Off Laser bias current high alarm threshold : 130.000 mA Laser bias
> current low alarm threshold : 10.000 mA Laser bias current high warning
> threshold : 125.000 mA Laser bias current low warning threshold : 15.000
> mA Laser output power high alarm threshold : 3.5481 mW / 5.50 dBm Laser
> output power low alarm threshold : 0.4074 mW / -3.90 dBm Laser output
> power high warning threshold : 2.8184 mW / 4.50 dBm Laser output power
> low warning threshold : 0.5129 mW / -2.90 dBm Module temperature high
> alarm threshold : 75.00 degrees C / 167.00 degrees F Module temperature
> low alarm threshold : -5.00 degrees C / 23.00 degrees F Module temperature
> high warning threshold : 70.00 degrees C / 158.00 degrees F Module
> temperature low warning threshold : 0.00 degrees C / 32.00 degrees F
> Module voltage high alarm threshold : 3.6300 V Module voltage low alarm
> threshold : 3.0500 V Module voltage high warning threshold : 3.4650 V
> Module voltage low warning threshold : 3.1350 V Laser rx power high alarm
> threshold : 3.5481 mW / 5.50 dBm Laser rx power low alarm threshold :
> 0.1288 mW / -8.90 dBm Laser rx power high warning threshold : 2.8184
> mW / 4.50 dBm Laser rx power low warning threshold : 0.2042 mW / -6.90
> dBm
>
> Now the output rendered into json i.e. for ethtool --json -m <iface>
>
> [ {
> "identifier": 11,
> "identifier_description": "QSFP28",
> "power_class": 5,
> "max_power" : 10.00,
> "max_power_units" : "W",
> "connector" : 12,
> "connector_description" : "MPO Parallel Optic",
> "cable_assembly_length" : 0.00,
> "cable_assembly_length_units" : "m",
> "tx_cdr_bypass_control" : false,
> "rx_cdr_bypass_control" : false,
> "tx_cdr" : true,
> "rx_cdr" : true,
> "transmitter_technology" : 6,
> "transmitter_technology_description" : "1310 nm EML",
> "laser_wavelength" : 1311.000,
> "laser_wavelength_units" : "nm",
> "laser_wavelength_tolerance" : 6.500,
> "laser_wavelength_tolerance_units" : "nm",
> "length_smf" : 2.00,
> "length_smf_units" : "km",
> "length_om5" : 0,
> "length_om4" : 0,
> "length_om3" : 0,
> "length_om2" : 0,
> "length_om_units" : "m",
> "vendor_name" : [65, 114, 105, 115, 116, 97, 32, 78, 101, 116, 119, 111,
> 114, 107, 115, 32],
> "vendor_oui" : [0, 28, 115],
> "vendor_pn" : [81, 68, 68, 45, 52, 48, 48, 71, 45, 88, 68, 82, 52],
> "vendor_rev" : [4, 1],
> "vendor_sn" : [88, 75, 84, 50, 52, 50, 50, 49, 49, 52, 56, 49],
> "date_code" : [50, 52, 48, 53, 51, 49],
> "revision_compliance" : 48,
> "rx_loss_of_signal" : [false, false, false, false, false, false, false, false],
> "tx_loss_of_signal" : [false, false, false, false, false, false, false, false],
> "rx_loss_of_lock" : [false, false, false, false, false, false, false, false],
> "tx_loss_of_lock" : [false, false, false, false, false, false, false, false],
> "tx_fault" : [false, false, false, false, false, false, false, false],
> "module_state" : 3,
> "module_state_description" : "ModuleReady",
> "low_pwr_allow_request_hw": true,
> "low_pwr_request_sw": false,
> "module_temperature" : 70.49,
> "module_temperature_units" : "C",
> "module_voltage" : 3.2186,
> "module_voltage_units" : "V",
> "laser_tx_bias_current" : [83.806, 81.878, 72.900, 110.100, 0, 0, 0, 0],
> "laser_tx_bias_current_units" : "mA",
> "transmit_avg_optical_power" : [1.5975, 1.6486, 1.6333, 1.4387, 0, 0, 0,
> 0],
> "transmit_avg_optical_power_units" : "mW",
> "rcvr_signal_avg_optical_power" : [2.2489, 1.8629, 1.8427, 1.8215, 0, 0,
> 0, 0],
> "rcvr_signal_avg_optical_power_units" : "mW",
> "module_temperature_high_alarm" : false,
> "module_temperature_low_alarm" : false,
> "module_temperature_high_warning" : true,
> "module_temperature_low_warning" : false,
> "module_voltage_high_alarm" : false,
> "module_voltage_low_alarm" : false,
> "module_voltage_high_warning" : false,
> "module_voltage_low_warning" : false,
> "lazer_bias_current_high_alarm" : [false, false, false, false, false, false, false,
> false],
> "lazer_bias_current_low_alarm" : [false, false, false, false, false, false, false,
> false],
> "lazer_bias_current_high_warning" : [false, false, false, false, false, false,
> false, false],
> "lazer_bias_current_low_warning" : [false, false, false, false, false, false,
> false, false],
> "lazer_tx_power_high_alarm" : [false, false, false, false, false, false, false,
> false],
> "lazer_tx_power_low_alarm" : [false, false, false, false, false, false, false,
> false],
> "lazer_tx_power_high_warning" : [false, false, false, false, false, false, false,
> false],
> "lazer_tx_power_low_warning" : [false, false, false, false, false, false, false,
> false],
> "lazer_rx_power_high_alarm" : [false, false, false, false, false, false, false,
> false],
> "lazer_rx_power_low_alarm" : [false, false, false, false, false, false, false,
> false],
> "lazer_rx_power_high_warning" : [false, false, false, false, false, false, false,
> false],
> "lazer_rx_power_low_warning" : [false, false, false, false, false, false, false,
> false],
> "lazer_bias_current_high_alarm_threshold" : 130.000,
> "lazer_bias_current_low_alarm_threshold" : 10.000,
> "lazer_bias_current_high_warning_threshold" : 125.000,
> "lazer_bias_current_low_warning_threshold" : 15.000,
> "lazer_bias_current_alarm_warning_units" : "mA",
> "lazer_output_power_high_alarm_threshold" : 3.5481,
> "lazer_output_power_low_alarm_threshold" : 0.4074,
> "lazer_output_power_high_warning_threshold" : 2.8184,
> "lazer_output_power_low_warning_threshold" : 0.5129,
> "lazer_output_power_warning_alarm_units" : "mW",
s/lazer/laser on all the occurrences above.
> "module_temperature_high_alarm_threshold" : 75.00,
> "module_temperature_low_alarm_threshold" : -5.00,
> "module_temperature_high_warning_threshold" : 70.00,
> "module_temperature_low_warning_threshold" : 0.00,
> "module_temperature_warning_alarm_units" : "C",
> "module_voltage_high_alarm_threshold" : 3.6300,
> "module_voltage_low_alarm_threshold" : 3.0500,
> "module_voltage_high_warning_threshold" : 3.4650,
> "module_voltage_low_warning_threshold" : 3.1350,
> "module_voltage_warning_alarm_units" : "V",
> "lazer_rx_power_high_alarm_threshold" : 3.5481,
> "lazer_rx_power_low_alarm_threshold" : 0.1288,
> "lazer_rx_power_high_warning_threshold" : 2.8184,
> "lazer_rx_power_low_warning_threshold" : 0.2042,
> "lazer_rx_power_warning_alarm_units" : "mW",
Same.
> } ]
Please let me know what you think.
Thanks,
Danielle
Powered by blists - more mailing lists