Lines Matching refs:bss

116 static void bss_free(struct cfg80211_internal_bss *bss)  in bss_free()  argument
120 if (WARN_ON(atomic_read(&bss->hold))) in bss_free()
123 ies = (void *)rcu_access_pointer(bss->pub.beacon_ies); in bss_free()
124 if (ies && !bss->pub.hidden_beacon_bss) in bss_free()
126 ies = (void *)rcu_access_pointer(bss->pub.proberesp_ies); in bss_free()
134 if (!list_empty(&bss->hidden_list)) in bss_free()
135 list_del(&bss->hidden_list); in bss_free()
137 kfree(bss); in bss_free()
141 struct cfg80211_internal_bss *bss) in bss_ref_get() argument
145 bss->refcount++; in bss_ref_get()
146 if (bss->pub.hidden_beacon_bss) { in bss_ref_get()
147 bss = container_of(bss->pub.hidden_beacon_bss, in bss_ref_get()
150 bss->refcount++; in bss_ref_get()
152 if (bss->pub.transmitted_bss) { in bss_ref_get()
153 bss = container_of(bss->pub.transmitted_bss, in bss_ref_get()
156 bss->refcount++; in bss_ref_get()
161 struct cfg80211_internal_bss *bss) in bss_ref_put() argument
165 if (bss->pub.hidden_beacon_bss) { in bss_ref_put()
167 hbss = container_of(bss->pub.hidden_beacon_bss, in bss_ref_put()
175 if (bss->pub.transmitted_bss) { in bss_ref_put()
178 tbss = container_of(bss->pub.transmitted_bss, in bss_ref_put()
186 bss->refcount--; in bss_ref_put()
187 if (bss->refcount == 0) in bss_ref_put()
188 bss_free(bss); in bss_ref_put()
192 struct cfg80211_internal_bss *bss) in __cfg80211_unlink_bss() argument
196 if (!list_empty(&bss->hidden_list)) { in __cfg80211_unlink_bss()
201 if (!bss->pub.hidden_beacon_bss) in __cfg80211_unlink_bss()
207 list_del_init(&bss->hidden_list); in __cfg80211_unlink_bss()
210 list_del_init(&bss->list); in __cfg80211_unlink_bss()
211 list_del_init(&bss->pub.nontrans_list); in __cfg80211_unlink_bss()
212 rb_erase(&bss->rbn, &rdev->bss_tree); in __cfg80211_unlink_bss()
217 bss_ref_put(rdev, bss); in __cfg80211_unlink_bss()
411 struct cfg80211_bss *bss = NULL; in cfg80211_add_nontrans_list() local
423 list_for_each_entry(bss, &trans_bss->nontrans_list, nontrans_list) { in cfg80211_add_nontrans_list()
424 if (is_bss(bss, nontrans_bss->bssid, ssid, ssid_len)) { in cfg80211_add_nontrans_list()
440 struct cfg80211_internal_bss *bss, *tmp; in __cfg80211_bss_expire() local
445 list_for_each_entry_safe(bss, tmp, &rdev->bss_list, list) { in __cfg80211_bss_expire()
446 if (atomic_read(&bss->hold)) in __cfg80211_bss_expire()
448 if (!time_after(expire_time, bss->ts)) in __cfg80211_bss_expire()
451 if (__cfg80211_unlink_bss(rdev, bss)) in __cfg80211_bss_expire()
461 struct cfg80211_internal_bss *bss, *oldest = NULL; in cfg80211_bss_expire_oldest() local
466 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_bss_expire_oldest()
467 if (atomic_read(&bss->hold)) in cfg80211_bss_expire_oldest()
470 if (!list_empty(&bss->hidden_list) && in cfg80211_bss_expire_oldest()
471 !bss->pub.hidden_beacon_bss) in cfg80211_bss_expire_oldest()
474 if (oldest && time_before(oldest->ts, bss->ts)) in cfg80211_bss_expire_oldest()
476 oldest = bss; in cfg80211_bss_expire_oldest()
1198 struct cfg80211_internal_bss *bss; in cfg80211_bss_age() local
1202 list_for_each_entry(bss, &rdev->bss_list, list) in cfg80211_bss_age()
1203 bss->ts -= age_jiffies; in cfg80211_bss_age()
1427 struct cfg80211_internal_bss *bss, *res = NULL; in cfg80211_get_bss() local
1436 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_get_bss()
1437 if (!cfg80211_bss_type_match(bss->pub.capability, in cfg80211_get_bss()
1438 bss->pub.channel->band, bss_type)) in cfg80211_get_bss()
1441 bss_privacy = (bss->pub.capability & WLAN_CAPABILITY_PRIVACY); in cfg80211_get_bss()
1445 if (channel && bss->pub.channel != channel) in cfg80211_get_bss()
1447 if (!is_valid_ether_addr(bss->pub.bssid)) in cfg80211_get_bss()
1450 if (time_after(now, bss->ts + IEEE80211_SCAN_RESULT_EXPIRE) && in cfg80211_get_bss()
1451 !atomic_read(&bss->hold)) in cfg80211_get_bss()
1453 if (is_bss(&bss->pub, bssid, ssid, ssid_len)) { in cfg80211_get_bss()
1454 res = bss; in cfg80211_get_bss()
1469 struct cfg80211_internal_bss *bss) in rb_insert_bss() argument
1480 cmp = cmp_bss(&bss->pub, &tbss->pub, BSS_CMP_REGULAR); in rb_insert_bss()
1493 rb_link_node(&bss->rbn, parent, p); in rb_insert_bss()
1494 rb_insert_color(&bss->rbn, &rdev->bss_tree); in rb_insert_bss()
1503 struct cfg80211_internal_bss *bss; in rb_find_bss() local
1507 bss = rb_entry(n, struct cfg80211_internal_bss, rbn); in rb_find_bss()
1508 r = cmp_bss(&res->pub, &bss->pub, mode); in rb_find_bss()
1511 return bss; in rb_find_bss()
1525 struct cfg80211_internal_bss *bss; in cfg80211_combine_bsses() local
1552 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_combine_bsses()
1559 if (!ether_addr_equal(bss->pub.bssid, new->pub.bssid)) in cfg80211_combine_bsses()
1561 if (bss->pub.channel != new->pub.channel) in cfg80211_combine_bsses()
1563 if (bss->pub.scan_width != new->pub.scan_width) in cfg80211_combine_bsses()
1565 if (rcu_access_pointer(bss->pub.beacon_ies)) in cfg80211_combine_bsses()
1567 ies = rcu_access_pointer(bss->pub.ies); in cfg80211_combine_bsses()
1575 if (WARN_ON_ONCE(bss->pub.hidden_beacon_bss)) in cfg80211_combine_bsses()
1577 if (WARN_ON_ONCE(!list_empty(&bss->hidden_list))) in cfg80211_combine_bsses()
1578 list_del(&bss->hidden_list); in cfg80211_combine_bsses()
1580 list_add(&bss->hidden_list, &new->hidden_list); in cfg80211_combine_bsses()
1581 bss->pub.hidden_beacon_bss = &new->pub; in cfg80211_combine_bsses()
1582 new->refcount += bss->refcount; in cfg80211_combine_bsses()
1583 rcu_assign_pointer(bss->pub.beacon_ies, in cfg80211_combine_bsses()
1623 struct cfg80211_internal_bss *bss; in cfg80211_update_known_bss() local
1652 list_for_each_entry(bss, &known->hidden_list, hidden_list) { in cfg80211_update_known_bss()
1655 ies = rcu_access_pointer(bss->pub.beacon_ies); in cfg80211_update_known_bss()
1658 rcu_assign_pointer(bss->pub.beacon_ies, in cfg80211_update_known_bss()
2074 struct cfg80211_bss *bss; in cfg80211_parse_mbssid_data() local
2155 bss = cfg80211_inform_single_bss_data(wiphy, data, in cfg80211_parse_mbssid_data()
2164 if (!bss) in cfg80211_parse_mbssid_data()
2166 cfg80211_put_bss(wiphy, bss); in cfg80211_parse_mbssid_data()
2488 struct cfg80211_internal_bss *bss; in cfg80211_ref_bss() local
2493 bss = container_of(pub, struct cfg80211_internal_bss, pub); in cfg80211_ref_bss()
2496 bss_ref_get(rdev, bss); in cfg80211_ref_bss()
2504 struct cfg80211_internal_bss *bss; in cfg80211_put_bss() local
2509 bss = container_of(pub, struct cfg80211_internal_bss, pub); in cfg80211_put_bss()
2512 bss_ref_put(rdev, bss); in cfg80211_put_bss()
2520 struct cfg80211_internal_bss *bss, *tmp1; in cfg80211_unlink_bss() local
2526 bss = container_of(pub, struct cfg80211_internal_bss, pub); in cfg80211_unlink_bss()
2529 if (list_empty(&bss->list)) in cfg80211_unlink_bss()
2541 if (__cfg80211_unlink_bss(rdev, bss)) in cfg80211_unlink_bss()
2551 struct cfg80211_bss *bss, in cfg80211_bss_iter() argument
2556 struct cfg80211_internal_bss *bss; in cfg80211_bss_iter() local
2560 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_bss_iter()
2561 if (!chandef || cfg80211_is_sub_chan(chandef, bss->pub.channel)) in cfg80211_bss_iter()
2562 iter(wiphy, &bss->pub, iter_data); in cfg80211_bss_iter()
2576 struct cfg80211_internal_bss *bss; in cfg80211_update_assoc_bss_entry() local
2597 list_for_each_entry(bss, &rdev->bss_list, list) { in cfg80211_update_assoc_bss_entry()
2598 if (!cfg80211_bss_type_match(bss->pub.capability, in cfg80211_update_assoc_bss_entry()
2599 bss->pub.channel->band, in cfg80211_update_assoc_bss_entry()
2603 if (bss == cbss) in cfg80211_update_assoc_bss_entry()
2606 if (!cmp_bss(&bss->pub, &cbss->pub, BSS_CMP_REGULAR)) { in cfg80211_update_assoc_bss_entry()
2607 new = bss; in cfg80211_update_assoc_bss_entry()
2622 bss = container_of(nontrans_bss, in cfg80211_update_assoc_bss_entry()
2624 if (__cfg80211_unlink_bss(rdev, bss)) in cfg80211_update_assoc_bss_entry()
2640 bss = container_of(nontrans_bss, in cfg80211_update_assoc_bss_entry()
2642 bss->pub.channel = chan; in cfg80211_update_assoc_bss_entry()
2643 rb_erase(&bss->rbn, &rdev->bss_tree); in cfg80211_update_assoc_bss_entry()
2644 rb_insert_bss(rdev, bss); in cfg80211_update_assoc_bss_entry()
2860 struct cfg80211_internal_bss *bss, char *current_ev, in ieee80211_bss() argument
2874 memcpy(iwe.u.ap_addr.sa_data, bss->pub.bssid, ETH_ALEN); in ieee80211_bss()
2882 iwe.u.freq.m = ieee80211_frequency_to_channel(bss->pub.channel->center_freq); in ieee80211_bss()
2891 iwe.u.freq.m = bss->pub.channel->center_freq; in ieee80211_bss()
2906 sig = bss->pub.signal / 100; in ieee80211_bss()
2917 iwe.u.qual.level = bss->pub.signal; in ieee80211_bss()
2919 iwe.u.qual.qual = bss->pub.signal; in ieee80211_bss()
2934 if (bss->pub.capability & WLAN_CAPABILITY_PRIVACY) in ieee80211_bss()
2945 ies = rcu_dereference(bss->pub.ies); in ieee80211_bss()
3075 if (bss->pub.capability & (WLAN_CAPABILITY_ESS | WLAN_CAPABILITY_IBSS) || in ieee80211_bss()
3081 else if (bss->pub.capability & WLAN_CAPABILITY_ESS) in ieee80211_bss()
3103 elapsed_jiffies_msecs(bss->ts)); in ieee80211_bss()
3124 struct cfg80211_internal_bss *bss; in ieee80211_scan_results() local
3130 list_for_each_entry(bss, &rdev->bss_list, list) { in ieee80211_scan_results()
3135 current_ev = ieee80211_bss(&rdev->wiphy, info, bss, in ieee80211_scan_results()