Merge tag 'staging-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[linux-2.6-microblaze.git] / net / wireless / core.c
index 8d0883e..0332312 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright 2006-2010         Johannes Berg <johannes@sipsolutions.net>
  * Copyright 2013-2014  Intel Mobile Communications GmbH
  * Copyright 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2020 Intel Corporation
+ * Copyright (C) 2018-2021 Intel Corporation
  */
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
@@ -532,11 +532,11 @@ use_default_name:
        wiphy_net_set(&rdev->wiphy, &init_net);
 
        rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
-       rdev->rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
-                                  &rdev->wiphy.dev, RFKILL_TYPE_WLAN,
-                                  &rdev->rfkill_ops, rdev);
+       rdev->wiphy.rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
+                                         &rdev->wiphy.dev, RFKILL_TYPE_WLAN,
+                                         &rdev->rfkill_ops, rdev);
 
-       if (!rdev->rfkill) {
+       if (!rdev->wiphy.rfkill) {
                wiphy_free(&rdev->wiphy);
                return NULL;
        }
@@ -589,14 +589,6 @@ static int wiphy_verify_combinations(struct wiphy *wiphy)
                if (WARN_ON(!c->num_different_channels))
                        return -EINVAL;
 
-               /*
-                * Put a sane limit on maximum number of different
-                * channels to simplify channel accounting code.
-                */
-               if (WARN_ON(c->num_different_channels >
-                               CFG80211_MAX_NUM_DIFFERENT_CHANNELS))
-                       return -EINVAL;
-
                /* DFS only works on one channel. */
                if (WARN_ON(c->radar_detect_widths &&
                            (c->num_different_channels > 1)))
@@ -936,9 +928,6 @@ int wiphy_register(struct wiphy *wiphy)
                return res;
        }
 
-       /* set up regulatory info */
-       wiphy_regulatory_register(wiphy);
-
        list_add_rcu(&rdev->list, &cfg80211_rdev_list);
        cfg80211_rdev_list_generation++;
 
@@ -949,6 +938,9 @@ int wiphy_register(struct wiphy *wiphy)
        cfg80211_debugfs_rdev_add(rdev);
        nl80211_notify_wiphy(rdev, NL80211_CMD_NEW_WIPHY);
 
+       /* set up regulatory info */
+       wiphy_regulatory_register(wiphy);
+
        if (wiphy->regulatory_flags & REGULATORY_CUSTOM_REG) {
                struct regulatory_request request;
 
@@ -993,10 +985,10 @@ int wiphy_register(struct wiphy *wiphy)
        rdev->wiphy.registered = true;
        rtnl_unlock();
 
-       res = rfkill_register(rdev->rfkill);
+       res = rfkill_register(rdev->wiphy.rfkill);
        if (res) {
-               rfkill_destroy(rdev->rfkill);
-               rdev->rfkill = NULL;
+               rfkill_destroy(rdev->wiphy.rfkill);
+               rdev->wiphy.rfkill = NULL;
                wiphy_unregister(&rdev->wiphy);
                return res;
        }
@@ -1012,18 +1004,10 @@ void wiphy_rfkill_start_polling(struct wiphy *wiphy)
        if (!rdev->ops->rfkill_poll)
                return;
        rdev->rfkill_ops.poll = cfg80211_rfkill_poll;
-       rfkill_resume_polling(rdev->rfkill);
+       rfkill_resume_polling(wiphy->rfkill);
 }
 EXPORT_SYMBOL(wiphy_rfkill_start_polling);
 
-void wiphy_rfkill_stop_polling(struct wiphy *wiphy)
-{
-       struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
-
-       rfkill_pause_polling(rdev->rfkill);
-}
-EXPORT_SYMBOL(wiphy_rfkill_stop_polling);
-
 void wiphy_unregister(struct wiphy *wiphy)
 {
        struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
@@ -1035,8 +1019,8 @@ void wiphy_unregister(struct wiphy *wiphy)
                wiphy_unlock(&rdev->wiphy);
                __count == 0; }));
 
-       if (rdev->rfkill)
-               rfkill_unregister(rdev->rfkill);
+       if (rdev->wiphy.rfkill)
+               rfkill_unregister(rdev->wiphy.rfkill);
 
        rtnl_lock();
        wiphy_lock(&rdev->wiphy);
@@ -1088,7 +1072,7 @@ void cfg80211_dev_free(struct cfg80211_registered_device *rdev)
 {
        struct cfg80211_internal_bss *scan, *tmp;
        struct cfg80211_beacon_registration *reg, *treg;
-       rfkill_destroy(rdev->rfkill);
+       rfkill_destroy(rdev->wiphy.rfkill);
        list_for_each_entry_safe(reg, treg, &rdev->beacon_registrations, list) {
                list_del(&reg->list);
                kfree(reg);
@@ -1110,7 +1094,7 @@ void wiphy_rfkill_set_hw_state_reason(struct wiphy *wiphy, bool blocked,
 {
        struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
 
-       if (rfkill_set_hw_state_reason(rdev->rfkill, blocked, reason))
+       if (rfkill_set_hw_state_reason(wiphy->rfkill, blocked, reason))
                schedule_work(&rdev->rfkill_block);
 }
 EXPORT_SYMBOL(wiphy_rfkill_set_hw_state_reason);
@@ -1503,7 +1487,7 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
                                             wdev->use_4addr, 0))
                        return notifier_from_errno(-EOPNOTSUPP);
 
-               if (rfkill_blocked(rdev->rfkill))
+               if (rfkill_blocked(rdev->wiphy.rfkill))
                        return notifier_from_errno(-ERFKILL);
                break;
        default: