Search Linux Wireless

Re: [PATCH] cfg80211: allow beaconing after CAC

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

 



On Tue, Oct 29, 2013 at 7:15 AM, Janusz Dziedzic
<janusz.dziedzic@xxxxxxxxx> wrote:
> After going throught the Channel Availability Check (CAC)
> required by DFS enable beaconing. Channels that have gone
> through a CAC will be in the NL80211_DFS_AVAILABLE.
> Without this change APs don't start beaconing after
> successful CAC.
>
> Signed-off-by: Janusz Dziedzic <janusz.dziedzic@xxxxxxxxx>
> ---
> One flag could be used in the future IEEE80211_CHAN_NO_IR.
>
>  net/wireless/chan.c |   20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/net/wireless/chan.c b/net/wireless/chan.c
> index a6f5c4c..205acf2 100644
> --- a/net/wireless/chan.c
> +++ b/net/wireless/chan.c
> @@ -432,6 +432,7 @@ static bool cfg80211_secondary_chans_ok(struct wiphy *wiphy,
>  {
>         struct ieee80211_channel *c;
>         u32 freq, start_freq, end_freq;
> +       u32 ignore_flags;
>
>         start_freq = cfg80211_get_start_freq(center_freq, bandwidth);
>         end_freq = cfg80211_get_end_freq(center_freq, bandwidth);
> @@ -441,13 +442,24 @@ static bool cfg80211_secondary_chans_ok(struct wiphy *wiphy,
>                 if (!c)
>                         return false;
>
> +               ignore_flags = IEEE80211_CHAN_RADAR;
> +
>                 /* check for radar flags */
> -               if ((prohibited_flags & c->flags & IEEE80211_CHAN_RADAR) &&
> -                   (c->dfs_state != NL80211_DFS_AVAILABLE))
> -                       return false;
> +               if (prohibited_flags & c->flags & IEEE80211_CHAN_RADAR) {
> +                       if (c->dfs_state != NL80211_DFS_AVAILABLE)
> +                               return false;
> +                       /*
> +                        * If DFS is required we should check only
> +                        * c->dfs_state == NL80211_DFS_AVAILABLE and
> +                        * ignore IEEE80211_CHAN_NO_IBSS and
> +                        * IEEE80211_CHAN_PASSIVE_SCAN flags
> +                        */
> +                       ignore_flags |= IEEE80211_CHAN_NO_IBSS |
> +                                       IEEE80211_CHAN_PASSIVE_SCAN;
> +               }
>
>                 /* check for the other flags */
> -               if (c->flags & prohibited_flags & ~IEEE80211_CHAN_RADAR)
> +               if (c->flags & prohibited_flags & ~ignore_flags)
>                         return false;
>         }

How do we know that prohibited_flags won't have IEEE80211_CHAN_RADAR
or IEEE80211_CHAN_NO_IBSS set?

Also why is IEEE80211_CHAN_NO_IBSS used and not IEEE80211_CHAN_NO_IR
instead? I sent patches to help clarify this situation around usage of
both no-ibss and active scan flags, by merging them to no-ir. I'm not
sure of the status of those patches going in.

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