diff options
Diffstat (limited to 'net/wireless/chan.c')
-rw-r--r-- | net/wireless/chan.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/net/wireless/chan.c b/net/wireless/chan.c index 869c43d4414c..00fc7b78063c 100644 --- a/net/wireless/chan.c +++ b/net/wireless/chan.c @@ -712,6 +712,19 @@ static bool cfg80211_is_wiphy_oper_chan(struct wiphy *wiphy, return false; } +static bool +cfg80211_offchan_chain_is_active(struct cfg80211_registered_device *rdev, + struct ieee80211_channel *channel) +{ + if (!rdev->offchan_radar_wdev) + return false; + + if (!cfg80211_chandef_valid(&rdev->offchan_radar_chandef)) + return false; + + return cfg80211_is_sub_chan(&rdev->offchan_radar_chandef, channel); +} + bool cfg80211_any_wiphy_oper_chan(struct wiphy *wiphy, struct ieee80211_channel *chan) { @@ -728,6 +741,9 @@ bool cfg80211_any_wiphy_oper_chan(struct wiphy *wiphy, if (cfg80211_is_wiphy_oper_chan(&rdev->wiphy, chan)) return true; + + if (cfg80211_offchan_chain_is_active(rdev, chan)) + return true; } return false; |