oxidecomputer / oxidecomputer/dendrite

link enable errors should be reported to the user

Open
#56 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.