wifi-scripts: add hotplug handler for slow-to-initialize ath12k radios
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run

Some ath12k radios can take long time to initialize and register a
phy. This can cause netifd to fail to detect them during initial scan.
To address this issue, a hotplug script has been added to retry
configuration once they have registered their phy.

Signed-off-by: Mantas Pucka <mantas@8devices.com>
Link: https://github.com/openwrt/openwrt/pull/18459
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
Mantas Pucka 2025-04-04 12:46:58 +03:00 committed by Christian Marangi
parent de205366a2
commit 6bbf4a540d
No known key found for this signature in database
GPG Key ID: AC001D09ADBFEAD7

View File

@ -0,0 +1,36 @@
#!/bin/sh
# Restart ath12k radios that take long time to initialize on boot
[ "${ACTION}" = "add" ] || exit 0
[ $(grep -c DRIVER=ath12k_pci /sys/$DEVPATH/device/uevent) -gt 0 ] || exit 0
. /usr/share/libubox/jshn.sh
restart_radio() {
radio=$1
arg="{\"radio\": \"$radio\"}"
ubus call network reload
ubus call network.wireless down "$arg"
ubus call network.wireless up "$arg"
}
json_init
json_load "$(ubus -S call network.wireless status)"
json_get_keys radios
for radio in $radios; do
json_select $radio
json_get_vars up
json_get_vars retry_setup_failed
json_select config
json_get_vars path
json_select ..
if [ $up = 0 -a $retry_setup_failed = 1 ] &&
[ $(iwinfo nl80211 phyname "path=$path") = "$DEVICENAME" ]; then
restart_radio $radio
fi
json_select ..
done