Subject: Re: [PATCH ethtool-next 08/14] cmis: Enable JSON output support in CMIS modules

From: Jakub Kicinski <[email-masked]>
Date: Tue, 28 Jan 2025 14:09:23 -0800

On Tue, 28 Jan 2025 13:18:54 +0000 Danielle Ratson wrote:
> > >         "module_state": 3,
> > >         "module_state_description": "ModuleReady",
> > >         "low_pwr_allow_request_hw": false,
> > >         "low_pwr_request_sw": false,
> > >         "module_temperature": 36.8203,
> > >         "module_temperature_units": "degrees C",
> > >         "module_voltage": 3.3385,
> > >         "module_voltage_units": "V",
> > >         "laser_tx_bias_current": [
> > > 0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000 ],
> > >         "laser_tx_bias_current_units": "mA",  
> > 
> > How do you think about the units?
> > If they may differ module to module - should we aim to normalize those?  
> 
> Not sure if I understand what you mean. What do you wish to normalize and how?

I don't understand the "_units" keys, basically:

        "max_power": 10.0000,
        "max_power_units": "W",     <<
	[...]
            "low_warning_threshold": 0.1585,
            "units": "mW"           <<

or:

        "length_(smf)": 0.0000,
        "length_(smf)_units": "km",  <<
        "length_(om5)": 0,
        "length_(om5)_units": "m",   <<

What are these for?

Is the consumer of the JSON output supposed to be parsing the units 
and making sure to scale the values every time it reads (e.g. divide 
by 1000 if it wants W but unit is mW)?

Or the unit is fully implied by the key, and can't change? IOW the unit
is only listed so that the human writing the consumer can figure out
the unit and then hardcode it?