oxidecomputer / oxidecomputer/dendrite
link enable errors should be reported to the user
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 20
- Forks
- 3
- Avg merge
- 3d 11h
- Merged PRs (30d)
- 4
Description
Originally reported as https://github.com/oxidecomputer/dendrite-archived/issues/1016
In manufacturing, we had two ports configured to run at 100g when the transceivers only supported 200g. This manifested as the ports remaining in a disabled state even after being enabled via swadm, with no feedback to the caller at all. Even swadm ls simply tells us that the links are disabled:
Port/Link Media Speed FEC Autoneg Enabled State MAC
...
qsfp0/0 Optical 100G RS false false Unknown a8:40:25:05:2a:23
qsfp1/0 Optical 100G RS false false Unknown a8:40:25:05:2a:27
The only indication that anything is amiss comes from looking at the link history:
root@BRM48230020-switch:~# swadm link history qsfp3/0
Time Class Subclass Channel Details
65264 MediaFSM IncompatibleMedia -
65750 MediaFSM MediaDetected -
74299 LinkAdmin Create - speed: 100G fec: RS
286125 QsfpFSM Detected -
291082 QsfpFSM WaitToffLmode -
295848 QsfpFSM ToffLpmode -
303890 QsfpFSM DpDeactivate -
319948 QsfpFSM WaitLowPwr -
324387 QsfpFSM WaitTonTxdis -
325622 QsfpFSM WaitTReset -
333228 QsfpFSM Inserted -
Enabling a link has to be an asynchronous operation, since the amount of time required is potentially unbounded, so providing useful feedback will be more complicated than adding an error message to the the swadm link create operation.
Contributor guide
No contributing guide indexed for this repository
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 swadm link create operation and compare its behavior with the link history output described in the issue. Trace how asynchronous link-enable failures are surfaced to the caller, then verify that incompatible media or configuration no longer leaves the user without actionable feedback.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- embedded-iot, networking
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100