Search Linux Wireless

Re: [PATCH v3] cfg80211: fix dfs channel state after stopping AP

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

 



On 3 December 2013 15:18, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote:

>> +             if (cfg80211_chandef_dfs_required(wdev->wiphy, &wdev->preset_chandef))
>> +                     cfg80211_leave_dfs_chandef(wdev->wiphy, &wdev->preset_chandef);
>
> *far* too long lines. Read CodingStyle documentation please.
>
> Also, any reason to not always call cfg80211_leave_dfs_chandef()?

I had only cfg80211_leave_dfs_chandef() but then I added if() and
exceeded  80 lines.
So I will call always cfg80211_leave_dfs_chandef().

>> +static void cfg80211_leave_dfs_chans(struct wiphy *wiphy,
>> +                                  u32 center_freq,
>> +                                  u32 bandwidth)
>> +{
>> +     struct ieee80211_channel *c;
>> +     u32 freq, start_freq, end_freq;
>> +
>> +     start_freq = cfg80211_get_start_freq(center_freq, bandwidth);
>> +     end_freq = cfg80211_get_end_freq(center_freq, bandwidth);
>> +
>> +     for (freq = start_freq; freq <= end_freq; freq += 20) {
>> +             c = ieee80211_get_channel(wiphy, freq);
>> +             if (!c)
>> +                     continue;
>> +             if (!(c->flags & IEEE80211_CHAN_RADAR))
>> +                     continue;
>> +             if (c->dfs_state != NL80211_DFS_AVAILABLE)
>> +                     continue;
>> +
>> +             cfg80211_set_chans_dfs_state(wiphy, freq, 20, NL80211_DFS_USABLE);
>
> This seems to catch it anyway.
>
> This also seems a bit wrong, if regulatory happens to change and say the
> RADAR flag goes away, then this won't set it to USABLE, and then if the
> RADAR flag later re-appears? I guess Luis should handle that in reg.c
> though or so?

Yes, you are right. It does not matter if RADAR flag is set. When we
are leaving AP mode then none of channels should have dfs_state =
NL80211_DFS_AVAILABLE. So all DFS_AVAILABLE channel will be set to
DFS_USABLE.

I will send new version of this patch.

Concerning your question whether this patch is needed in 3.13. I think
this is rather important issue. Look at such situation:
*start AP on DFS channel,
*CAC pass - channel dfs_state changes to AVAILABLE, AP starts beaconing,
*stop AP by killing hostapd, channel dfs_state stays AVAILABLE,
*start AP again, it starts beaconig immediately, there is no CAC
beacuse channel dfs_state is AVAILABLE.

Purpose of this patch is to change channel dfs_state to USABLE when
leaving/stoping AP, so starting AP again will trigger first CAC and
after successful CAC starts beaconig.


> johannes
Marek
--
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 Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux