From: Ben Greear <greearb@candelatech.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v9] mac80211: Optimize scans on current operating channel.
Date: Wed, 02 Feb 2011 11:22:34 -0800 [thread overview]
Message-ID: <4D49AEFA.6090202@candelatech.com> (raw)
In-Reply-To: <1296672941.5671.38.camel@jlt3.sipsolutions.net>
On 02/02/2011 10:55 AM, Johannes Berg wrote:
> On Wed, 2011-02-02 at 10:18 -0800, greearb@candelatech.com wrote:
>
>> * Do no blindly go off/on channel in work.c Instead, only call
>> appropriate on/off code when we really need to change channels.
>
> Based on the powersave comments I had earlier, maybe we should remove
> that bit for now? Work items here require powersave is disabled, but we
> won't do that right now if we're on the same channel.
The problem is, if we leave the work_work() in the original
manner, the on/off channel state changes are not properly
tracked because work blindly assumes it goes off/on channel.
This breaks assumptions about when we must call the return-to-channel
logic. I think if we do not religiously track the on/off channel
state changes it would be too easy to get in a state where we think
we are on-channel but haven't actually re-enabled xmit queues, etc.
I think I would rather change the work logic to expressly disable/enable
powersave. That wouldn't be difficult, would it?
> Scan, on the other hand, will still disable powersave (right?)
I don't think it does anything if we are scanning on-channel
with my patch.
The enable/disable logic is now in the offchannel code...
Do we need to disable it if we are scanning on channel? If so,
I can add that explicitly to the scanning code.
While we are on that topic, it seems the conf.flags are set
opposite to what I expect. Is that code below correct?
/* inform AP that we are awake again, unless power save is enabled */
static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata)
{
struct ieee80211_local *local = sdata->local;
if (!local->ps_sdata)
ieee80211_send_nullfunc(local, sdata, 0);
else if (local->offchannel_ps_enabled) {
/*
* In !IEEE80211_HW_PS_NULLFUNC_STACK case the hardware
* will send a nullfunc frame with the powersave bit set
* even though the AP already knows that we are sleeping.
* This could be avoided by sending a null frame with power
* save bit disabled before enabling the power save, but
* this doesn't gain anything.
*
* When IEEE80211_HW_PS_NULLFUNC_STACK is enabled, no need
* to send a nullfunc frame because AP already knows that
* we are sleeping, let's just enable power save mode in
* hardware.
*/
local->hw.conf.flags |= IEEE80211_CONF_PS;
Thanks,
Ben
>
> johannes
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next prev parent reply other threads:[~2011-02-02 19:22 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-02 18:18 [PATCH v9] mac80211: Optimize scans on current operating channel greearb
2011-02-02 18:55 ` Johannes Berg
2011-02-02 19:22 ` Ben Greear [this message]
2011-02-02 21:28 ` Johannes Berg
2011-02-02 22:12 ` Ben Greear
2011-02-03 8:19 ` Johannes Berg
2011-02-04 18:58 ` Ben Greear
2011-02-04 19:09 ` Johannes Berg
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=4D49AEFA.6090202@candelatech.com \
--to=greearb@candelatech.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.