From: Peter Oh <[email protected]>

NL80211_ATTR_OFFCHANNEL_TX_OK does not mean given channel is always
off channel, but it means the channel given could be off channel.
Hence it should not block the given channel to be used if given
channel does not require off channel mgmt tx although regulatory
domain is non-ETSI.

Signed-off-by: Peter Oh <[email protected]>
---
 net/wireless/nl80211.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 4eece06..991042b 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -9915,7 +9915,9 @@ static int nl80211_tx_mgmt(struct sk_buff *skb, struct 
genl_info *info)
                return -EINVAL;
 
        wdev_lock(wdev);
-       if (params.offchan && !cfg80211_off_channel_oper_allowed(wdev)) {
+       if (params.offchan &&
+           !cfg80211_chandef_identical(&chandef, &wdev->chandef) &&
+           !cfg80211_off_channel_oper_allowed(wdev)) {
                wdev_unlock(wdev);
                return -EBUSY;
        }
-- 
2.7.4

Reply via email to