mac80211: fix monitor mode channel reporting
authorFelix Fietkau <nbd@openwrt.org>
Sat, 23 Feb 2013 18:02:49 +0000 (18:02 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 23 Feb 2013 18:02:49 +0000 (18:02 +0000)
SVN-Revision: 35761

package/mac80211/patches/300-pending_work.patch
package/mac80211/patches/523-mac80211_configure_antenna_gain.patch

index c6633af8a3d8346c1c6d0673a4e615d4c5515674..11c9a5af4d0053a62acc7ec020ab9241b75790eb 100644 (file)
                nla_nest_end(msg, nl_wowlan);
        }
  #endif
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -3285,13 +3285,19 @@ static int ieee80211_cfg_get_channel(str
+                                    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();
index dd2ff6ad7f7d122f49a635a30a373a90b2a1468b..99bd2e3ba5552f36be4bf2c06e685e0eee93a798 100644 (file)
@@ -92,7 +92,7 @@
  static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
                                  const u8 *addr)
  {
-@@ -3369,6 +3382,7 @@ struct cfg80211_ops mac80211_config_ops 
+@@ -3375,6 +3388,7 @@ struct cfg80211_ops mac80211_config_ops 
        .set_wiphy_params = ieee80211_set_wiphy_params,
        .set_tx_power = ieee80211_set_tx_power,
        .get_tx_power = ieee80211_get_tx_power,