Skip to content

netifd-morse: fix HaLow Mesh broken - #1269

Open
ian77chen wants to merge 1 commit into
staging-for-v4.2.0-LTSfrom
staging-WIFI-15668-fix-halow-mesh-broken
Open

netifd-morse: fix HaLow Mesh broken#1269
ian77chen wants to merge 1 commit into
staging-for-v4.2.0-LTSfrom
staging-WIFI-15668-fix-halow-mesh-broken

Conversation

@ian77chen

Copy link
Copy Markdown
Contributor

root casue:
netifd re-runs drv_morse_setup while the first bring-up is still settling. The second run's morse_interface_cleanup() removes interfaces while the mesh interface is mid-scan.

In the driver, both morse_mac_ops_remove_interface() (mac.c:2785) and morse_mac_ops_sw_scan_complete() (mac.c:3680) hold mors->lock while waiting on a firmware command (600ms x 2 retries). They stall each other. The firmware stops responding after receiving the teardown sequence while still in scan mode, every subsequent command returns -110, and halow_mesh can never be brought up.

solution:
morse_interface_cleanup(): abort any in-progress scan before removing interfaces, so sw_scan_complete releases mors->lock immediately and rm_if no longer overlaps with it.

drv_morse_setup(): add the missing 'channel' to json_get_vars. $channel was empty in _get_regulatory() and the hostapd conf.

Fixes: WIFI-15668

root casue:
netifd re-runs drv_morse_setup while the first bring-up is still settling.
The second run's morse_interface_cleanup() removes interfaces while the mesh interface is mid-scan.

In the driver, both morse_mac_ops_remove_interface() (mac.c:2785) and morse_mac_ops_sw_scan_complete() (mac.c:3680)
hold mors->lock while waiting on a firmware command (600ms x 2 retries). They stall each other.
The firmware stops responding after receiving the teardown sequence
while still in scan mode, every subsequent command returns -110, and halow_mesh can never be brought up.

solution:
morse_interface_cleanup(): abort any in-progress scan before removing interfaces,
so sw_scan_complete releases mors->lock immediately and rm_if no longer overlaps with it.

drv_morse_setup(): add the missing 'channel' to json_get_vars.
$channel was empty in _get_regulatory() and the hostapd conf.

Fixes: WIFI-15668

Signed-off-by: Ian Chen <ian77_chen@accton.com>
@github-actions

Copy link
Copy Markdown

✅ PR & Commit Guidelines — all checks passed

Commits, PR description, and C style all look good. Thanks!

Commit hygiene

No issues found.

C style

No issues found.

PR description (ticket link)

No issues found.

See OPENWIFI_PR_GUIDELINES.md and OPENWIFI_CODING_GUIDELINES.md. Items marked ⚠️ are advisory and do not fail the check.

@tanyasingh-ec tanyasingh-ec added this to the 4.2.8 milestone Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants