*     interfaces are active this callback should reject the configuration.
  *     If no interfaces are active or the device is down, the channel should
  *     be stored for when a monitor interface becomes active.
- * @set_monitor_enabled: Notify driver that there are only monitor
- *     interfaces running.
  *
  * @scan: Request to do a scan. If returning zero, the scan request is given
  *     the driver, and will be valid until passed to cfg80211_scan_done().
        void    (*get_et_strings)(struct wiphy *wiphy, struct net_device *dev,
                                  u32 sset, u8 *data);
 
-       void (*set_monitor_enabled)(struct wiphy *wiphy, bool enabled);
-
        struct ieee80211_channel *
                (*get_channel)(struct wiphy *wiphy,
                               struct wireless_dev *wdev,
 
                                 int freq, enum nl80211_channel_type chantype)
 {
        struct ieee80211_channel *chan;
-       int err;
 
        if (!rdev->ops->set_monitor_channel)
                return -EOPNOTSUPP;
        if (!chan)
                return -EINVAL;
 
-       err = rdev->ops->set_monitor_channel(&rdev->wiphy, chan, chantype);
-       if (!err) {
-               rdev->monitor_channel = chan;
-               rdev->monitor_channel_type = chantype;
-       }
-
-       return err;
+       return rdev->ops->set_monitor_channel(&rdev->wiphy, chan, chantype);
 }
 
 void
 
        .name   = "wlan",
 };
 
-static struct ieee80211_channel *
-cfg80211_get_any_chan(struct cfg80211_registered_device *rdev)
-{
-       struct ieee80211_supported_band *sband;
-       int i;
-
-       for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
-               sband = rdev->wiphy.bands[i];
-               if (sband && sband->n_channels > 0)
-                       return &sband->channels[0];
-       }
-
-       return NULL;
-}
-
-static void cfg80211_init_mon_chan(struct cfg80211_registered_device *rdev)
-{
-       struct ieee80211_channel *chan;
-
-       chan = cfg80211_get_any_chan(rdev);
-       if (WARN_ON(!chan))
-               return;
-
-       mutex_lock(&rdev->devlist_mtx);
-       WARN_ON(cfg80211_set_monitor_channel(rdev, chan->center_freq,
-                                            NL80211_CHAN_NO_HT));
-       mutex_unlock(&rdev->devlist_mtx);
-}
-
 void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev,
                               enum nl80211_iftype iftype, int num)
 {
-       bool has_monitors_only_old = cfg80211_has_monitors_only(rdev);
-       bool has_monitors_only_new;
-
        ASSERT_RTNL();
 
        rdev->num_running_ifaces += num;
        if (iftype == NL80211_IFTYPE_MONITOR)
                rdev->num_running_monitor_ifaces += num;
-
-       has_monitors_only_new = cfg80211_has_monitors_only(rdev);
-       if (has_monitors_only_new != has_monitors_only_old) {
-               if (rdev->ops->set_monitor_enabled)
-                       rdev->ops->set_monitor_enabled(&rdev->wiphy,
-                                                      has_monitors_only_new);
-
-               if (!has_monitors_only_new) {
-                       rdev->monitor_channel = NULL;
-                       rdev->monitor_channel_type = NL80211_CHAN_NO_HT;
-               } else {
-                       cfg80211_init_mon_chan(rdev);
-               }
-       }
 }
 
 static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
                        mutex_unlock(&rdev->devlist_mtx);
                        dev_put(dev);
                }
+               cfg80211_update_iface_num(rdev, wdev->iftype, 1);
                cfg80211_lock_rdev(rdev);
                mutex_lock(&rdev->devlist_mtx);
                wdev_lock(wdev);
                mutex_unlock(&rdev->devlist_mtx);
                if (ret)
                        return notifier_from_errno(ret);
-               cfg80211_update_iface_num(rdev, wdev->iftype, 1);
                break;
        }