From: Marco Porsch <marco.porsch@etit.tu-chemnitz.de>
To: "Luis R. Rodriguez" <rodrigue@qca.qualcomm.com>,
javier@cozybit.com, Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless@vger.kernel.org, henry@logout.com,
"greenmesh@lists.osll.spb.ru" <greenmesh@lists.osll.spb.ru>
Subject: Re: [Greenmesh] [ath9k] mesh powersave hardware sleep + wakeup
Date: Wed, 11 Apr 2012 13:00:25 +0200 [thread overview]
Message-ID: <4F856449.3000804@etit.tu-chemnitz.de> (raw)
In-Reply-To: <4F63BA31.1080608@etit.tu-chemnitz.de>
On 03/16/12 23:09, Marco Porsch wrote:
> On 03/16/12 21:45, Luis R. Rodriguez wrote:
>> On Fri, Mar 16, 2012 at 10:42:02AM +0100, Marco Porsch wrote:
>>> Hi,
>>>
>>> I am trying to implement the IEEE 802.11s power save schemes in mac80211.
>>> In 11s it is defined that power save STA doze AND send beacons AND
>>> wake up periodically for multiple neighbors beacons.
>>>
>>> Is this actually possible with current hardware/drivers (especially ath9k)?
>
> [ ... ]
>
>> I don't have time to review this but it sounds correct that the part
>> you want to focus on is introducing a wake up mechanism when you
>> need to initiate radiation for your own beacons. I think right now
>> we simply disable PS in mac80211 completely if we have a mode of
>> operation that require beconing.
I did some hacking and can now answer part one of my question:
yes, beaconing and power save are not mutually exclusive with ath9k [1].
Second question: what about power save doze and waking up for _multiple_
neighbors' beacons?
Currently the whole sleep scheduling seems to be determined by
conf->beacon_interval and conf->dtim_period in case of a station
(client). Unfortunetely, these are the same variables that determine the
STAs own beacon interval in case of AP/mesh/ad-hoc. Additionally, for
mesh mode we will need a whole list of wake-up events (light sleep
neighbors' beacons).
Thus, I think we will need an additional/extended interface
mac80211<->driver here.
I see two possibilities:
a) request the next wakeup time from mac80211 each time the hardware is
put to sleep (e.g. from ath9k_ps_restore).
b) give a whole list of periodic wakeup events of all vif to the driver.
Then the driver is supposed to sort out the closest event.
What would be the better approach for such an interface? Or maybe a
completely different idea?
Positive side effect: this will also enable power save when multiple
managed interfaces are up - or combinations of different
powersave-enabled interfaces.
Regards,
Marco
[1]
In mac80211 I removed some restrictions for mesh and basically hand the
own STAs beacon interval to the driver (similar to ieee80211_recalc_ps).
In ath9k I merged the contents of the functions ath_beacon_config_sta
and ath_beacon_config_adhoc with the result that beaconing is enabled
and a power save schedule is set up.
The result is that I see an alternation of AWAKE and NETWORK SLEEP state
with the given beacon interval period. Additionally, the log shows that
no packets are received during the NETWORK SLEEP period, so the receiver
seems to be actually suspended. I have not yet measured the power
consumption though. Capturing with wireshark shows that the own mesh
beacons are still sent regularly.
Of course, currently this breaks any connectivity when mesh PS is
enabled. But it does not crash. And connectivity resumes when PS is
disabled once again.
next prev parent reply other threads:[~2012-04-11 11:00 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-16 9:42 [ath9k] mesh powersave hardware sleep + wakeup Marco Porsch
2012-03-16 20:45 ` Luis R. Rodriguez
2012-03-16 22:09 ` Marco Porsch
2012-04-11 11:00 ` Marco Porsch [this message]
2012-04-12 4:05 ` [Greenmesh] " Johannes Berg
2012-04-12 7:41 ` Marco Porsch
2012-04-18 2:02 ` Johannes Berg
2012-04-18 14:56 ` Javier Cardona
2012-04-18 15:05 ` Johannes Berg
2012-04-18 15:16 ` Javier Cardona
2012-04-19 2:41 ` Yeoh Chun-Yeow
2012-04-19 2:51 ` Javier Cardona
2012-04-27 15:53 ` Marco Porsch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F856449.3000804@etit.tu-chemnitz.de \
--to=marco.porsch@etit.tu-chemnitz.de \
--cc=greenmesh@lists.osll.spb.ru \
--cc=henry@logout.com \
--cc=javier@cozybit.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=rodrigue@qca.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).