Search Linux Wireless

Re: [Greenmesh] [ath9k] mesh powersave hardware sleep + wakeup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux