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(); + + if (dfs_region == NL80211_DFS_UNSET) + return false; + ht_cap = &wiphy->bands[chandef->chan->band]->ht_cap; vht_cap = &wiphy->bands[chandef->chan->band]->vht_cap; diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index dcbc083..1acf45c 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -5641,8 +5641,13 @@ static int nl80211_start_radar_detection(struct sk_buff *skb, struct net_device *dev = info->user_ptr[1]; struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_chan_def chandef; + enum nl80211_dfs_regions dfs_region; int err; + dfs_region = reg_get_dfs_region(wdev->wiphy); + if (dfs_region == NL80211_DFS_UNSET) + return -EINVAL; + err = nl80211_parse_chandef(rdev, info, &chandef); if (err) return err; -- 1.8.4.rc3 -- 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