wifi: cfg80211: use bss_from_pub() instead of container_of()
authorJohannes Berg <johannes.berg@intel.com>
Mon, 17 Oct 2022 07:03:48 +0000 (09:03 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 1 Dec 2022 14:09:10 +0000 (15:09 +0100)
There's no need to open-code container_of() when we have
bss_from_pub(). Use it.

Change-Id: I074723717909ba211a40e6499f0c36df0e2ba4be
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/scan.c

index a39c93753213e59f4707ee09e1742e629991604d..8cf405776dde8dba8ec1d59de0118e0ecb9f0c1e 100644 (file)
@@ -158,9 +158,8 @@ static inline void bss_ref_put(struct cfg80211_registered_device *rdev,
 
        if (bss->pub.hidden_beacon_bss) {
                struct cfg80211_internal_bss *hbss;
-               hbss = container_of(bss->pub.hidden_beacon_bss,
-                                   struct cfg80211_internal_bss,
-                                   pub);
+
+               hbss = bss_from_pub(bss->pub.hidden_beacon_bss);
                hbss->refcount--;
                if (hbss->refcount == 0)
                        bss_free(hbss);
@@ -169,9 +168,7 @@ static inline void bss_ref_put(struct cfg80211_registered_device *rdev,
        if (bss->pub.transmitted_bss) {
                struct cfg80211_internal_bss *tbss;
 
-               tbss = container_of(bss->pub.transmitted_bss,
-                                   struct cfg80211_internal_bss,
-                                   pub);
+               tbss = bss_from_pub(bss->pub.transmitted_bss);
                tbss->refcount--;
                if (tbss->refcount == 0)
                        bss_free(tbss);
@@ -1791,13 +1788,8 @@ cfg80211_bss_update(struct cfg80211_registered_device *rdev,
 
                /* This must be before the call to bss_ref_get */
                if (tmp->pub.transmitted_bss) {
-                       struct cfg80211_internal_bss *pbss =
-                               container_of(tmp->pub.transmitted_bss,
-                                            struct cfg80211_internal_bss,
-                                            pub);
-
                        new->pub.transmitted_bss = tmp->pub.transmitted_bss;
-                       bss_ref_get(rdev, pbss);
+                       bss_ref_get(rdev, bss_from_pub(tmp->pub.transmitted_bss));
                }
 
                list_add_tail(&new->list, &rdev->bss_list);
@@ -2570,15 +2562,12 @@ EXPORT_SYMBOL(cfg80211_inform_bss_frame_data);
 void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
 {
        struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
-       struct cfg80211_internal_bss *bss;
 
        if (!pub)
                return;
 
-       bss = container_of(pub, struct cfg80211_internal_bss, pub);
-
        spin_lock_bh(&rdev->bss_lock);
-       bss_ref_get(rdev, bss);
+       bss_ref_get(rdev, bss_from_pub(pub));
        spin_unlock_bh(&rdev->bss_lock);
 }
 EXPORT_SYMBOL(cfg80211_ref_bss);
@@ -2586,15 +2575,12 @@ EXPORT_SYMBOL(cfg80211_ref_bss);
 void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
 {
        struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
-       struct cfg80211_internal_bss *bss;
 
        if (!pub)
                return;
 
-       bss = container_of(pub, struct cfg80211_internal_bss, pub);
-
        spin_lock_bh(&rdev->bss_lock);
-       bss_ref_put(rdev, bss);
+       bss_ref_put(rdev, bss_from_pub(pub));
        spin_unlock_bh(&rdev->bss_lock);
 }
 EXPORT_SYMBOL(cfg80211_put_bss);
@@ -2608,7 +2594,7 @@ void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
        if (WARN_ON(!pub))
                return;
 
-       bss = container_of(pub, struct cfg80211_internal_bss, pub);
+       bss = bss_from_pub(pub);
 
        spin_lock_bh(&rdev->bss_lock);
        if (list_empty(&bss->list))
@@ -2617,8 +2603,7 @@ void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
        list_for_each_entry_safe(nontrans_bss, tmp,
                                 &pub->nontrans_list,
                                 nontrans_list) {
-               tmp1 = container_of(nontrans_bss,
-                                   struct cfg80211_internal_bss, pub);
+               tmp1 = bss_from_pub(nontrans_bss);
                if (__cfg80211_unlink_bss(rdev, tmp1))
                        rdev->bss_generation++;
        }
@@ -2675,9 +2660,7 @@ void cfg80211_update_assoc_bss_entry(struct wireless_dev *wdev,
 
        /* use transmitting bss */
        if (cbss->pub.transmitted_bss)
-               cbss = container_of(cbss->pub.transmitted_bss,
-                                   struct cfg80211_internal_bss,
-                                   pub);
+               cbss = bss_from_pub(cbss->pub.transmitted_bss);
 
        cbss->pub.channel = chan;
 
@@ -2706,8 +2689,7 @@ void cfg80211_update_assoc_bss_entry(struct wireless_dev *wdev,
                list_for_each_entry_safe(nontrans_bss, tmp,
                                         &new->pub.nontrans_list,
                                         nontrans_list) {
-                       bss = container_of(nontrans_bss,
-                                          struct cfg80211_internal_bss, pub);
+                       bss = bss_from_pub(nontrans_bss);
                        if (__cfg80211_unlink_bss(rdev, bss))
                                rdev->bss_generation++;
                }
@@ -2724,8 +2706,7 @@ void cfg80211_update_assoc_bss_entry(struct wireless_dev *wdev,
        list_for_each_entry_safe(nontrans_bss, tmp,
                                 &cbss->pub.nontrans_list,
                                 nontrans_list) {
-               bss = container_of(nontrans_bss,
-                                  struct cfg80211_internal_bss, pub);
+               bss = bss_from_pub(nontrans_bss);
                bss->pub.channel = chan;
                rb_erase(&bss->rbn, &rdev->bss_tree);
                rb_insert_bss(rdev, bss);