Search Linux Wireless

Re: [PATCH] mac80211: fix sw scan bracketing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 27, 2010 at 2:30 AM, Luis R. Rodriguez <mcgrof@xxxxxxxxx> wrote:
> On Tue, Jul 27, 2010 at 2:22 AM, Luis R. Rodriguez <mcgrof@xxxxxxxxx> wrote:
>> On Tue, Jul 27, 2010 at 1:27 AM, Luis R. Rodriguez <mcgrof@xxxxxxxxx> wrote:
>>> On Tue, Jul 27, 2010 at 1:04 AM, Luis R. Rodriguez <mcgrof@xxxxxxxxx> wrote:
>>>> On Fri, Jun 18, 2010 at 3:32 AM, Johannes Berg
>>>> <johannes@xxxxxxxxxxxxxxxx> wrote:
>>>>> From: Johannes Berg <johannes.berg@xxxxxxxxx>
>>>>>
>>>>> Currently, detection in hwsim and ath9k can
>>>>> detect that two sw scans are in flight at the
>>>>> same time, which isn't really true. It is
>>>>> caused by a race condition, because the scan
>>>>> complete callback is called too late, after
>>>>> the lock has been dropped, so that a new scan
>>>>> can be started before it is called.
>>>>>
>>>>> It is also called too early semantically, as
>>>>> it is currently called _after_ the return to
>>>>> the operating channel -- it should be before
>>>>> so that drivers know this is the operating
>>>>> channel again.
>>>>>
>>>>> Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
>>>>> ---
>>>>>  net/mac80211/scan.c |    4 ++--
>>>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> --- wireless-testing.orig/net/mac80211/scan.c   2010-06-18 12:22:56.000000000 +0200
>>>>> +++ wireless-testing/net/mac80211/scan.c        2010-06-18 12:23:25.000000000 +0200
>>>>> @@ -287,6 +287,8 @@ void ieee80211_scan_completed(struct iee
>>>>>        local->scanning = 0;
>>>>>        local->scan_channel = NULL;
>>>>>
>>>>> +       drv_sw_scan_complete(local);
>>>>> +
>>>>>        /* we only have to protect scan_req and hw/sw scan */
>>>>>        mutex_unlock(&local->scan_mtx);
>>>>>
>>>>> @@ -296,8 +298,6 @@ void ieee80211_scan_completed(struct iee
>>>>>
>>>>>        ieee80211_configure_filter(local);
>>>>>
>>>>> -       drv_sw_scan_complete(local);
>>>>> -
>>>>>        ieee80211_offchannel_return(local, true);
>>>>>
>>>>>  done:
>>>>
>>>> Leaving the entire patch in the e-mail reply as the patch is small to
>>>> help with context.
>>>>
>>>> Turns out this patch broke ath9k in the sense that right after a scan
>>>> we get disconnected from the AP. I just bisected wireless-testing by
>>>> master-tag dates and found 2010-06-18 to be where we hit poo in. I
>>>> reverted this patch and its cured. I'm going to test a recent
>>>> wireless-testing now and then just try reverting this to see if its OK
>>>> even on a recent wireless-testing, and then see if we can fix this
>>>> properly on ath9k or whatever.
>>>
>>> Yeap, reverting this patch alone today on wireless-testing makes me
>>> ath9k happy once again.
>>
>> So after some though and review in order to fix this we need a little
>> more time and thought. The above patch changes the order in which we
>> configure hardware upon a scan complete. It used to be we would
>> configure the hardware, configure the filter and then scan complete.
>> By then we'd be on the home channel and the filters would be set
>> correctly. ath9k's scan complete routine does a few things which
>> depend on the channel and will make hardware poo otherwise or do
>> stupid things:
>>
>>  * start TX poll routine, due to the new latency introduced to
>> configure hardware and configure the RX filter the TX polll routine
>> now has some extra work done by hardware before it actually starts
>> TXing. I don't suspect this could introduce a huge regression but it
>> is worth noting.
>>  * ANI gets started, and the wrong channel is used if we're not yet
>> on the home channel. A simple patch to test if this may be causing the
>> disconnect issue I am seeing I just tried was to increase the delay
>> before starting ANI, this did indeed help.
>
> Oh and having the right filters set up for ANI processing is important too.
>
> At first I thought trying to detect upon hw config the home channel
> would be a good place to move the ani start, but then we'd also need
> to move the beacon config and test that.. at this point there are just
> too many unknowns on possible regressions introduced by this.

I'm also a bit surprised there are no other drivers with issues due to this too.

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux