diff options
| author | Abdelkader Boudih <freebsd@seuros.com> | 2026-07-20 22:47:49 +0000 |
|---|---|---|
| committer | Adrian Chadd <adrian@FreeBSD.org> | 2026-07-20 22:47:58 +0000 |
| commit | 23ea903f68017f781ff579325caa01c928612d57 (patch) | |
| tree | 6440ad031532c90f397d48f02c6ff1d2edbf5003 | |
| parent | 5b7449ad47be4582ff451ce4615753dab4a6f882 (diff) | |
firewire: force root change when root node is not cycle master capable
When a FireWire bus resets, all devices negotiate who is the new boss.
when we detect the root node can't be cycle master,
we send a PHY config packet that forces a reelection.
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D58309
| -rw-r--r-- | sys/dev/firewire/firewire.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c index cc0cf9e5b7ad..1020aff31929 100644 --- a/sys/dev/firewire/firewire.c +++ b/sys/dev/firewire/firewire.c @@ -2491,9 +2491,10 @@ fw_bmr(struct firewire_comm *fc) cmstr = fc->max_node; else { device_printf(fc->bdev, - "root node is not cycle master capable\n"); - /* TODO: issue PHY config to force root change + bus reset */ - cmstr = fc->nodeid; + "root node is not cycle master capable, " + "forcing root to node %d\n", fc->nodeid); + fw_phy_config(fc, fc->nodeid, -1); + return 0; } } else cmstr = -1; |
