suspend: set wireless interfaces managed by NM as unmanaged before suspend
With these changes we tell NM to not manage the wireless interfaces before unloading the wireless module. This was causing some unexpected behavior that crashed NetworkManager. Signed-off-by: Sebastian Pastor <sebastian.pastor@digi.com> https://jira.digi.com/browse/DEL-5351 https://jira.digi.com/browse/DEL-4571
This commit is contained in:
parent
a45357940a
commit
b3ae030fce
|
|
@ -36,6 +36,13 @@ suspend_interfaces() {
|
||||||
for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do
|
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}"
|
ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Get a list of the wireless interfaces managed by NetworkManager
|
||||||
|
# and set them to unmanaged before suspend.
|
||||||
|
for i in $(nmcli -t -f DEVICE,TYPE,STATE dev | grep :wifi: | grep -v unmanaged | cut -d':' -f1); do
|
||||||
|
nmcli dev set "${i}" managed no && NM_MANAGED_IFACES="${NM_MANAGED_IFACES:+${NM_MANAGED_IFACES} }${i}"
|
||||||
|
done
|
||||||
|
|
||||||
grep -qs '^wlan' /proc/modules && rmmod wlan
|
grep -qs '^wlan' /proc/modules && rmmod wlan
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -54,6 +61,11 @@ resume_interfaces() {
|
||||||
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
|
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
|
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
|
||||||
|
|
||||||
|
# Set interfaces managed by NetworkManager back as managed
|
||||||
|
for i in $(echo ${NM_MANAGED_IFACES} | tr ' ' '\n' | sort); do
|
||||||
|
nmcli dev set "${i}" managed yes
|
||||||
|
done
|
||||||
|
|
||||||
# Bring up the interfaces that were bring down on suspend
|
# Bring up the interfaces that were bring down on suspend
|
||||||
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
||||||
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,13 @@ suspend_interfaces() {
|
||||||
for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do
|
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}"
|
ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Get a list of the wireless interfaces managed by NetworkManager
|
||||||
|
# and set them to unmanaged before suspend.
|
||||||
|
for i in $(nmcli -t -f DEVICE,TYPE,STATE dev | grep :wifi: | grep -v unmanaged | cut -d':' -f1); do
|
||||||
|
nmcli dev set "${i}" managed no && NM_MANAGED_IFACES="${NM_MANAGED_IFACES:+${NM_MANAGED_IFACES} }${i}"
|
||||||
|
done
|
||||||
|
|
||||||
grep -qs '^ath6kl_sdio' /proc/modules && rmmod ath6kl_sdio ath6kl_core
|
grep -qs '^ath6kl_sdio' /proc/modules && rmmod ath6kl_sdio ath6kl_core
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -54,6 +61,11 @@ resume_interfaces() {
|
||||||
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d0301"
|
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
|
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
|
||||||
|
|
||||||
|
# Set interfaces managed by NetworkManager back as managed
|
||||||
|
for i in $(echo ${NM_MANAGED_IFACES} | tr ' ' '\n' | sort); do
|
||||||
|
nmcli dev set "${i}" managed yes
|
||||||
|
done
|
||||||
|
|
||||||
# Bring up the interfaces that were bring down on suspend
|
# Bring up the interfaces that were bring down on suspend
|
||||||
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
||||||
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,13 @@ suspend_interfaces() {
|
||||||
for i in $(sed -ne 's,^\(wlan[0-9]\)=.*,\1,g;T;p' /var/run/ifstate | sort -r); do
|
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}"
|
ifdown "${i}" && RESUME_IFACES="${RESUME_IFACES:+${RESUME_IFACES} }${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Get a list of the wireless interfaces managed by NetworkManager
|
||||||
|
# and set them to unmanaged before suspend.
|
||||||
|
for i in $(nmcli -t -f DEVICE,TYPE,STATE dev | grep :wifi: | grep -v unmanaged | cut -d':' -f1); do
|
||||||
|
nmcli dev set "${i}" managed no && NM_MANAGED_IFACES="${NM_MANAGED_IFACES:+${NM_MANAGED_IFACES} }${i}"
|
||||||
|
done
|
||||||
|
|
||||||
grep -qs '^wlan' /proc/modules && rmmod wlan
|
grep -qs '^wlan' /proc/modules && rmmod wlan
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -54,6 +61,11 @@ resume_interfaces() {
|
||||||
udevadm trigger --action=add --attr-match="modalias=sdio:c00v0271d050A"
|
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
|
timeout -t 5 sh -c "while [ ! -d /sys/class/net/wlan0 ]; do sleep .2; done" 2>/dev/null
|
||||||
|
|
||||||
|
# Set interfaces managed by NetworkManager back as managed
|
||||||
|
for i in $(echo ${NM_MANAGED_IFACES} | tr ' ' '\n' | sort); do
|
||||||
|
nmcli dev set "${i}" managed yes
|
||||||
|
done
|
||||||
|
|
||||||
# Bring up the interfaces that were bring down on suspend
|
# Bring up the interfaces that were bring down on suspend
|
||||||
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
for i in $(echo ${RESUME_IFACES} | tr ' ' '\n' | sort); do
|
||||||
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
grep -qs "^${i}" /var/run/ifstate || ifup "${i}"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue