00-wifi-config-migrate 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/bin/sh
  2. # The pcie-controller device was renamed to pcie in Linux kernel 4.14
  3. # commit 28fbb9c539e2 ("ARM: dts: marvell: fix PCI bus dtc warnings").
  4. # This script migrates the path in the UCI configuration from the old
  5. # name to the new name and also back, when am upgrade or downgrade is
  6. # done. It checks if the name exists before changing the configuration.
  7. # This has to be done before the 10-wifi-detect script from mac80211 is
  8. # executed because this would add the devices again under the new path
  9. # name.
  10. . /lib/functions.sh
  11. PATH_CHANGED=0
  12. rename_wifi_path() {
  13. local path_old=$(uci get wireless.${1}.path)
  14. local path_new=$(echo ${path_old} | sed "${2}")
  15. if [ -e "/sys/devices/platform/${path_new}" ] && [ ${path_old} != ${path_new} ]
  16. then
  17. uci set wireless.${1}.path=${path_new}
  18. PATH_CHANGED=1
  19. fi
  20. }
  21. rename_wifi_path_list() {
  22. # migration from kernel 4.9 to 4.14
  23. rename_wifi_path $1 "s/soc:pcie-controller/soc:pcie/"
  24. # migration from kernel 4.14 to 4.9
  25. rename_wifi_path $1 "s/soc:pcie/soc:pcie-controller/"
  26. }
  27. [ "${ACTION}" = "add" ] && {
  28. [ ! -e /etc/config/wireless ] && return
  29. config_load wireless
  30. config_foreach rename_wifi_path_list wifi-device
  31. [ "$PATH_CHANGED" = "1" ] && uci commit wireless
  32. }