2011-10-20 13:52:58

by Andrés García Saavedra

[permalink] [raw]
Subject: Commanding sleep/awake from mac80211

Hi all,

I am testing a custom algorithm whereby I'd like to adaptively command
a STA to sleep/awake. Of course I would like to do so in the higher
level possible (for simplicity). The following is a sort of a summary
of my conclusions on the "state-of-art" on the implementation of such
a thing. I would like to ask you whether i am totally misleaded here.
Thanks in advance!


* mac80211: I can see in mac80211 that the function
ap_sta_ps_start/end() is defined to notify drivers of such transitions
using drv_sta_notify(STA_NOTIFY_AWAKE/SLEEP) callback. This looked
promising but... reading ath5k/ath9k/b43 driver codes, the atheros
ones do not implement these notification handlers at all, and b43 does
not do anything important eventually with them.

So, my guess is that actually the drivers themselves are the ones in
commanding the powersaving mode transitions awake/sleep regardless of
what mac80211 "could say".

* ath5k: seems to not command HW to sleep ever. (Only implemented the
"hw on hold" which is not used within ath5k).
* ath9k: Indeed it schedules sleep/awake timers. This way, it? is
ath9k decision regardless what mac80211 say.
* b43: seems to not command HW to sleep ever...

Again, I'd appreciate if someone would point me out whether my
conclusions are correct.

Thanks!