suspend: adapt script for NetworkManager integration
Now the suspend script brings down all the wireless interfaces that are managed by ifupdown command (in the '/etc/network/interfaces' file) and then unloads the wireless driver. On resume the script triggers an event so udev reloads the wireless driver and then brings up the interfaces that were brought down on suspend. https://jira.digi.com/browse/DEL-4288 Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
parent
6ffd69da82
commit
eb76b2ac68
|
|
@ -31,9 +31,12 @@ usage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend_interfaces() {
|
suspend_interfaces() {
|
||||||
# Suspend wireless interface
|
# Suspend wireless interfaces
|
||||||
if grep -qs '^wlan0' /var/run/ifstate; then
|
if [ -d "/proc/device-tree/wireless" ]; then
|
||||||
ifdown wlan0 && up_wlan_on_resume="1" && sleep 0.5 && rmmod ath6kl_sdio
|
for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do
|
||||||
|
ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}"
|
||||||
|
done
|
||||||
|
grep -qs '^ath6kl_sdio' /proc/modules && rmmod ath6kl_sdio ath6kl_core
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Suspend bluetooth interface
|
# Suspend bluetooth interface
|
||||||
|
|
@ -43,9 +46,16 @@ suspend_interfaces() {
|
||||||
}
|
}
|
||||||
|
|
||||||
resume_interfaces() {
|
resume_interfaces() {
|
||||||
# Resume wireless interface
|
# Resume wireless interfaces
|
||||||
if ! grep -qs '^wlan0' /var/run/ifstate; then
|
if [ -d "/proc/device-tree/wireless" ]; then
|
||||||
[ -n "${up_wlan_on_resume}" ] && modprobe ath6kl_sdio && sleep 0.5 && ifup wlan0
|
# Trigger wireless module loading event, and wait until the interface exists
|
||||||
|
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0301"
|
||||||
|
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
|
||||||
|
|
||||||
|
# Bring up the interfaces that were bring down on suspend
|
||||||
|
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
||||||
|
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Resume bluetooth interface
|
# Resume bluetooth interface
|
||||||
|
|
|
||||||
|
|
@ -31,12 +31,12 @@ usage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend_interfaces() {
|
suspend_interfaces() {
|
||||||
# Suspend wireless interface
|
# Suspend wireless interfaces
|
||||||
if grep -qs '^wlan0' /var/run/ifstate; then
|
if [ -d "/proc/device-tree/wireless" ]; then
|
||||||
ifdown wlan0 && up_wlan_on_resume="1"
|
for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do
|
||||||
fi
|
ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}"
|
||||||
if grep -qs '^wlan' /proc/modules; then
|
done
|
||||||
rmmod wlan
|
grep -qs '^wlan' /proc/modules && rmmod wlan
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Suspend bluetooth interface
|
# Suspend bluetooth interface
|
||||||
|
|
@ -46,9 +46,16 @@ suspend_interfaces() {
|
||||||
}
|
}
|
||||||
|
|
||||||
resume_interfaces() {
|
resume_interfaces() {
|
||||||
# Resume wireless interface
|
# Resume wireless interfaces
|
||||||
if ! grep -qs '^wlan0' /var/run/ifstate; then
|
if [ -d "/proc/device-tree/wireless" ]; then
|
||||||
[ -n "${up_wlan_on_resume}" ] && ifup wlan0
|
# Trigger wireless module loading event, and wait until the interface exists
|
||||||
|
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
|
||||||
|
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
|
||||||
|
|
||||||
|
# Bring up the interfaces that were bring down on suspend
|
||||||
|
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
||||||
|
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Resume bluetooth interface
|
# Resume bluetooth interface
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue