Message ID | 20250328-ath11k-bring-hibernation-back-v3-0-23405ae23431@quicinc.com (mailing list archive) |
---|---|
Headers | show |
Series | wifi: ath11k: bring hibernation support back | expand |
On Fri, 28 Mar 2025 13:32:23 +0800, Baochen Qiang wrote: > To handle the Lenovo unexpected wakeup issue [1], previously we revert > commit 166a490f59ac ("wifi: ath11k: support hibernation"). However we > need to bring it back, of course with additional changes such that Lenovo > machines would not break. > > For suspend (S3), as those machines work well in WoWLAN mode, the thought > here is that we put WLAN target into WoWLAN mode on those machines while > into non-WoWLAN mode (which is done in the reverted commit) on other > machines. This requires us to identify Lenovo machines from others. For > that purpose, read machine info from DMI interface, match it against all > known affected machines. If there is a match, choose WoWLAN suspend mode, > else choose non-WoWLAN mode. This is done in patches [1 - 4/6] > > [...] Applied, thanks! [1/6] wifi: ath11k: determine PM policy based on machine model commit: ce8669a27016354dfa8bf3c954255cb9f3583bae [2/6] wifi: ath11k: introduce ath11k_core_continue_suspend_resume() commit: 3d2ce6ad9126b96a721542c6299a2f0967b5a63f [3/6] wifi: ath11k: refactor ath11k_core_suspend/_resume() commit: 662cc5b92c327e94587a959d7ed75862eda4b059 [4/6] wifi: ath11k: support non-WoWLAN mode suspend as well commit: 88fd03cf51a7d67dac976ecce079ccfc79376966 [5/6] wifi: ath11k: choose default PM policy for hibernation commit: 32d93b51bc7e2e557771abe4a88da69c609e3d52 [6/6] Reapply "wifi: ath11k: restore country code during resume" commit: 3b199a58cc585f423a85af2e57045c9a783361bb Best regards,
To handle the Lenovo unexpected wakeup issue [1], previously we revert commit 166a490f59ac ("wifi: ath11k: support hibernation"). However we need to bring it back, of course with additional changes such that Lenovo machines would not break. For suspend (S3), as those machines work well in WoWLAN mode, the thought here is that we put WLAN target into WoWLAN mode on those machines while into non-WoWLAN mode (which is done in the reverted commit) on other machines. This requires us to identify Lenovo machines from others. For that purpose, read machine info from DMI interface, match it against all known affected machines. If there is a match, choose WoWLAN suspend mode, else choose non-WoWLAN mode. This is done in patches [1 - 4/6] For hibernation (S4), non-WoWLAN mode is chosen for all machines. The unexpected wakeup issue should not happen in this mode, since WLAN target power is cut off. To know if the system is going to suspend or to hibernate, register a notifier such that kernel can notify us of such infomation. This is done in patch [5/6] The last patch bring the reverted "wifi: ath11k: restore country code during resume" commit back. [1] https://bugzilla.kernel.org/show_bug.cgi?id=219196 Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com> --- Changes in v3: - [4/6] remove cosmetic blank line change to make it easy to be backport - [5/6] s/ath11l/ath11k/ in subject - pick Tested-by tag from Takashi Iwai - Link to v2: https://lore.kernel.org/r/20250326-ath11k-bring-hibernation-back-v2-0-87fdc2d6428f@quicinc.com Changes in v2: - fix compile warnings - support hibernation on Lenovo machines listed in quirk table - Link to v1: https://lore.kernel.org/linux-wireless/20250320023003.65028-1-quic_bqiang@quicinc.com/ --- Baochen Qiang (6): wifi: ath11k: determine PM policy based on machine model wifi: ath11k: introduce ath11k_core_continue_suspend_resume() wifi: ath11k: refactor ath11k_core_suspend/_resume() wifi: ath11k: support non-WoWLAN mode suspend as well wifi: ath11k: choose default PM policy for hibernation Reapply "wifi: ath11k: restore country code during resume" drivers/net/wireless/ath/ath11k/ahb.c | 4 +- drivers/net/wireless/ath/ath11k/core.c | 294 ++++++++++++++++++++++++++++++--- drivers/net/wireless/ath/ath11k/core.h | 16 ++ drivers/net/wireless/ath/ath11k/hif.h | 14 +- drivers/net/wireless/ath/ath11k/mhi.c | 14 +- drivers/net/wireless/ath/ath11k/mhi.h | 4 +- drivers/net/wireless/ath/ath11k/pci.c | 45 ++++- drivers/net/wireless/ath/ath11k/qmi.c | 4 +- 8 files changed, 350 insertions(+), 45 deletions(-) --- base-commit: b6f473c96421b8b451a8df8ccb620bcd71d4b3f4 change-id: 20250324-ath11k-bring-hibernation-back-e11ad8e82adf Best regards,