aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2008-10-29 17:26:49 +0000
committerFelix Fietkau <nbd@openwrt.org>2008-10-29 17:26:49 +0000
commita4f11ca22e6f69d2feab4f239eb84d35f7cbe555 (patch)
tree6816cc5e005ec5573100c83da92a5cd0783468a3
parent9161a7023556a0db76e3d56fde12bc8b3c30a3e1 (diff)
downloadupstream-a4f11ca22e6f69d2feab4f239eb84d35f7cbe555.tar.gz
upstream-a4f11ca22e6f69d2feab4f239eb84d35f7cbe555.tar.bz2
upstream-a4f11ca22e6f69d2feab4f239eb84d35f7cbe555.zip
use pidfiles for hostapd/wpa_supplicant instead of killing all processes when bringing an interface down - fixes an issue with random hostapd death
SVN-Revision: 13078
-rwxr-xr-xpackage/base-files/files/sbin/wifi2
-rw-r--r--package/hostapd/files/hostapd.sh2
-rwxr-xr-xpackage/madwifi/files/lib/wifi/madwifi.sh10
-rw-r--r--package/wpa_supplicant/files/wpa_supplicant.sh2
4 files changed, 7 insertions, 9 deletions
diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi
index 63e132d4f1..e9752c6039 100755
--- a/package/base-files/files/sbin/wifi
+++ b/package/base-files/files/sbin/wifi
@@ -84,6 +84,8 @@ set_wifi_down() {
local cfg="$1"
local vifs vif vifstr
+ [ -f "/var/run/wifi-${cfg}.pid" ] &&
+ kill "$(cat "/var/run/wifi-${cfg}.pid")"
uci_revert_state wireless "$cfg"
config_get vifs "$cfg" vifs
for vif in $vifs; do
diff --git a/package/hostapd/files/hostapd.sh b/package/hostapd/files/hostapd.sh
index 1159c3b156..707fd8c4b8 100644
--- a/package/hostapd/files/hostapd.sh
+++ b/package/hostapd/files/hostapd.sh
@@ -96,6 +96,6 @@ wpa=$wpa
wpa_pairwise=$crypto
$hostapd_cfg
EOF
- hostapd -B /var/run/hostapd-$ifname.conf
+ hostapd -P /var/run/wifi-$ifname.conf -B /var/run/hostapd-$ifname.conf
}
diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh
index 6ee6435658..5ce288f6e6 100755
--- a/package/madwifi/files/lib/wifi/madwifi.sh
+++ b/package/madwifi/files/lib/wifi/madwifi.sh
@@ -50,18 +50,14 @@ disable_atheros() (
local device="$1"
set_wifi_down "$device"
- # kill all running hostapd and wpa_supplicant processes that
- # are running on atheros vifs
- for pid in `pidof hostapd wpa_supplicant`; do
- grep ath /proc/$pid/cmdline >/dev/null && \
- kill $pid
- done
include /lib/network
cd /proc/sys/net
for dev in *; do
grep "$device" "$dev/%parent" >/dev/null 2>/dev/null && {
- ifconfig "$dev" down
+ [ -f "/var/run/wifi-${dev}.pid" ] &&
+ kill "$(cat "/var/run/wifi-${dev}.pid")"
+ ifconfig "$dev" down
unbridge "$dev"
wlanconfig "$dev" destroy
}
diff --git a/package/wpa_supplicant/files/wpa_supplicant.sh b/package/wpa_supplicant/files/wpa_supplicant.sh
index 37ebef7a4b..debdf811a5 100644
--- a/package/wpa_supplicant/files/wpa_supplicant.sh
+++ b/package/wpa_supplicant/files/wpa_supplicant.sh
@@ -75,5 +75,5 @@ network={
$password
}
EOF
- [ -z "$proto" ] || wpa_supplicant ${bridge:+ -b $bridge} -B -D ${driver:-wext} -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
+ [ -z "$proto" ] || wpa_supplicant ${bridge:+ -b $bridge} -B -P "/var/run/wifi-${ifname}.pid" -D ${driver:-wext} -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
}