From 6bbf4a540dcb7d66ef35ca8c9739c2f71e9a149d Mon Sep 17 00:00:00 2001 From: Mantas Pucka Date: Fri, 4 Apr 2025 12:46:58 +0300 Subject: [PATCH] wifi-scripts: add hotplug handler for slow-to-initialize ath12k radios 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 Link: https://github.com/openwrt/openwrt/pull/18459 Signed-off-by: Christian Marangi --- .../etc/hotplug.d/ieee80211/11-ath12k-trigger | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 package/network/config/wifi-scripts/files/etc/hotplug.d/ieee80211/11-ath12k-trigger diff --git a/package/network/config/wifi-scripts/files/etc/hotplug.d/ieee80211/11-ath12k-trigger b/package/network/config/wifi-scripts/files/etc/hotplug.d/ieee80211/11-ath12k-trigger new file mode 100755 index 00000000000..3c07e52882b --- /dev/null +++ b/package/network/config/wifi-scripts/files/etc/hotplug.d/ieee80211/11-ath12k-trigger @@ -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 -- 2.47.2