Lines Matching refs:bss

76 static void bss_free(struct cfg80211_internal_bss *bss)  in bss_free()  argument
80 if (WARN_ON(atomic_read(&bss->hold))) in bss_free()
83 ies = (void *)rcu_access_pointer(bss->pub.beacon_ies); in bss_free()
84 if (ies && !bss->pub.hidden_beacon_bss) in bss_free()
86 ies = (void *)rcu_access_pointer(bss->pub.proberesp_ies); in bss_free()
94 if (!list_empty(&bss->hidden_list)) in bss_free()
95 list_del(&bss->hidden_list); in bss_free()
97 kfree(bss); in bss_free()
101 struct cfg80211_internal_bss *bss) in bss_ref_get() argument
105 bss->refcount++; in bss_ref_get()
106 if (bss->pub.hidden_beacon_bss) { in bss_ref_get()
107 bss = container_of(bss->pub.hidden_beacon_bss, in bss_ref_get()
110 bss->refcount++; in bss_ref_get()
115 struct cfg80211_internal_bss *bss) in bss_ref_put() argument
119 if (bss->pub.hidden_beacon_bss) { in bss_ref_put()
121 hbss = container_of(bss->pub.hidden_beacon_bss, in bss_ref_put()
128 bss->refcount--; in bss_ref_put()
129 if (bss->refcount == 0) in bss_ref_put()
130 bss_free(bss); in bss_ref_put()
134 struct cfg80211_internal_bss *bss) in __cfg80211_unlink_bss() argument
138 if (!list_empty(&bss->hidden_list)) { in __cfg80211_unlink_bss()
143 if (!bss->pub.hidden_beacon_bss) in __cfg80211_unlink_bss()
149 list_del_init(&bss->hidden_list); in __cfg80211_unlink_bss()
152 list_del_init(&bss->list); in __cfg80211_unlink_bss()
153 rb_erase(&bss->rbn, &rdev->bss_tree); in __cfg80211_unlink_bss()
158 bss_ref_put(rdev, bss); in __cfg80211_unlink_bss()
165 struct cfg80211_internal_bss *bss, *tmp; in __cfg80211_bss_expire() local
170 list_for_each_entry_safe(bss, tmp, &rdev->bss_list, list) { in __cfg80211_bss_expire()
171 if (atomic_read(&bss->hold)) in __cfg80211_bss_expire()
173 if (!time_after(expire_time, bss->ts)) in __cfg80211_bss_expire()
176 if (__cfg80211_unlink_bss(rdev, bss)) in __cfg80211_bss_expire()
186 struct cfg80211_internal_bss *bss, *oldest = NULL; in cfg80211_bss_expire_oldest() local
191 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_bss_expire_oldest()
192 if (atomic_read(&bss->hold)) in cfg80211_bss_expire_oldest()
195 if (!list_empty(&bss->hidden_list) && in cfg80211_bss_expire_oldest()
196 !bss->pub.hidden_beacon_bss) in cfg80211_bss_expire_oldest()
199 if (oldest && time_before(oldest->ts, bss->ts)) in cfg80211_bss_expire_oldest()
201 oldest = bss; in cfg80211_bss_expire_oldest()
469 struct cfg80211_internal_bss *bss; in cfg80211_bss_age() local
473 list_for_each_entry(bss, &rdev->bss_list, list) in cfg80211_bss_age()
474 bss->ts -= age_jiffies; in cfg80211_bss_age()
718 struct cfg80211_internal_bss *bss, *res = NULL; in cfg80211_get_bss() local
727 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_get_bss()
728 if (!cfg80211_bss_type_match(bss->pub.capability, in cfg80211_get_bss()
729 bss->pub.channel->band, bss_type)) in cfg80211_get_bss()
732 bss_privacy = (bss->pub.capability & WLAN_CAPABILITY_PRIVACY); in cfg80211_get_bss()
736 if (channel && bss->pub.channel != channel) in cfg80211_get_bss()
738 if (!is_valid_ether_addr(bss->pub.bssid)) in cfg80211_get_bss()
741 if (time_after(now, bss->ts + IEEE80211_SCAN_RESULT_EXPIRE) && in cfg80211_get_bss()
742 !atomic_read(&bss->hold)) in cfg80211_get_bss()
744 if (is_bss(&bss->pub, bssid, ssid, ssid_len)) { in cfg80211_get_bss()
745 res = bss; in cfg80211_get_bss()
760 struct cfg80211_internal_bss *bss) in rb_insert_bss() argument
771 cmp = cmp_bss(&bss->pub, &tbss->pub, BSS_CMP_REGULAR); in rb_insert_bss()
784 rb_link_node(&bss->rbn, parent, p); in rb_insert_bss()
785 rb_insert_color(&bss->rbn, &rdev->bss_tree); in rb_insert_bss()
794 struct cfg80211_internal_bss *bss; in rb_find_bss() local
798 bss = rb_entry(n, struct cfg80211_internal_bss, rbn); in rb_find_bss()
799 r = cmp_bss(&res->pub, &bss->pub, mode); in rb_find_bss()
802 return bss; in rb_find_bss()
816 struct cfg80211_internal_bss *bss; in cfg80211_combine_bsses() local
843 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_combine_bsses()
850 if (!ether_addr_equal(bss->pub.bssid, new->pub.bssid)) in cfg80211_combine_bsses()
852 if (bss->pub.channel != new->pub.channel) in cfg80211_combine_bsses()
854 if (bss->pub.scan_width != new->pub.scan_width) in cfg80211_combine_bsses()
856 if (rcu_access_pointer(bss->pub.beacon_ies)) in cfg80211_combine_bsses()
858 ies = rcu_access_pointer(bss->pub.ies); in cfg80211_combine_bsses()
866 if (WARN_ON_ONCE(bss->pub.hidden_beacon_bss)) in cfg80211_combine_bsses()
868 if (WARN_ON_ONCE(!list_empty(&bss->hidden_list))) in cfg80211_combine_bsses()
869 list_del(&bss->hidden_list); in cfg80211_combine_bsses()
871 list_add(&bss->hidden_list, &new->hidden_list); in cfg80211_combine_bsses()
872 bss->pub.hidden_beacon_bss = &new->pub; in cfg80211_combine_bsses()
873 new->refcount += bss->refcount; in cfg80211_combine_bsses()
874 rcu_assign_pointer(bss->pub.beacon_ies, in cfg80211_combine_bsses()
924 struct cfg80211_internal_bss *bss; in cfg80211_bss_update() local
957 list_for_each_entry(bss, &found->hidden_list, in cfg80211_bss_update()
961 ies = rcu_access_pointer(bss->pub.beacon_ies); in cfg80211_bss_update()
964 rcu_assign_pointer(bss->pub.beacon_ies, in cfg80211_bss_update()
1308 struct cfg80211_internal_bss *bss; in cfg80211_ref_bss() local
1313 bss = container_of(pub, struct cfg80211_internal_bss, pub); in cfg80211_ref_bss()
1316 bss_ref_get(rdev, bss); in cfg80211_ref_bss()
1324 struct cfg80211_internal_bss *bss; in cfg80211_put_bss() local
1329 bss = container_of(pub, struct cfg80211_internal_bss, pub); in cfg80211_put_bss()
1332 bss_ref_put(rdev, bss); in cfg80211_put_bss()
1340 struct cfg80211_internal_bss *bss; in cfg80211_unlink_bss() local
1345 bss = container_of(pub, struct cfg80211_internal_bss, pub); in cfg80211_unlink_bss()
1348 if (!list_empty(&bss->list)) { in cfg80211_unlink_bss()
1349 if (__cfg80211_unlink_bss(rdev, bss)) in cfg80211_unlink_bss()
1561 struct cfg80211_internal_bss *bss, char *current_ev, in ieee80211_bss() argument
1575 memcpy(iwe.u.ap_addr.sa_data, bss->pub.bssid, ETH_ALEN); in ieee80211_bss()
1583 iwe.u.freq.m = ieee80211_frequency_to_channel(bss->pub.channel->center_freq); in ieee80211_bss()
1592 iwe.u.freq.m = bss->pub.channel->center_freq; in ieee80211_bss()
1607 sig = bss->pub.signal / 100; in ieee80211_bss()
1618 iwe.u.qual.level = bss->pub.signal; in ieee80211_bss()
1620 iwe.u.qual.qual = bss->pub.signal; in ieee80211_bss()
1635 if (bss->pub.capability & WLAN_CAPABILITY_PRIVACY) in ieee80211_bss()
1646 ies = rcu_dereference(bss->pub.ies); in ieee80211_bss()
1776 if (bss->pub.capability & (WLAN_CAPABILITY_ESS | WLAN_CAPABILITY_IBSS) || in ieee80211_bss()
1782 else if (bss->pub.capability & WLAN_CAPABILITY_ESS) in ieee80211_bss()
1804 elapsed_jiffies_msecs(bss->ts)); in ieee80211_bss()
1825 struct cfg80211_internal_bss *bss; in ieee80211_scan_results() local
1831 list_for_each_entry(bss, &rdev->bss_list, list) { in ieee80211_scan_results()
1836 current_ev = ieee80211_bss(&rdev->wiphy, info, bss, in ieee80211_scan_results()