aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/mvebu/base-files/etc/hotplug.d/ieee80211/00-wifi-config-migrate41
1 files changed, 41 insertions, 0 deletions
diff --git a/target/linux/mvebu/base-files/etc/hotplug.d/ieee80211/00-wifi-config-migrate b/target/linux/mvebu/base-files/etc/hotplug.d/ieee80211/00-wifi-config-migrate
new file mode 100644
index 0000000000..a8173b3117
--- /dev/null
+++ b/target/linux/mvebu/base-files/etc/hotplug.d/ieee80211/00-wifi-config-migrate
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# The pcie-controller device was renamed to pcie in Linux kernel 4.14
+# commit 28fbb9c539e2 ("ARM: dts: marvell: fix PCI bus dtc warnings").
+# This script migrates the path in the UCI configuration from the old
+# name to the new name and also back, when am upgrade or downgrade is
+# done. It checks if the name exists before changing the configuration.
+# This has to be done before the 10-wifi-detect script from mac80211 is
+# executed because this would add the devices again under the new path
+# name.
+
+. /lib/functions.sh
+
+PATH_CHANGED=0
+
+rename_wifi_path() {
+ local path_old=$(uci get wireless.${1}.path)
+ local path_new=$(echo ${path_old} | sed "${2}")
+
+ if [ -e "/sys/devices/platform/${path_new}" ] && [ ${path_old} != ${path_new} ]
+ then
+ uci set wireless.${1}.path=${path_new}
+ PATH_CHANGED=1
+ fi
+}
+
+rename_wifi_path_list() {
+ # migration from kernel 4.9 to 4.14
+ rename_wifi_path $1 "s/soc:pcie-controller/soc:pcie/"
+ # migration from kernel 4.14 to 4.9
+ rename_wifi_path $1 "s/soc:pcie/soc:pcie-controller/"
+}
+
+[ "${ACTION}" = "add" ] && {
+ [ ! -e /etc/config/wireless ] && return
+
+ config_load wireless
+ config_foreach rename_wifi_path_list wifi-device
+
+ [ "$PATH_CHANGED" = "1" ] && uci commit wireless
+}