Message ID | 69d9e911ac3b6230bc88d2cd05ed759d243a0aca.1476631806.git.chunkeey@gmail.com |
---|---|
State | Accepted |
Delegated to: | Felix Fietkau |
Headers | show |
On 2016-10-17 15:59, Christian Lamparter wrote: > Currently, the wifi detection script is executed as part of > the (early) boot process. Pluggable wifi USB devices, which > are inserted at a later time are not automatically > detected and therefore they don't show up in LuCI. > > A user has to deal with wifi detection manually, or restart > the router. > > However, the current "sleep 1" window - which the boot > process waits for wifi devices to "settle down" - is too > short to detect wifi devices for some routers anyway. > > For example, this can happen with USB WLAN devices on the > WNDR4700. This is because the usb controller needs to load > its firmware from UBI and initialize, before it can operate. > > The issue can be seen on a BT HomeHub 5A as well as soon as > the caldata are on an ubi volume. This is because the ath9k > card has to be initialized by owl-loader first. Which has to > wait for the firmware extraction script to retrieve the pci > initialization values inside the caldata. > > This patch moves the wifi configuration to hotplug scripts. > For mac80211, the wifi configuration will now automatically > run any time a "ieee80211" device is added. Likewise > broadcom-wl's script checks for new "net" devices which > have the "wl$NUMBER" moniker. > > Issues with spawning multiple interface configuration - in > case the detection script is run concurrently - have been > resolved by using a named section for the initial > configuration. Concurrent configuration scripts will now > simply overwrite the same existing configuration. > > A workaround which preserves the "sleep 1" window for just > the first boot has been added. This allows the existing > brcm47xx boot and mvebu uci-default scripts to correctly > setup the initial mac addresses and regulatory domain. > > And finally, the patch renames the "wifi detect" into > "wifi config". As the script no longer produces any output > that has to be redirected or appended to the configuration > file. > > Thanks to Martin Blumenstingl for helping with the implementation > and testing of the patch. > > Acked-by: Jo-Philipp Wich <jo@mein.io> > Signed-off-by: Mathias Kresin <dev@kresin.me> > Signed-off-by: Christian Lamparter <chunkeey@gmail.com> Added to my staging tree with a small modification: I added a check for detect and made it no-op, just in case existing user scripts still use it, because the default case might trigger some unwanted actions. - Felix
On Tuesday, October 18, 2016 11:31:54 AM CEST Felix Fietkau wrote: > On 2016-10-17 15:59, Christian Lamparter wrote: > > > > Acked-by: Jo-Philipp Wich <jo@mein.io> > > Signed-off-by: Mathias Kresin <dev@kresin.me> > > Signed-off-by: Christian Lamparter <chunkeey@gmail.com> > Added to my staging tree with a small modification: > I added a check for detect and made it no-op, just in case existing user > scripts still use it, because the default case might trigger some > unwanted actions. Thanks! I know that Mathias has a extra change for ramips queued up as well [0]. As for these patches, does anyone have a brcm47xx and mvebu? Because I think we can move the remaining scripts as well. Regards, Christian [0] <https://github.com/mkresin/lede/commit/bcfbeae79f799cf1087d692e4869589eb20d2080>
diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index 03b0fa0..31f245f 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -38,10 +38,10 @@ boot() { /sbin/kmodloader - # allow wifi modules time to settle - sleep 1 - - /sbin/wifi detect + [ ! -f /etc/config/wireless ] && { + # compat for brcm47xx and mvebu + sleep 1 + } /bin/config_generate uci_apply_defaults diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi index 2ef333a..c41058f 100755 --- a/package/base-files/files/sbin/wifi +++ b/package/base-files/files/sbin/wifi @@ -145,7 +145,7 @@ wifi_reload() { wifi_reload_legacy } -wifi_detect() { +wifi_config() { [ ! -f /etc/config/wireless ] && touch /etc/config/wireless for driver in $DRIVERS; do ( @@ -229,7 +229,7 @@ scan_wifi case "$1" in down) wifi_updown "disable" "$2";; - detect) wifi_detect ;; + config) wifi_config ;; status) ubus_wifi_cmd "status" "$2";; reload) wifi_reload "$2";; reload_legacy) wifi_reload_legacy "$2";; diff --git a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect new file mode 100644 index 0000000..ba011dc --- /dev/null +++ b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/00-broadcom-wifi-detect @@ -0,0 +1,5 @@ +#!/bin/sh + +[ "${ACTION}" = "add" ] && [ "${INTERFACE%%[0-9]}" = "wl" ] && { + /sbin/wifi config +} diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index f9f5093..25adbfb 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -1732,6 +1732,8 @@ define KernelPackage/cfg80211/install $(INSTALL_DIR) $(1)/lib/wifi $(1)/lib/netifd/wireless $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi $(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless + $(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211 + $(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/00-wifi-detect endef define KernelPackage/ipw2100/install diff --git a/package/kernel/mac80211/files/mac80211.hotplug b/package/kernel/mac80211/files/mac80211.hotplug new file mode 100644 index 0000000..b865552 --- /dev/null +++ b/package/kernel/mac80211/files/mac80211.hotplug @@ -0,0 +1,5 @@ +#!/bin/sh + +[ "${ACTION}" = "add" ] && { + /sbin/wifi config +}