On 13 November 2013 22:29, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > On Wed, 2013-11-13 at 19:12 +0100, Luis R. Rodriguez wrote: >> Check the DFS region before channel availability check >> or declaring a channel as DFS usable. >> >> Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxxxxxxxx> >> --- >> net/wireless/chan.c | 8 ++++++++ >> net/wireless/nl80211.c | 5 +++++ >> 2 files changed, 13 insertions(+) >> >> diff --git a/net/wireless/chan.c b/net/wireless/chan.c >> index 78559b5..4e6eaa0 100644 >> --- a/net/wireless/chan.c >> +++ b/net/wireless/chan.c >> @@ -517,10 +517,18 @@ bool cfg80211_chandef_usable(struct wiphy *wiphy, >> struct ieee80211_sta_ht_cap *ht_cap; >> struct ieee80211_sta_vht_cap *vht_cap; >> u32 width, control_freq; >> + enum nl80211_dfs_regions dfs_region; >> >> if (WARN_ON(!cfg80211_chandef_valid(chandef))) >> return false; >> >> + rtnl_lock(); >> + dfs_region = reg_get_dfs_region(wiphy); >> + rtnl_unlock(); > Do we need check dfs_region in cfg80211_can_beacon() at all? We already check first if all channels NL80211_DFS_AVAILABLE. To be DFS_AVAILABLE we need pass CAC, and we will fail CAC if dfs_region == UNSET. Anyway we can do something like this in cfg80211_can_beacon() if (cfg80211_chandef_dfs_required(wiphy, chandef) > 0 && - cfg80211_chandef_dfs_available(wiphy, chandef)) { + cfg80211_chandef_dfs_available(wiphy, chandef) && + reg_get_dfs_region(wiphy) != NL80211_DFS_UNSET) { ... And change doc that cfg80211_can_beacon() require rtnl_lock. But I think this is not required. 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