Search Linux Wireless

Re: Problem with IEEE80211_MONITORING_INTERVAL

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

 



Johannes Berg <johannes@xxxxxxxxxxxxxxxx> writes:

> On Thu, 2009-04-16 at 09:14 +0300, Kalle Valo wrote:
>
>> Basically the problem is that if you scan in an area where there are no
>> or very few APs and scan takes more than two seconds (like abg band
>> scans usually take), sta->last_rx won't get updated because mac80211 is
>> not receiving any frames. This is why the beacon loss check will trigger
>> in ieee80211_associated().
>> 
>> The problem won't happen if there are lot of APs in the neighbourhood
>> distributed throughout the channels because then sta->last_rx is updated
>> often enough and the beacon loss check won't trigger.
>
> That doesn't make sense, why would our AP sta->last_rx be updated for
> other APs? I think you mean sdata->u.mgd.last_beacon, which is, probably
> wrongly, updated for all beacons.

Yes, I meant sta->last_beacon. But the principle is the same anyway.

>> I have been thinking two ways to fix this, either disabling the timer
>> for the duration of the scan or add a check for scan scan in
>> ieee80211_associated(). I started implementing the former but haven't
>> finished it yet. It would be great if someone else can fix it.
>
> But that doesn't make sense to me now. ieee80211_associated() is only
> run from the station work (ieee80211_sta_work) which doesn't do anything
> when we're scanning (and gets restarted on scan end). So even if last_rx
> or last_beacon isn't updated we should only run the evaluation of that
> after the scan finishes.

ifmgd->timer is run every two seconds, even then scanning and it calls
like this:

ieee80211_sta_timer() -> ieee80211_sta_work() -> ieee80211_associated()

And to my knowledge the timer is run even when scanning. Or am I missing
something?

Like you have sometime ago said, this MLME code we would need a rewrite.
It's getting messier all the time.

-- 
Kalle Valo
--
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