Fix sff panic deadlock, share the evdev probe, assorted review cleanups

This commit is contained in:
flamingcow
2026-08-31 15:51:52 -07:00
parent 10d97ee82a
commit e4731c94cd
13 changed files with 205 additions and 272 deletions
+9 -9
View File
@@ -612,7 +612,7 @@ func waitCarrier(names [2]string, done *atomic.Bool) {
// carrier settles — the host checks just reset the links — before any command.
// Never waits for a link: there may be no cable, and forcing config needs
// none — the AN restart applies it whenever training next happens.
func moduleChecks(mods []*phyModule, names [2]string) []checkResult {
func moduleChecks(mods []*phyModule) []checkResult {
var out []checkResult
fail := func(item string, err error) []checkResult {
return append(out, checkResult{item: item, err: err})
@@ -628,26 +628,26 @@ func moduleChecks(mods []*phyModule, names [2]string) []checkResult {
}
}
master := !mixed
for i, m := range mods {
for _, m := range mods {
b, ok := m.dev.(*bcm)
if !ok {
out = append(out, checkResult{item: names[i] + " role", state: "auto"})
out = append(out, checkResult{item: m.dev.name() + " role", state: "auto"})
continue
}
res := checkResult{item: names[i] + " eee", state: "forced off"}
res := checkResult{item: m.dev.name() + " eee", state: "forced off"}
if err := b.forceEEEOff(); err != nil {
return fail(res.item, err)
}
out = append(out, res)
res = checkResult{item: names[i] + " jumbo", state: "forced on"}
res = checkResult{item: m.dev.name() + " jumbo", state: "forced on"}
if err := b.forceJumbo(); err != nil {
return fail(res.item, err)
}
out = append(out, res)
res = checkResult{item: names[i] + " role", state: "forced master"}
res = checkResult{item: m.dev.name() + " role", state: "forced master"}
if !master {
res.state = "forced slave"
}
@@ -672,7 +672,7 @@ func moduleChecks(mods []*phyModule, names [2]string) []checkResult {
adv[i] = v
advs[i] = fmt.Sprintf("%#04x", v)
if _, ok := m.dev.(*bcm); ok && v != 0 {
res.err = fmt.Errorf("%s still advertises EEE %#04x", names[i], v)
res.err = fmt.Errorf("%s still advertises EEE %#04x", m.dev.name(), v)
}
}
if res.err == nil && adv[0]&adv[1] != 0 {
@@ -681,9 +681,9 @@ func moduleChecks(mods []*phyModule, names [2]string) []checkResult {
res.state = advs[0] + "/" + advs[1]
out = append(out, res)
for i, m := range mods {
for _, m := range mods {
if err := devRestartAN(m.dev); err != nil {
return fail(names[i]+" retrain", err)
return fail(m.dev.name()+" retrain", err)
}
}
return out