Currently, WLAN chip is powered once during driver probe and is kept ON (powered) always even when WLAN is not active; keeping the chip powered ON all the time will consume extra power which is not desirable for battery operated devices. Same is the case with non-WoW suspend, chip will not be put into low power mode when the system is suspended resulting in higher battery drain. Send QMI MODE OFF command to firmware during WiFi OFF to put device into low power mode. Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1 Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.16 Manikanta Pubbisetty (3): ath11k: Fix double free issue during SRNG deinit ath11k: Move hardware initialization logic to start() ath11k: Enable low power mode when WLAN is not active --- V4: - Code changes in ath11k_core_stop_device() V3: - Removed patch "ath11k: Fix failed to parse regulatory event print" as it is not needed anymore - Fixed a potential deadlock scenario reported by lockdep around ab->core_lock with V2 changes - Fixed other minor issues that were found during code review - Spelling corrections in the commit messages V2: - "Enable low power mode when WLAN is not active" has been enabled only for WCN6750 as the device shutdown and turn-on changes are not same for all chipsets in ath11k. A future patch will be sent to enable the logic for other devices. - Rebased on ToT drivers/net/wireless/ath/ath11k/ahb.c | 45 ++++ drivers/net/wireless/ath/ath11k/core.c | 294 ++++++++++++++++++------- drivers/net/wireless/ath/ath11k/core.h | 10 +- drivers/net/wireless/ath/ath11k/hal.c | 1 + drivers/net/wireless/ath/ath11k/hif.h | 11 + drivers/net/wireless/ath/ath11k/mac.c | 33 +-- drivers/net/wireless/ath/ath11k/pci.c | 26 +++ drivers/net/wireless/ath/ath11k/qmi.c | 3 +- 8 files changed, 311 insertions(+), 112 deletions(-) -- 2.38.0