]> git.baikalelectronics.ru Git - kernel.git/commit
wcn36xx: Implement Idle Mode Power Save
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Thu, 9 Sep 2021 15:33:20 +0000 (16:33 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 21 Sep 2021 13:34:32 +0000 (16:34 +0300)
commitc2a2672115883add172b14e6dde052d673793109
tree4ea122966318bae0ea1f892b0a3a583062f99de3
parentc5c33e48f7e1b31a9592da7c93c0601418b4ede8
wcn36xx: Implement Idle Mode Power Save

Idle Mode Power Save (IMPS) is a power saving mechanism which when called
by wcn36xx will cause the radio hardware to enter power collapse.

This particular call maps nicely to a simple conjunction/disjunction around
IEEE80211_CONF_CHANGE_IDLE and IEEE80211_CONF_IDLE.

Here we enter idle when we are not associated with an AP. The kernel will
incrementally toggle idle on/off in the process of trying to establish a
connection, thus saving power until we are connected to the AP again, at
which point we give way to BMPS if power_save is on.

We've validated that with IMPS an apq8039 device which has the wcn36xx
module loaded but, has not authenticated with an AP will get to VMIN on
suspend and will not without IMPS.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Tested-by: Benjamin Li <benl@squareup.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210909153320.2624649-1-bryan.odonoghue@linaro.org
drivers/net/wireless/ath/wcn36xx/hal.h
drivers/net/wireless/ath/wcn36xx/main.c
drivers/net/wireless/ath/wcn36xx/smd.c
drivers/net/wireless/ath/wcn36xx/smd.h