Re: Update on Android PM enhancements - CONFIG_HAS_EARLYSUSPEND and friends

From: Kalle Valo
Date: Thu Mar 24 2011 - 06:11:04 EST


Johannes Berg <johannes@xxxxxxxxxxxxxxxx> writes:

> On Thu, 2011-03-24 at 10:04 +0100, Johannes Berg wrote:
>> On Wed, 2011-03-23 at 17:47 -0700, Arve HjÃnnevÃg wrote:
>>
>> > There is no planned replacement for early suspend, and it will
>> > probably be dropped form the android kernel at some point. The wifi
>> > driver use it to enter a lower operating state when the screen is off.
>> > If you driver does have any other way to put the driver in this state
>> > you need to add an interface that lets user-space select that state
>> > directly.
>>
>> The interface is called "ip link set wlan0 down".
>
> Or, in fact, just powersaving mode.

Exactly.

> But I don't think for a wifi driver there's any need for special
> driver specific states.

In maemo, to save power, we decreased the dynamic power save timeout
whenever display was turned off. This was all done from user space and
wifi driver in the kernel was completely unaware of the display state.
But I think this is still a hack and we should save as much as
possible power in all cases, despite the display state. Instead power
save parameters should automatically change based on the transfer
characteristics.

Few examples what I mean:

o if idle or very little traffic -> more aggressive power save
o if latency critical packets (dns requests, higher qos classes etc)
-> decrease latency
o if active data transfer -> increase throughput

And before someone suggests adding dynamic timeout variable to
nl80211: I think it's very much implementation specific parameter. Not
all drivers support it and it might be that even in future mac80211
uses something else. So having the timeout variable in nl80211 is not
a long term solution.

--
Kalle Valo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/