On 29 October 2013 11:25, Luis R. Rodriguez <mcgrof@xxxxxxxxxxxxxxxx> wrote: > 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. > I am not sure. Even without my patch seems IEEE80211_CHAN_RADAR is added to prohibited_flags and have different meaning (I think). In orginal code we have: if (c->flags & prohibited_flags & ~IEEE80211_CHAN_RADAR) So, we skiping CHAN_RADAR anyway? I am not sure we should change prohibited_flags to different name or stop skiping CHAN_RADAR and modify upper layer - cfg80211_reg_can_beacon() in such case. BR Janusz -- 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