aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib/functions.sh
diff options
context:
space:
mode:
authorVittorio Gambaletta <openwrt@vittgam.net>2017-03-14 14:45:15 +0100
committerJo-Philipp Wich <jo@mein.io>2017-12-13 14:52:24 +0100
commit62a8252a0f32d6c148e4565354fd6a99da13fa41 (patch)
treea8babf16f54afb111fd9ca8fe920be470e171cc3 /package/base-files/files/lib/functions.sh
parent5f03ce1213782c9ddb9bb010dac127bb554092cc (diff)
downloadupstream-62a8252a0f32d6c148e4565354fd6a99da13fa41.tar.gz
upstream-62a8252a0f32d6c148e4565354fd6a99da13fa41.tar.bz2
upstream-62a8252a0f32d6c148e4565354fd6a99da13fa41.zip
mac80211: Fix race condition leading to wifi interfaces not coming up at boot sometimes.
In the drv_mac80211_setup function, mac80211_interface_cleanup is called to ask the kernel to delete all existing interfaces for the phy that is being configured via netlink. Later in the first function, mac80211_prepare_vif is called to set up the new interfaces as required. But sometimes, when mac80211_prepare_vif (and so the relevant `iw phy x interface add y` command) runs, the kernel might still be cleaning up the old interface with the same ifname. It usually takes very few time to do that; possibly a few milliseconds of sleep in the script after detecting this error condition could be enough, but the busybox sh does not support sub-second sleep intervals. When this happens, iw obviously fails to create the new interface; and the following message is printed in the system log, followed by subsequent failure messages from hostapd in case this would have been an AP interface. Tue Mar 14 04:21:57 2017 daemon.notice netifd: radio1 (2767): command failed: Too many open files in system (-23) This was a long-standing issue existing since at least OpenWrt Backfire, and today I finally managed to debug and (hopefully) solve it. It was happening very few times on most devices; but it was happening a lot more frequently on fast platforms with multiple radios, such as the powerpc-based dual-ath9k-radio tl-wdr4900-v1. Signed-off-by: Vittorio Gambaletta <openwrt@vittgam.net> (cherry picked from commit 8301e613655c2d95fa5430a1a57d92d966fdc70b)
Diffstat (limited to 'package/base-files/files/lib/functions.sh')
0 files changed, 0 insertions, 0 deletions