2020–12–02:
Fixing fallout from the new WiFi driver
While testing caching and latency of call indication messages, I've noticed
that the updated WiFi driver broke suspend/resume cycle, and also that it
increased the resume times significantly.
Basically the driver has a compile option to either do the whole of WiFi
resume synchronously during resume, or to punt it to the separate thread and
don't block the resume process. The latter option only works with Android
wakelock API. Though the only thing that the driver needs to be able to do this
is to block further suspend to RAM until the asynchronous resume job finishes.
That was fairly easy to achieve with mainline API, so now WiFi driver will do
its 850ms of resume tasks without blocking the resume process as a whole, which
makes userspace responsive just 400ms after resume is initiated, instead of
after 1.2s.
Also WoWLAN support code path made the driver return -ENOSYS (-38) from the
suspend callback, which aborted the suspend to RAM. I disabled WoWLAN in this
patch https://megous.com/git/linux/commit/?h=wifi-5.10&id=6959135b030f7b3bb4db4c42824ab1743436889a
I don't think anyone uses WoWLAN support, so that seems like an acceptable
solution for now.
One thing that I noticed about the WiFi on Pinephone with the updated driver
and newly enabled power management is that it can take some time to ping through
to the phone from my PC, after there was no network activity for some long
period of time. This is the same behavior that the broadcom wifi on Pinebook Pro
exhibits, and it's probably just some property of improved power
management.
The fixes are in this branch: https://megous.com/git/linux/log/?h=wifi-5.10