From 280f9b809dc7eaa65ba3d66d9e51e66b74bfe980 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 23 Feb 2013 19:02:14 +0100 Subject: [PATCH] --- yaml --- r: 360800 b: refs/heads/master c: cb601ffa326bc5c74a6ecd8e72ae9631e5f12f75 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/mac80211/cfg.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 7a97414892fc..d157ee1547e2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b759f4ddcafb6414056cf3e49f2ab12359101c2e +refs/heads/master: cb601ffa326bc5c74a6ecd8e72ae9631e5f12f75 diff --git a/trunk/net/mac80211/cfg.c b/trunk/net/mac80211/cfg.c index 09d96a8f6c2c..808f5fcd1ced 100644 --- a/trunk/net/mac80211/cfg.c +++ b/trunk/net/mac80211/cfg.c @@ -3285,13 +3285,19 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy, struct cfg80211_chan_def *chandef) { struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); + struct ieee80211_local *local = wiphy_priv(wiphy); struct ieee80211_chanctx_conf *chanctx_conf; int ret = -ENODATA; rcu_read_lock(); - chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); - if (chanctx_conf) { - *chandef = chanctx_conf->def; + if (local->use_chanctx) { + chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); + if (chanctx_conf) { + *chandef = chanctx_conf->def; + ret = 0; + } + } else if (local->open_count == local->monitors) { + *chandef = local->monitor_chandef; ret = 0; } rcu_read_unlock();