oxidecomputer / oxidecomputer/omicron
oxide hardware switch-port show-status should not query EEPROM of transceivers by default
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
In my experience, it's uncommon for an operator to query the EEPROM of a transceiver unless they are troubleshooting an L1 issue, whereas it's quite common to want to look at the link state of ports regardless of whether there is a problem (e.g. to check which links are in use).
In systems where all transceivers are connected to a shared I2C bus, these I2C reads need to happen serially.
Additionally, querying the EEPROM of a bad optic via I2C read can cause said optic to act up (e.g. returning bad info, going unresponsive, or even locking up the bus).
Given the relative infrequency of these EEPROM queries (and how "small" (cognitively) of a request it is to check MAC addr + link state), I think it would make sense to remove the EEPROM query from the default behavior.
e.g.
Maybe move the EEPROM query behind a separate API endpoint, or move it behind an optional parameter to the existing API endpoint.
Example proposed output:
✕ treyaspelund@Tallon-IV 12:30:42 PM | ~/Downloads
‣ ./oxide --profile colo-admin system hardware switch-port show-status
switch0
=======
Port Configured Enabled MAC Autoneg FEC Link/FSM State Media Speed
qsfp0 true true a8:40:25:05:15:23 false RS up/LinkUp Optical Speed100G
qsfp1 true true a8:40:25:05:15:27 false None up/LinkUp Optical Speed100G
qsfp10 false - - - - - - -
qsfp11 false - - - - - - -
qsfp12 false - - - - - - -
qsfp13 false - - - - - - -
qsfp14 false - - - - - - -
qsfp15 false - - - - - - -
qsfp16 false - - - - - - -
qsfp17 false - - - - - - -
qsfp18 false - - - - - - -
qsfp19 false - - - - - - -
qsfp2 false - - - - - - -
qsfp20 false - - - - - - -
qsfp21 false - - - - - - -
qsfp22 false - - - - - - -
qsfp23 false - - - - - - -
qsfp24 false - - - - - - -
qsfp25 false - - - - - - -
qsfp26 false - - - - - - -
qsfp27 false - - - - - - -
qsfp28 false - - - - - - -
qsfp29 false - - - - - - -
qsfp3 false - - - - - - -
qsfp30 false - - - - - - -
qsfp31 false - - - - - - -
qsfp4 false - - - - - - -
qsfp5 false - - - - - - -
qsfp6 false - - - - - - -
qsfp7 false - - - - - - -
qsfp8 true true a8:40:25:05:15:43 false RS up/LinkUp Optical Speed100G
qsfp9 false - - - - - - -
switch1
=======
Port Configured Enabled MAC Autoneg FEC Link/FSM State Media Speed
qsfp0 true true a8:40:25:05:0f:23 false RS up/LinkUp Optical Speed100G
qsfp1 true true a8:40:25:05:0f:27 false None up/LinkUp Optical Speed100G
qsfp10 false - - - - - - -
qsfp11 false - - - - - - -
qsfp12 false - - - - - - -
qsfp13 false - - - - - - -
qsfp14 false - - - - - - -
qsfp15 false - - - - - - -
qsfp16 false - - - - - - -
qsfp17 false - - - - - - -
qsfp18 false - - - - - - -
qsfp19 false - - - - - - -
qsfp2 false - - - - - - -
qsfp20 false - - - - - - -
qsfp21 false - - - - - - -
qsfp22 false - - - - - - -
qsfp23 false - - - - - - -
qsfp24 false - - - - - - -
qsfp25 false - - - - - - -
qsfp26 false - - - - - - -
qsfp27 false - - - - - - -
qsfp28 false - - - - - - -
qsfp29 false - - - - - - -
qsfp3 false - - - - - - -
qsfp30 false - - - - - - -
qsfp31 false - - - - - - -
qsfp4 false - - - - - - -
qsfp5 false - - - - - - -
qsfp6 false - - - - - - -
qsfp7 false - - - - - - -
qsfp8 true true a8:40:25:05:0f:43 false RS up/LinkUp Optical Speed100G
qsfp9 false - - - - - - -
Example current output:
✕ treyaspelund@Tallon-IV 12:30:42 PM | ~/Downloads
‣ ./oxide --profile colo-admin system hardware switch-port show-status
switch0
=======
Port Configured Enabled MAC Autoneg FEC Link/FSM State Media Speed
qsfp0 true true a8:40:25:05:15:23 false RS up/LinkUp Optical Speed100G
qsfp1 true true a8:40:25:05:15:27 false None up/LinkUp Optical Speed100G
qsfp10 false - - - - - - -
qsfp11 false - - - - - - -
qsfp12 false - - - - - - -
qsfp13 false - - - - - - -
qsfp14 false - - - - - - -
qsfp15 false - - - - - - -
qsfp16 false - - - - - - -
qsfp17 false - - - - - - -
qsfp18 false - - - - - - -
qsfp19 false - - - - - - -
qsfp2 false - - - - - - -
qsfp20 false - - - - - - -
qsfp21 false - - - - - - -
qsfp22 false - - - - - - -
qsfp23 false - - - - - - -
qsfp24 false - - - - - - -
qsfp25 false - - - - - - -
qsfp26 false - - - - - - -
qsfp27 false - - - - - - -
qsfp28 false - - - - - - -
qsfp29 false - - - - - - -
qsfp3 false - - - - - - -
qsfp30 false - - - - - - -
qsfp31 false - - - - - - -
qsfp4 false - - - - - - -
qsfp5 false - - - - - - -
qsfp6 false - - - - - - -
qsfp7 false - - - - - - -
qsfp8 true true a8:40:25:05:15:43 false RS up/LinkUp Optical Speed100G
qsfp9 false - - - - - - -
Receiver Power Transmitter Bias Current Transmitter Power
[Average(1.3845), Average(1.2108), Average(1.1593), Average(1.0652)] [47.88, 48.45, 47.88, 47.88] [0.76060003, 0.6331, 0.86630005, 1.1315]
[Average(1.5959), Average(1.1918), Average(1.0427), Average(1.2492)] [43.522, 43.276, 43.866, 43.658] [1.51, 1.4474, 1.6165999, 1.8414]
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
[Average(1.2421), Average(0.9875001), Average(0.89040005), Average(1.0207)] [47.88, 47.88, 47.88, 47.88] [1.0199, 0.8388, 1.0103, 1.055]
- - -
switch1
=======
Port Configured Enabled MAC Autoneg FEC Link/FSM State Media Speed
qsfp0 true true a8:40:25:05:0f:23 false RS up/LinkUp Optical Speed100G
qsfp1 true true a8:40:25:05:0f:27 false None up/LinkUp Optical Speed100G
qsfp10 false - - - - - - -
qsfp11 false - - - - - - -
qsfp12 false - - - - - - -
qsfp13 false - - - - - - -
qsfp14 false - - - - - - -
qsfp15 false - - - - - - -
qsfp16 false - - - - - - -
qsfp17 false - - - - - - -
qsfp18 false - - - - - - -
qsfp19 false - - - - - - -
qsfp2 false - - - - - - -
qsfp20 false - - - - - - -
qsfp21 false - - - - - - -
qsfp22 false - - - - - - -
qsfp23 false - - - - - - -
qsfp24 false - - - - - - -
qsfp25 false - - - - - - -
qsfp26 false - - - - - - -
qsfp27 false - - - - - - -
qsfp28 false - - - - - - -
qsfp29 false - - - - - - -
qsfp3 false - - - - - - -
qsfp30 false - - - - - - -
qsfp31 false - - - - - - -
qsfp4 false - - - - - - -
qsfp5 false - - - - - - -
qsfp6 false - - - - - - -
qsfp7 false - - - - - - -
qsfp8 true true a8:40:25:05:0f:43 false RS up/LinkUp Optical Speed100G
qsfp9 false - - - - - - -
Receiver Power Transmitter Bias Current Transmitter Power
[Average(1.4576), Average(1.1553), Average(1.424), Average(1.3786)] [47.88, 47.88, 47.88, 47.88] [1.1952, 0.889, 1.0997, 1.1837001]
[Average(0.592), Average(1.1238), Average(0.6778), Average(0.787)] [80.37, 75.24, 75.24, 75.24] [1.1037, 1.1454, 1.439, 1.3084]
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
[Average(1.2229), Average(0.8772), Average(0.9954), Average(1.1318)] [47.88, 47.88, 47.88, 47.88] [0.9629, 0.7113, 0.88100004, 1.2583001]
- - -
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the system hardware switch-port show-status command and trace how its current output obtains transceiver EEPROM data. Decide whether the EEPROM query belongs behind an optional parameter or a separate API endpoint, then verify that the default output retains port link information without performing those reads.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, cli
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100