linux-surface/root/lib/systemd/system-sleep/sleep
Dorian Stoll 83e67e4a27 Improve wifi reliability after resuming from suspend
Using the old script I regulary	had the	problem, that after resuming
from suspend (or hibernate) the wifi would just break. The only way
to fix it was to restart network manager, or disable it in the GNOME
network settings.

I am not a 100% sure *why*, but this change greatly improved the wifi
stability after resume. I am running this for like 5 days now and
didn't see the wifi breaking once. I suppose, that `modprobe` vs
`modprobe -i` is what makes the difference.

Signed-off-by: Dorian Stoll <dorian.stoll@tmsp.io>
2019-08-26 01:00:45 +02:00

45 lines
1.5 KiB
Bash

#!/bin/bash
case $1 in
pre) # unload the modules before going to sleep
# handle wifi issues
modprobe -r mwifiex_pcie;
modprobe -r mwifiex;
modprobe -r cfg80211;
## IPTS: see notes below
## > Remove IPTS from ME side
#modprobe -r intel_ipts
#modprobe -r mei_hdcp
#modprobe -r mei_me
#modprobe -r mei
## > Remove IPTS from i915 side
#for i in $(find /sys/kernel/debug/dri -name i915_intel_ipts_cleanup); do echo 1 > $i; done
;;
post) # re-load modules after resume
## IPTS: see notes below
## > Load IPTS from i915 side
#for i in $(find /sys/kernel/debug/dri -name i915_intel_ipts_init); do echo 1 > $i; done
## > Load IPTS from ME side
#modprobe mei
#modprobe mei_me
#modprobe mei_hdcp
#modprobe intel_ipts
# handle wifi issues: complete cycle
modprobe cfg80211;
modprobe mwifiex;
modprobe mwifiex_pcie;
echo 1 > /sys/bus/pci/rescan
systemctl restart NetworkManager.service
;;
esac
# Notes:
# - For IPTS, see
# > https://github.com/jakeday/linux-surface/issues/544#issuecomment-519126757
# for an explanation/discussion. We do not unload/reload modules for now as
# the IPTS drivers should be able to resume/suspend without this. If you
# experience any issues on suspend/resume, please file an appropriate issue or
# join the discussion linked above so that we can fix it. As a temporary
# workaround, you may want to uncomment the IPTS-related lines above.