mac80211: fix monitor mode channel reporting
When not using channel contexts with only monitor mode interfaces being active, report local->monitor_chandef to userspace. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
b759f4ddca
commit
cb601ffa32
@ -3285,13 +3285,19 @@ static int ieee80211_cfg_get_channel(struct wiphy *wiphy,
|
|||||||
struct cfg80211_chan_def *chandef)
|
struct cfg80211_chan_def *chandef)
|
||||||
{
|
{
|
||||||
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
|
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;
|
struct ieee80211_chanctx_conf *chanctx_conf;
|
||||||
int ret = -ENODATA;
|
int ret = -ENODATA;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
|
if (local->use_chanctx) {
|
||||||
if (chanctx_conf) {
|
chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
|
||||||
*chandef = chanctx_conf->def;
|
if (chanctx_conf) {
|
||||||
|
*chandef = chanctx_conf->def;
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
} else if (local->open_count == local->monitors) {
|
||||||
|
*chandef = local->monitor_chandef;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
Loading…
Reference in New Issue
Block a user