oxidecomputer / oxidecomputer/dendrite

Can we be more helpful when links are configured incorrectly

Open
#41 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

I had a 100G capable module that I configured a 200G link for. I eventually realized my error, but we weren't very helpful along the way. The link state stayed wedged in Unknown and the link history looked something like:

# swadm link history qsfp0/0
Time     Class           Subclass          Channel  Details
359641   QsfpFSM         Detected          -        
360541   QsfpFSM         WaitUpdate        -        
361588   QsfpFSM         Update            -        
363035   QsfpChannelFSM  EnaCdr            0        
363035   QsfpChannelFSM  EnaCdr            1        
363035   QsfpChannelFSM  EnaCdr            2        
363035   QsfpChannelFSM  EnaCdr            3        
363554   QsfpChannelFSM  Appsel            0        
363554   QsfpChannelFSM  Appsel            1        
363554   QsfpChannelFSM  Appsel            2        
363554   QsfpChannelFSM  Appsel            3        
363631   QsfpChannelFSM  Enabling          0        
363631   MediaFSM        WaitMediaInit     -        
363631   QsfpChannelFSM  Enabling          1        
363631   QsfpChannelFSM  Enabling          2        
363631   QsfpChannelFSM  Enabling          3        
364043   PortFSM         WaitSignalOK      -        
364182   PortFSM         WaitPLLReady      -        
364204   LinkAdmin       Enable            -        
364204   MediaFSM        WaitSerdesTxInit  -        
364412   MediaFSM        MediaDetected     -        
373448   LinkAdmin       Create            -        speed: 200G  fec: RS
3617137  QsfpFSM         Detected          -        
3617517  QsfpFSM         WaitToffLmode     -        
3617706  QsfpFSM         ToffLpmode        -        
3617707  QsfpFSM         DpDeactivate      -        
3617739  QsfpFSM         WaitLowPwr        -        
3620238  QsfpFSM         WaitTonTxdis      -        
3620249  QsfpFSM         WaitTReset        -        
3620274  QsfpFSM         Inserted          -        
3622461  QsfpFSM         Idle              -        
3622482  QsfpFSM         Removed           -

These modules were both QSFP28, governed by SFF-8636. We should be able to use SFF-8024 Extended Specification Compliance References where they are supported.

Image

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 with the swadm link history qsfp0/0 path and the QSFP state transitions shown in the report. Read the SFF-8636 and supported SFF-8024 Extended Specification Compliance References, then reproduce the 100G-module/200G-link mismatch; done means the invalid configuration produces a helpful diagnostic instead of leaving the link in Unknown.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.