The empty bridge fails to be set up before the first wireless device links up
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 37
- Forks
- 62
- PR merge metrics
- No merged PRs in 30d
Description
Consider a bridge that contains only wireless members and no wired devices.
In netifd, the default flow is: when the first member device of a bridge is created, DEV_EVENT_ADD is triggered, which calls device_set_present() to bring the bridge up.
- If the first member is a wired device, the bridge comes up successfully.
- If the first member is a wireless device, the bridge may or may not come up successfully, depending on whether the wireless device has finished linking up.
Root cause: Wireless devices have an inherent startup latency. When DEV_EVENT_ADD fires, the wireless device has not yet linked up, so the bridge is still effectively empty. Attempting to bring up an empty bridge fails. If instead we wait until DEV_EVENT_LINK_UP is received before calling device_set_present(), the wireless device has fully joined the bridge and the bring-up succeeds.
Logs when the bridge comes up successfully:
Mon Apr 27 10:17:43 2026 daemon.notice netifd: Network device '' link is up
Mon Apr 27 10:17:44 2026 daemon.notice netifd: Network device 'wlan0-1' link is up
Mon Apr 27 10:17:49 2026 daemon.notice netifd: Network device 'wlan1' link is up
Mon Apr 27 10:17:49 2026 daemon.notice netifd: Network device 'wlan1-1' link is up
Tue Apr 28 02:31:18 2026 daemon.notice netifd: Interface 'down1v0' is enabled
Tue Apr 28 02:31:18 2026 daemon.notice netifd: Interface 'down1v0' is setting up now
Tue Apr 28 02:31:18 2026 daemon.notice netifd: Interface 'down1v0' is now up
Tue Apr 28 02:31:22 2026 daemon.notice netifd: Network device 'wlan0-1' link is down
Tue Apr 28 02:31:22 2026 daemon.notice netifd: Network device 'wlan0' link is down
Tue Apr 28 02:31:23 2026 daemon.notice netifd: bridge 'down' link is up
Tue Apr 28 02:31:23 2026 daemon.notice netifd: 8021q 'down1v0' link is up
Tue Apr 28 02:31:23 2026 daemon.notice netifd: Interface 'down1v0' has link connectivity
Tue Apr 28 02:31:24 2026 daemon.notice netifd: bridge 'down' link is down
Tue Apr 28 02:31:24 2026 daemon.notice netifd: 8021q 'down1v0' link is down
Tue Apr 28 02:31:24 2026 daemon.notice netifd: Interface 'down1v0' has link connectivity loss
Tue Apr 28 02:31:26 2026 daemon.notice netifd: Network device 'wlan1-1' link is down
Tue Apr 28 02:31:26 2026 daemon.notice netifd: Network device 'wlan1' link is down
Tue Apr 28 02:31:26 2026 daemon.notice netifd: bridge 'down' link is up
Tue Apr 28 02:31:26 2026 daemon.notice netifd: 8021q 'down1v0' link is up
Tue Apr 28 02:31:26 2026 daemon.notice netifd: Interface 'down1v0' has link connectivity
Tue Apr 28 02:31:26 2026 daemon.notice netifd: bridge 'down' link is down
Tue Apr 28 02:31:26 2026 daemon.notice netifd: 8021q 'down1v0' link is down
Tue Apr 28 02:31:26 2026 daemon.notice netifd: Interface 'down1v0' has link connectivity loss
Tue Apr 28 02:31:32 2026 daemon.notice netifd: Network device 'wlan0' link is up
Tue Apr 28 02:31:32 2026 daemon.notice netifd: bridge 'down' link is up
Tue Apr 28 02:31:32 2026 daemon.notice netifd: 8021q 'down1v0' link is up
Tue Apr 28 02:31:32 2026 daemon.notice netifd: Interface 'down1v0' has link connectivity
Tue Apr 28 02:31:32 2026 daemon.notice netifd: Network device 'wlan0-1' link is up
Tue Apr 28 02:31:32 2026 daemon.notice netifd: Network device 'wlan0-2' link is up
Tue Apr 28 02:31:34 2026 daemon.notice netifd: Network device 'wlan1' link is up
Tue Apr 28 02:31:34 2026 daemon.notice netifd: Network device 'wlan1-1' link is up
Tue Apr 28 02:31:35 2026 daemon.notice netifd: Network device 'wlan1-2' link is up
Logs when the bridge fails to come up:
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is enabled
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is setting up now
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is now up
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is now down
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is disabled
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is enabled
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is setting up now
Mon Apr 27 10:24:47 2026 daemon.notice netifd: Interface 'down1v0' is now up
Mon Apr 27 10:24:48 2026 daemon.notice netifd: Interface 'down1v0' is disabled
Mon Apr 27 10:24:48 2026 daemon.notice netifd: Interface 'down1v0' is now down
Mon Apr 27 10:24:48 2026 daemon.notice netifd: Interface 'down1v0' is enabled
Mon Apr 27 10:24:48 2026 daemon.notice netifd: Interface 'down1v0' is setting up now
Mon Apr 27 10:24:48 2026 daemon.notice netifd: Interface 'down1v0' is now up
Mon Apr 27 10:24:55 2026 daemon.notice netifd: Network device 'wlan0' link is up
Tue Apr 28 02:11:20 2026 daemon.notice netifd: Network device 'wlan0' link is down
Tue Apr 28 02:11:21 2026 daemon.notice netifd: Network device 'wlan1' link is up
Tue Apr 28 02:11:21 2026 daemon.notice netifd: Network device 'wlan1-1' link is up
Tue Apr 28 02:11:21 2026 daemon.notice netifd: Network device 'wlan1-2' link is up
Tue Apr 28 02:11:31 2026 daemon.notice netifd: Network device 'wlan0' link is up
Tue Apr 28 02:11:31 2026 daemon.notice netifd: Network device 'wlan0-1' link is up
Tue Apr 28 02:11:31 2026 daemon.notice netifd: Network device 'wlan0-2' link is up
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 by tracing the DEV_EVENT_ADD path through device_set_present(), then compare it with handling for DEV_EVENT_LINK_UP. Reproduce a bridge containing only wireless members and verify that bring-up waits until a wireless device has linked up and no longer fails while the bridge is empty.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100