Lines Matching refs:bss
80 static void bss_free(struct cfg80211_internal_bss *bss) in bss_free() argument
84 if (WARN_ON(atomic_read(&bss->hold))) in bss_free()
87 ies = (void *)rcu_access_pointer(bss->pub.beacon_ies); in bss_free()
88 if (ies && !bss->pub.hidden_beacon_bss) in bss_free()
90 ies = (void *)rcu_access_pointer(bss->pub.proberesp_ies); in bss_free()
98 if (!list_empty(&bss->hidden_list)) in bss_free()
99 list_del(&bss->hidden_list); in bss_free()
101 kfree(bss); in bss_free()
105 struct cfg80211_internal_bss *bss) in bss_ref_get() argument
109 bss->refcount++; in bss_ref_get()
111 if (bss->pub.hidden_beacon_bss) in bss_ref_get()
112 bss_from_pub(bss->pub.hidden_beacon_bss)->refcount++; in bss_ref_get()
114 if (bss->pub.transmitted_bss) in bss_ref_get()
115 bss_from_pub(bss->pub.transmitted_bss)->refcount++; in bss_ref_get()
119 struct cfg80211_internal_bss *bss) in bss_ref_put() argument
123 if (bss->pub.hidden_beacon_bss) { in bss_ref_put()
126 hbss = bss_from_pub(bss->pub.hidden_beacon_bss); in bss_ref_put()
132 if (bss->pub.transmitted_bss) { in bss_ref_put()
135 tbss = bss_from_pub(bss->pub.transmitted_bss); in bss_ref_put()
141 bss->refcount--; in bss_ref_put()
142 if (bss->refcount == 0) in bss_ref_put()
143 bss_free(bss); in bss_ref_put()
147 struct cfg80211_internal_bss *bss) in __cfg80211_unlink_bss() argument
151 if (!list_empty(&bss->hidden_list)) { in __cfg80211_unlink_bss()
156 if (!bss->pub.hidden_beacon_bss) in __cfg80211_unlink_bss()
162 list_del_init(&bss->hidden_list); in __cfg80211_unlink_bss()
165 list_del_init(&bss->list); in __cfg80211_unlink_bss()
166 list_del_init(&bss->pub.nontrans_list); in __cfg80211_unlink_bss()
167 rb_erase(&bss->rbn, &rdev->bss_tree); in __cfg80211_unlink_bss()
172 bss_ref_put(rdev, bss); in __cfg80211_unlink_bss()
434 struct cfg80211_bss *bss = NULL; in cfg80211_add_nontrans_list() local
444 list_for_each_entry(bss, &trans_bss->nontrans_list, nontrans_list) { in cfg80211_add_nontrans_list()
445 if (is_bss(bss, nontrans_bss->bssid, ssid_elem->data, in cfg80211_add_nontrans_list()
471 struct cfg80211_internal_bss *bss, *tmp; in __cfg80211_bss_expire() local
476 list_for_each_entry_safe(bss, tmp, &rdev->bss_list, list) { in __cfg80211_bss_expire()
477 if (atomic_read(&bss->hold)) in __cfg80211_bss_expire()
479 if (!time_after(expire_time, bss->ts)) in __cfg80211_bss_expire()
482 if (__cfg80211_unlink_bss(rdev, bss)) in __cfg80211_bss_expire()
492 struct cfg80211_internal_bss *bss, *oldest = NULL; in cfg80211_bss_expire_oldest() local
497 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_bss_expire_oldest()
498 if (atomic_read(&bss->hold)) in cfg80211_bss_expire_oldest()
501 if (!list_empty(&bss->hidden_list) && in cfg80211_bss_expire_oldest()
502 !bss->pub.hidden_beacon_bss) in cfg80211_bss_expire_oldest()
505 if (oldest && time_before(oldest->ts, bss->ts)) in cfg80211_bss_expire_oldest()
507 oldest = bss; in cfg80211_bss_expire_oldest()
1378 struct cfg80211_internal_bss *bss; in cfg80211_bss_age() local
1382 list_for_each_entry(bss, &rdev->bss_list, list) in cfg80211_bss_age()
1383 bss->ts -= age_jiffies; in cfg80211_bss_age()
1609 struct cfg80211_internal_bss *bss, *res = NULL; in __cfg80211_get_bss() local
1618 list_for_each_entry(bss, &rdev->bss_list, list) { in __cfg80211_get_bss()
1619 if (!cfg80211_bss_type_match(bss->pub.capability, in __cfg80211_get_bss()
1620 bss->pub.channel->band, bss_type)) in __cfg80211_get_bss()
1623 bss_privacy = (bss->pub.capability & WLAN_CAPABILITY_PRIVACY); in __cfg80211_get_bss()
1627 if (channel && bss->pub.channel != channel) in __cfg80211_get_bss()
1629 if (!is_valid_ether_addr(bss->pub.bssid)) in __cfg80211_get_bss()
1631 if ((bss->pub.use_for & use_for) != use_for) in __cfg80211_get_bss()
1634 if (time_after(now, bss->ts + IEEE80211_SCAN_RESULT_EXPIRE) && in __cfg80211_get_bss()
1635 !atomic_read(&bss->hold)) in __cfg80211_get_bss()
1637 if (is_bss(&bss->pub, bssid, ssid, ssid_len)) { in __cfg80211_get_bss()
1638 res = bss; in __cfg80211_get_bss()
1653 struct cfg80211_internal_bss *bss) in rb_insert_bss() argument
1664 cmp = cmp_bss(&bss->pub, &tbss->pub, BSS_CMP_REGULAR); in rb_insert_bss()
1677 rb_link_node(&bss->rbn, parent, p); in rb_insert_bss()
1678 rb_insert_color(&bss->rbn, &rdev->bss_tree); in rb_insert_bss()
1688 struct cfg80211_internal_bss *bss; in rb_find_bss() local
1692 bss = rb_entry(n, struct cfg80211_internal_bss, rbn); in rb_find_bss()
1693 r = cmp_bss(&res->pub, &bss->pub, mode); in rb_find_bss()
1696 return bss; in rb_find_bss()
1707 struct cfg80211_internal_bss *bss) in cfg80211_insert_bss() argument
1711 if (!rb_insert_bss(rdev, bss)) in cfg80211_insert_bss()
1713 list_add_tail(&bss->list, &rdev->bss_list); in cfg80211_insert_bss()
1718 struct cfg80211_internal_bss *bss) in cfg80211_rehash_bss() argument
1722 rb_erase(&bss->rbn, &rdev->bss_tree); in cfg80211_rehash_bss()
1723 if (!rb_insert_bss(rdev, bss)) { in cfg80211_rehash_bss()
1724 list_del(&bss->list); in cfg80211_rehash_bss()
1725 if (!list_empty(&bss->hidden_list)) in cfg80211_rehash_bss()
1726 list_del_init(&bss->hidden_list); in cfg80211_rehash_bss()
1727 if (!list_empty(&bss->pub.nontrans_list)) in cfg80211_rehash_bss()
1728 list_del_init(&bss->pub.nontrans_list); in cfg80211_rehash_bss()
1738 struct cfg80211_internal_bss *bss; in cfg80211_combine_bsses() local
1765 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_combine_bsses()
1772 if (!ether_addr_equal(bss->pub.bssid, new->pub.bssid)) in cfg80211_combine_bsses()
1774 if (bss->pub.channel != new->pub.channel) in cfg80211_combine_bsses()
1776 if (rcu_access_pointer(bss->pub.beacon_ies)) in cfg80211_combine_bsses()
1778 ies = rcu_access_pointer(bss->pub.ies); in cfg80211_combine_bsses()
1786 if (WARN_ON_ONCE(bss->pub.hidden_beacon_bss)) in cfg80211_combine_bsses()
1788 if (WARN_ON_ONCE(!list_empty(&bss->hidden_list))) in cfg80211_combine_bsses()
1789 list_del(&bss->hidden_list); in cfg80211_combine_bsses()
1791 list_add(&bss->hidden_list, &new->hidden_list); in cfg80211_combine_bsses()
1792 bss->pub.hidden_beacon_bss = &new->pub; in cfg80211_combine_bsses()
1793 new->refcount += bss->refcount; in cfg80211_combine_bsses()
1794 rcu_assign_pointer(bss->pub.beacon_ies, in cfg80211_combine_bsses()
1809 struct cfg80211_internal_bss *bss; in cfg80211_update_hidden_bsses() local
1812 list_for_each_entry(bss, &known->hidden_list, hidden_list) { in cfg80211_update_hidden_bsses()
1815 ies = rcu_access_pointer(bss->pub.beacon_ies); in cfg80211_update_hidden_bsses()
1818 rcu_assign_pointer(bss->pub.beacon_ies, new_ies); in cfg80211_update_hidden_bsses()
2498 struct cfg80211_bss *bss; in cfg80211_parse_mbssid_data() local
2590 bss = cfg80211_inform_single_bss_data(wiphy, &data, gfp); in cfg80211_parse_mbssid_data()
2591 if (!bss) in cfg80211_parse_mbssid_data()
2593 cfg80211_put_bss(wiphy, bss); in cfg80211_parse_mbssid_data()
2960 struct cfg80211_bss *bss; in cfg80211_parse_ml_elem_sta_data() local
3106 bss = cfg80211_get_bss(wiphy, data.channel, data.bssid, ssid, in cfg80211_parse_ml_elem_sta_data()
3109 if (bss) { in cfg80211_parse_ml_elem_sta_data()
3110 struct cfg80211_internal_bss *ibss = bss_from_pub(bss); in cfg80211_parse_ml_elem_sta_data()
3112 if (data.capability == bss->capability && in cfg80211_parse_ml_elem_sta_data()
3114 cfg80211_put_bss(wiphy, bss); in cfg80211_parse_ml_elem_sta_data()
3117 cfg80211_put_bss(wiphy, bss); in cfg80211_parse_ml_elem_sta_data()
3178 bss = cfg80211_inform_single_bss_data(wiphy, &data, gfp); in cfg80211_parse_ml_elem_sta_data()
3179 if (!bss) in cfg80211_parse_ml_elem_sta_data()
3181 cfg80211_put_bss(wiphy, bss); in cfg80211_parse_ml_elem_sta_data()
3361 struct cfg80211_internal_bss *bss, *tmp1; in cfg80211_unlink_bss() local
3367 bss = bss_from_pub(pub); in cfg80211_unlink_bss()
3370 if (list_empty(&bss->list)) in cfg80211_unlink_bss()
3381 if (__cfg80211_unlink_bss(rdev, bss)) in cfg80211_unlink_bss()
3391 struct cfg80211_bss *bss, in cfg80211_bss_iter() argument
3396 struct cfg80211_internal_bss *bss; in cfg80211_bss_iter() local
3400 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_bss_iter()
3401 if (!chandef || cfg80211_is_sub_chan(chandef, bss->pub.channel, in cfg80211_bss_iter()
3403 iter(wiphy, &bss->pub, iter_data); in cfg80211_bss_iter()
3418 struct cfg80211_internal_bss *bss; in cfg80211_update_assoc_bss_entry() local
3437 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_update_assoc_bss_entry()
3438 if (!cfg80211_bss_type_match(bss->pub.capability, in cfg80211_update_assoc_bss_entry()
3439 bss->pub.channel->band, in cfg80211_update_assoc_bss_entry()
3443 if (bss == cbss) in cfg80211_update_assoc_bss_entry()
3446 if (!cmp_bss(&bss->pub, &cbss->pub, BSS_CMP_REGULAR)) { in cfg80211_update_assoc_bss_entry()
3447 new = bss; in cfg80211_update_assoc_bss_entry()
3461 bss = bss_from_pub(nontrans_bss); in cfg80211_update_assoc_bss_entry()
3462 if (__cfg80211_unlink_bss(rdev, bss)) in cfg80211_update_assoc_bss_entry()
3475 bss = bss_from_pub(nontrans_bss); in cfg80211_update_assoc_bss_entry()
3476 bss->pub.channel = chan; in cfg80211_update_assoc_bss_entry()
3477 cfg80211_rehash_bss(rdev, bss); in cfg80211_update_assoc_bss_entry()
3698 struct cfg80211_internal_bss *bss, char *current_ev, in ieee80211_bss() argument
3712 memcpy(iwe.u.ap_addr.sa_data, bss->pub.bssid, ETH_ALEN); in ieee80211_bss()
3720 iwe.u.freq.m = ieee80211_frequency_to_channel(bss->pub.channel->center_freq); in ieee80211_bss()
3729 iwe.u.freq.m = bss->pub.channel->center_freq; in ieee80211_bss()
3744 sig = bss->pub.signal / 100; in ieee80211_bss()
3755 iwe.u.qual.level = bss->pub.signal; in ieee80211_bss()
3757 iwe.u.qual.qual = bss->pub.signal; in ieee80211_bss()
3772 if (bss->pub.capability & WLAN_CAPABILITY_PRIVACY) in ieee80211_bss()
3783 ies = rcu_dereference(bss->pub.ies); in ieee80211_bss()
3917 if (bss->pub.capability & (WLAN_CAPABILITY_ESS | WLAN_CAPABILITY_IBSS) || in ieee80211_bss()
3923 else if (bss->pub.capability & WLAN_CAPABILITY_ESS) in ieee80211_bss()
3945 elapsed_jiffies_msecs(bss->ts)); in ieee80211_bss()
3965 struct cfg80211_internal_bss *bss; in ieee80211_scan_results() local
3971 list_for_each_entry(bss, &rdev->bss_list, list) { in ieee80211_scan_results()
3976 current_ev = ieee80211_bss(&rdev->wiphy, info, bss, in ieee80211_scan_results()