Merge wireless into wireless-next
[sfrench/cifs-2.6.git] / net / wireless / mlme.c
index 775cac4d61006f0221559e21232f913365cf529b..579fea2f354889084ffca6cf25d87c8259e7812c 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
  * Copyright (c) 2015          Intel Deutschland GmbH
- * Copyright (C) 2019-2020, 2022 Intel Corporation
+ * Copyright (C) 2019-2020, 2022-2023 Intel Corporation
  */
 
 #include <linux/kernel.h>
@@ -52,7 +52,8 @@ void cfg80211_rx_assoc_resp(struct net_device *dev,
                cr.links[link_id].bssid = data->links[link_id].bss->bssid;
                cr.links[link_id].addr = data->links[link_id].addr;
                /* need to have local link addresses for MLO connections */
-               WARN_ON(cr.ap_mld_addr && !cr.links[link_id].addr);
+               WARN_ON(cr.ap_mld_addr &&
+                       !is_valid_ether_addr(cr.links[link_id].addr));
 
                BUG_ON(!cr.links[link_id].bss->channel);
 
@@ -149,7 +150,7 @@ void cfg80211_rx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len)
        struct wireless_dev *wdev = dev->ieee80211_ptr;
        struct ieee80211_mgmt *mgmt = (void *)buf;
 
-       ASSERT_WDEV_LOCK(wdev);
+       lockdep_assert_wiphy(wdev->wiphy);
 
        trace_cfg80211_rx_mlme_mgmt(dev, buf, len);
 
@@ -214,7 +215,7 @@ void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len,
        struct wireless_dev *wdev = dev->ieee80211_ptr;
        struct ieee80211_mgmt *mgmt = (void *)buf;
 
-       ASSERT_WDEV_LOCK(wdev);
+       lockdep_assert_wiphy(wdev->wiphy);
 
        trace_cfg80211_tx_mlme_mgmt(dev, buf, len, reconnect);
 
@@ -262,7 +263,7 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
 {
        struct wireless_dev *wdev = dev->ieee80211_ptr;
 
-       ASSERT_WDEV_LOCK(wdev);
+       lockdep_assert_wiphy(wdev->wiphy);
 
        if (!req->bss)
                return -ENOENT;
@@ -331,7 +332,7 @@ int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
        struct wireless_dev *wdev = dev->ieee80211_ptr;
        int err, i, j;
 
-       ASSERT_WDEV_LOCK(wdev);
+       lockdep_assert_wiphy(wdev->wiphy);
 
        for (i = 1; i < ARRAY_SIZE(req->links); i++) {
                if (!req->links[i].bss)
@@ -393,7 +394,7 @@ int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev,
                .local_state_change = local_state_change,
        };
 
-       ASSERT_WDEV_LOCK(wdev);
+       lockdep_assert_wiphy(wdev->wiphy);
 
        if (local_state_change &&
            (!wdev->connected ||
@@ -423,7 +424,7 @@ int cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev,
        };
        int err;
 
-       ASSERT_WDEV_LOCK(wdev);
+       lockdep_assert_wiphy(wdev->wiphy);
 
        if (!wdev->connected)
                return -ENOTCONN;
@@ -446,7 +447,7 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev,
        struct wireless_dev *wdev = dev->ieee80211_ptr;
        u8 bssid[ETH_ALEN];
 
-       ASSERT_WDEV_LOCK(wdev);
+       lockdep_assert_wiphy(wdev->wiphy);
 
        if (!rdev->ops->deauth)
                return;
@@ -726,6 +727,8 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
        const struct ieee80211_mgmt *mgmt;
        u16 stype;
 
+       lockdep_assert_wiphy(&rdev->wiphy);
+
        if (!wdev->wiphy->mgmt_stypes)
                return -EOPNOTSUPP;
 
@@ -748,8 +751,6 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
            mgmt->u.action.category != WLAN_CATEGORY_PUBLIC) {
                int err = 0;
 
-               wdev_lock(wdev);
-
                switch (wdev->iftype) {
                case NL80211_IFTYPE_ADHOC:
                        /*
@@ -814,7 +815,6 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
                        err = -EOPNOTSUPP;
                        break;
                }
-               wdev_unlock(wdev);
 
                if (err)
                        return err;