From: Ben Greear <greearb@candelatech.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2] mac80211: Optimize scans on current operating channel.
Date: Wed, 26 Jan 2011 10:39:04 -0800 [thread overview]
Message-ID: <4D406A48.7060503@candelatech.com> (raw)
In-Reply-To: <1296056188.3635.36.camel@jlt3.sipsolutions.net>
On 01/26/2011 07:36 AM, Johannes Berg wrote:
> On Fri, 2011-01-21 at 10:05 -0800, greearb@candelatech.com wrote:
>> From: Ben Greear<greearb@candelatech.com>
>>
>> This should decrease un-necessary flushes, on/off channel work,
>> and channel changes in cases where the only scanned channel is
>> the current operating channel.
>>
>> Signed-off-by: Ben Greear<greearb@candelatech.com>
>> ---
>>
>> v2: Check channels instead of flag when determining if we should
>> do a channel change in scan_completed_finish.
>
> Can you look at work.c -- where we call
> ieee80211_offchannel_stop_beaconing etc.
>
> In this patch, you're moving the call to
> ieee80211_offchannel_stop_beaconing next to
> ieee80211_offchannel_stop_station in scan.c.
The offchannel_stop_beaconing doesn't actually change
state, it just calls
ieee80211_bss_info_change_notify(
sdata, BSS_CHANGED_BEACON_ENABLED);
That method will disable beaconing if SCAN_SW_SCANNING is set,
regardless of current channel.
So, if that work.c logic is happening during a scan, we
will always disable scanning, but if we are not SW scanning,
then that offchannel_stop_beaconing won't actually do
anything useful.
My first inclination is to add another check in bss_info_change_notify
to test if we are really off-channel:
if (local->quiescing || !ieee80211_sdata_running(sdata) ||
(test_bit(SCAN_SW_SCANNING, &local->scanning) &&
test_bit(SCAN_OFF_CHANNEL, &local->scanning)) {
sdata->vif.bss_conf.enable_beacon = false;
And either set the SCAN_OFF_CHANNEL flag before calling offchannel_stop_beaconing,
or perhaps set that flag in offchannel_stop_beaconing. The first might be
less risky, but that leaves the work.c logic funky in my opinion, since if
we are not actually scanning, beacons will still be enabled.
I could use some suggestions on how to proceed. I am overly tempted to
start changing everything in sight, but that is likely to cause all sorts
of bugs, subtle and otherwise....
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next prev parent reply other threads:[~2011-01-26 18:39 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-21 18:05 [PATCH v2] mac80211: Optimize scans on current operating channel greearb
2011-01-23 9:18 ` Johannes Berg
2011-01-23 15:49 ` Ben Greear
2011-01-24 22:12 ` Ben Greear
2011-01-26 15:22 ` Johannes Berg
2011-01-26 17:28 ` Ben Greear
2011-01-26 15:36 ` Johannes Berg
2011-01-26 18:10 ` Ben Greear
2011-01-27 13:56 ` Johannes Berg
2011-01-26 18:39 ` Ben Greear [this message]
2011-01-27 13:55 ` Johannes Berg
-- strict thread matches above, loose matches on Subject: below --
2011-01-21 18:03 greearb
2011-01-21 18:06 ` Ben Greear
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=4D406A48.7060503@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.