mac80211: really fix monitor mode channel reporting
After Felix's patch it was still broken in case you used more than just a single monitor interface. Fix it better now. Reported-by: Sujith Manoharan <sujith@msujith.org> Tested-by: Sujith Manoharan <sujith@msujith.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
d0ae708d1a
commit
feda30271e
1 changed files with 13 additions and 8 deletions
|
@ -3290,14 +3290,19 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
|
|||
int ret = -ENODATA;
|
||||
|
||||
rcu_read_lock();
|
||||
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;
|
||||
chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
|
||||
if (chanctx_conf) {
|
||||
*chandef = chanctx_conf->def;
|
||||
ret = 0;
|
||||
} else if (local->open_count > 0 &&
|
||||
local->open_count == local->monitors &&
|
||||
sdata->vif.type == NL80211_IFTYPE_MONITOR) {
|
||||
if (local->use_chanctx)
|
||||
*chandef = local->monitor_chandef;
|
||||
else
|
||||
cfg80211_chandef_create(chandef,
|
||||
local->_oper_channel,
|
||||
local->_oper_channel_type);
|
||||
ret = 0;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
|
Loading…
Reference in a new issue