This is a problem that usually easily resolved by writing a systemd suspend service. I have written numerous posts over the years detailing how this is done. A thorough search online should turn up lots of information, but here is my Cole's Notes on how it is done.
This service is condensed into only one unit, so it is very easy to create the service.
Combined network restart service unit:
Create the following file with a root text editor:
/etc/systemd/system/network-restart.service
Add the following contents to the file:
#/etc/systemd/system/network-restart.service
#sudo systemctl enable network-restart.service
#sudo systemctl start network-restart.service
#systemctl status network-restart.service
#sudo systemctl daemon-reload
[Unit]
Description=Broadcom WiFi Restart Service
Before=sleep.target
StopWhenUnneeded=yes
[Service]
User=root
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/sudo -u $USER /bin/bash -lc 'nmcli networking off'
ExecStart=/usr/bin/sleep 1
ExecStart=/usr/bin/systemctl stop NetworkManager
ExecStart=/usr/bin/ip link set wlp2s0 down
ExecStart=/usr/bin/modprobe -r wl
ExecStop=/usr/bin/sleep 5
ExecStop=/usr/bin/modprobe wl
ExecStop=/usr/bin/sleep 3
ExecStop=/usr/bin/ip link set wlp2s0 up
ExecStop=/usr/bin/sleep 2
ExecStop=/usr/bin/systemctl start NetworkManager
ExecStop=/usr/bin/sleep 1
ExecStop=/usr/bin/sudo -u $USER /bin/bash -lc 'nmcli networking on'
ExecStop=/usr/bin/sleep 1
ExecStop=/usr/bin/sudo -u $USER /bin/bash -lc 'nmcli r wifi off'
ExecStop=/usr/bin/sleep 1
ExecStop=/usr/bin/sudo -u $USER /bin/bash -lc 'nmcli r wifi on'
[Install]
WantedBy=sleep.target
The sleep units in the service may be reduced, (or eliminated) if you do not like the delay it creates. Be aware though, that doing so may reduce the reliability of the service.
Once you have created and saved the service file, enable the service:
sudo systemctl enable network-restart.service
Then reboot the computer.
For the benefit of others wishing to adapt this service to their installation (if different than above):
If your adapter's designation is different than wlp2s0
you will need to substitute you own adapter’s ID into the service file.
If you are using a different driver module you will also need to substitute it in place of “wl”.