Skip to content

Conversation

@zbowling
Copy link

@zbowling zbowling commented Jan 1, 2026

During MLO AP setup, mt7925_mcu_set_mlo_roc() can be called before all
links have their channels configured. The existing code uses WARN_ON_ONCE()
to check for NULL link_conf and channel pointers, which triggers kernel
warnings/oops that appear as crashes even though it's just a timing issue.

This patch:

  1. Replaces WARN_ON_ONCE() with regular NULL checks
  2. Returns -ENOLINK to indicate the link isn't fully configured
  3. Adds an mconf NULL check in the first loop (previously only in second loop)

The -ENOLINK return allows upper layers to retry when the link is ready,
without spamming kernel logs with warnings.

Fixes: #1014 (kernel oops on MLO AP setup)

Related: This is part of a series fixing MLO stability issues in MT7925:

Testing: Addresses kernel oops reported on Radxa ROCK 5 ITX+ with OpenWrt.

…not configured

mt7925_mcu_set_mlo_roc() uses WARN_ON_ONCE() to check if link_conf or
channel is NULL. However, during MLO AP setup, it's normal for the
channel to not be configured yet when this function is called. The
WARN_ON_ONCE triggers a kernel warning/oops that makes the system
appear to have crashed, even though it's just a timing issue.

Replace WARN_ON_ONCE with regular NULL checks and return -ENOLINK to
indicate the link isn't fully configured yet. This allows the upper
layers to retry when the link is ready, without spamming the kernel
log with warnings.

Also add a check for mconf in the first loop to match the pattern
used in the second loop, preventing potential NULL dereference.

This fixes kernel oops reported during MLO AP setup on OpenWrt with
MT7925E hardware.

Signed-off-by: Zac Bowling <zac@zacbowling.com>
zbowling added a commit to zbowling/mt7925 that referenced this pull request Jan 1, 2026
Adds fix for mt7925_mcu_set_mlo_roc() kernel oops during MLO AP setup.
Replaces WARN_ON_ONCE with proper NULL checks and returns -ENOLINK.

Fixes OpenWrt issue #1014 reported on Radxa ROCK 5 ITX+.

OpenWrt PR: openwrt/mt76#1038
zbowling added a commit to zbowling/mt7925 that referenced this pull request Jan 1, 2026
Adds fix for mt7925_mcu_set_mlo_roc() kernel oops during MLO AP setup.
Replaces WARN_ON_ONCE with proper NULL checks and returns -ENOLINK.

Fixes OpenWrt issue #1014 reported on Radxa ROCK 5 ITX+.

OpenWrt PR: openwrt/mt76#1038
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.

1 participant