[rt2x00-users] [PATCH RFC] rt2800: disable powersaving as default
Ivo Van Doorn
ivdoorn at gmail.com
Mon Jan 31 03:16:09 EST 2011
>>> >> If the beacon timeout is a big issue, doesn't that simply imply we provide the
>>> >> wrong value to the TBCN_BEFORE_WAKUP register?
>>> > I don't know. The legacy driver never configures it. Instead it
>>> > uses a Linux timer with a fixed 70msec timeout (AUTO_WAKEUP_TIMEOUT)
>>> > in AsicSleepThenAutoWakeup(). And the comment for AsicSleepThenAutoWakeup()
>>> > says AUTO_WAKEUP won't wakeup the PHY but only trigger an irq, which explains
>>> > why they do not use it on USB since we can't get the irq.
>>> > So I guess for USB there are two choices:
>>> > 1. use a Linux hrtimer to wake up in time to catch the desired beacon
>>> > 2. disable PS
>>> But the legacy drivers does handle powersaving, so it wouldn't work in there
>>> then either....
>> Well, just look at the code for the legacy driver. It uses
>> a Linux timer for the wake-up, so we need to do the same thing.
> Ah ok, I'll look into that this weekend. Shouldn't be too hard to
> setup correctly. :)
Just a quick question to get my understanding of the powersaving right.
At the moment I have implemented the timer wakeup for receiving the beacon,
but now I am looking into the putting the device back to sleep after
the beacon has been received.
However, I am seeing a small improvement in packetloss during pinging,
but I wonder if it is correct
that my pingtimes with PS enabled is a stable 68ms, while with PS
disabled this is a stable 8ms...
As far as I understand, mac80211 will check if the beacon has been
received, and if
there are buffered frames (See ieee80211_rx_mgmt_beacon). If that is
the case the
powersaving is disabled. This code will only trigger if the
is enabled (which is the case for rt2x00).
So only thing that will be needed is to check if PS is still enabled
after the ieee80211_rx function,
and bring the device back to sleep right?
More information about the users