Repository navigation
fix(agent): scan neighbors per interface with own timeout - #1388
Merged
Merged
Conversation
The neighbor scan ran as a single shell loop over every wireless interface with one shared 10 s budget, and the runner discarded the partial output when the deadline killed it. On units whose 5 GHz radio sits on a DFS channel (slow passive scan, e.g. UniFi 6 Lite / mt7621) the whole loop was killed before the 2.4 GHz interfaces finished, so the agent reported no neighbors at all and the channel analysis only ever listed the unit's own SSIDs. Scan each interface as its own command (8 s budget each), reusing a single iw dev call to enumerate interfaces and to feed the own-BSSID section. A slow or stuck radio now only empties its own section. The monolithic CmdScan literal stays exported (deprecated) for vendored consumers. Refs #1338
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The neighbor scan ran as a single shell loop over every wireless interface with one shared 10 s timeout, and the runner discarded the partial output when the deadline killed the loop. On units whose 5 GHz radio sits on a DFS channel (slow passive scan, e.g. the UniFi 6 Lite / mt7621 from #1338), the loop was killed before the 2.4 GHz interfaces were scanned, so the agent reported no neighbors at all and the channel analysis only ever listed the unit's own SSIDs.
What
CmdScanIface) with its own 8 s budget, enumerated from a singleiw devcall that also feeds the own-BSSID section.CmdScanliteral stays exported, deprecated, for vendored module consumers.OpenWrt busybox has no timeout applet, so the isolation lives in the Go runner, not in shell.Tests
scan_periface_test.go: a dead 5 GHz scan no longer starves the 2.4 GHz results (fixture is the exact scan output the reporter pasted, including its doublelast seenlines), throttle still governs per-interface scans, no-iwunits stay quiet.scan_throttle_test.goupdated to the per-interface commands.-count=1.Refs #1338