From: Ben Greear <greearb@candelatech.com>
To: Helmut Schaa <helmut.schaa@googlemail.com>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH] mac80211: Optimize scans on current operating channel.
Date: Fri, 21 Jan 2011 06:27:13 -0800 [thread overview]
Message-ID: <4D3997C1.6090008@candelatech.com> (raw)
In-Reply-To: <4D39915C.9080405@candelatech.com>
On 01/21/2011 05:59 AM, Ben Greear wrote:
> On 01/21/2011 12:19 AM, Helmut Schaa wrote:
>> Am Freitag, 21. Januar 2011 schrieb greearb@candelatech.com:
>>> 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.
>
>>> /* scanning finished during invoking of handlers */
>>> diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
>>> index 3e660db..5804fbb 100644
>>> --- a/net/mac80211/scan.c
>>> +++ b/net/mac80211/scan.c
>>> @@ -293,11 +293,14 @@ static void __ieee80211_scan_completed_finish(struct ieee80211_hw *hw,
>>> {
>>> struct ieee80211_local *local = hw_to_local(hw);
>>>
>>> - ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
>>> + if (test_bit(SCAN_LEFT_OPER_CHANNEL,&local->scanning) || was_hw_scan)
>>> + ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
>>> +
>>
>> Why not
>>
>> if (!test_bit(SCAN_OFF_CHANNEL,&local->scanning) || was_hw_scan)
>>
>> instead? If the last scanned channel was a off channel scan this bit will
>> still be set. And that way you don't need this new flag.
>
> If the last channel scanned is the oper-channel, I'm not sure we
> call the return-to-oper-channel logic in the scan code. I can
> double check that, and either way, your suggestion would probably
> be OK.
>>
>>> if (!was_hw_scan) {
>>> ieee80211_configure_filter(local);
>>> drv_sw_scan_complete(local);
>>> - ieee80211_offchannel_return(local, true);
>>> + if (test_bit(SCAN_LEFT_OPER_CHANNEL,&local->scanning))
>>> + ieee80211_offchannel_return(local, true);
>>
>> Same here.
>
> What if the last channel to scan was the operating channel? We are now
> back on channel, but if we earlier scanned something that was not the
> operating channel, we would have called the offchannel stop beacon
> stuff, and just returning to the oper channel in the scan code doesn't
> call the offchannel_return logic if I recall correctly.
Ok, I looked at this more, and if the oper-channel is not the first
channel in the scan list, we can be scanning on the oper channel without
having called the enter_oper_channel logic. This means that the SCAN_OFF_CHANNEL
flag can be TRUE, and yet we can be configured for the oper-channel.
If the oper-channel is the one and only channel to scan, then SCAN_OFF_CHANNEL
will not be set.
It's also possible we temporarily flipped back to the oper-channel state
in the state_decision method.
And maybe then the scan is canceled half way through?
I can imagine someone wanting to call the enter-oper-channel logic if we start
scanning on the oper-channel, which would break the offchannel_return logic
in the patch snippet above if we only test for SCAN_OFF_CHANNEL.
It is too much for me to follow, so I think a new flag specifying only that we
need to call the offchannel_return logic is the most straight-forward way
to go.
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
prev parent reply other threads:[~2011-01-21 14:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-21 5:39 [PATCH] mac80211: Optimize scans on current operating channel greearb
2011-01-21 8:19 ` Helmut Schaa
2011-01-21 13:59 ` Ben Greear
2011-01-21 14:27 ` Ben Greear [this message]
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=4D3997C1.6090008@candelatech.com \
--to=greearb@candelatech.com \
--cc=helmut.schaa@googlemail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).