Lines Matching refs:wpa_s

25 void wpa_bss_remove(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,  in wpa_bss_remove()  argument
28 if (wpa_s->last_scan_res) { in wpa_bss_remove()
30 for (i = 0; i < wpa_s->last_scan_res_used; i++) { in wpa_bss_remove()
31 if (wpa_s->last_scan_res[i] == bss) { in wpa_bss_remove()
32 os_memmove(&wpa_s->last_scan_res[i], in wpa_bss_remove()
33 &wpa_s->last_scan_res[i + 1], in wpa_bss_remove()
34 (wpa_s->last_scan_res_used - i - 1) in wpa_bss_remove()
36 wpa_s->last_scan_res_used--; in wpa_bss_remove()
43 wpa_s->num_bss--; in wpa_bss_remove()
44 wpa_dbg(wpa_s, MSG_DEBUG, "BSS: Remove id %u BSSID " MACSTR in wpa_bss_remove()
59 struct wpa_bss * wpa_bss_get(struct wpa_supplicant *wpa_s, const u8 *bssid, in wpa_bss_get() argument
63 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) { in wpa_bss_get()
108 static int wpa_bss_known(struct wpa_supplicant *wpa_s, struct wpa_bss *bss) in wpa_bss_known() argument
121 static int wpa_bss_in_use(struct wpa_supplicant *wpa_s, struct wpa_bss *bss) in wpa_bss_in_use() argument
123 if (bss == wpa_s->current_bss) in wpa_bss_in_use()
127 if (wpa_s->current_bss && in wpa_bss_in_use()
128 (bss->ssid_len != wpa_s->current_bss->ssid_len || in wpa_bss_in_use()
129 os_memcmp(bss->ssid, wpa_s->current_bss->ssid, in wpa_bss_in_use()
133 return !is_zero_ether_addr(bss->bssid) && wpa_s->current_bss->bssid && in wpa_bss_in_use()
134 (os_memcmp(bss->bssid, wpa_s->current_bss->bssid, ETH_ALEN) == 0); in wpa_bss_in_use()
140 static int wpa_bss_remove_oldest_unknown(struct wpa_supplicant *wpa_s) in wpa_bss_remove_oldest_unknown() argument
144 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) { in wpa_bss_remove_oldest_unknown()
145 if (!wpa_bss_known(wpa_s, bss)) { in wpa_bss_remove_oldest_unknown()
146 wpa_bss_remove(wpa_s, bss, __func__); in wpa_bss_remove_oldest_unknown()
154 static int wpa_bss_remove_oldest(struct wpa_supplicant *wpa_s) in wpa_bss_remove_oldest() argument
162 if (wpa_bss_remove_oldest_unknown(wpa_s) == 0) in wpa_bss_remove_oldest()
168 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) { in wpa_bss_remove_oldest()
169 if (!wpa_bss_in_use(wpa_s, bss)) { in wpa_bss_remove_oldest()
170 wpa_bss_remove(wpa_s, bss, __func__); in wpa_bss_remove_oldest()
178 static struct wpa_bss * wpa_bss_add(struct wpa_supplicant *wpa_s, in wpa_bss_add() argument
185 if ((wpa_s->num_bss + 1 > MAX_BSS_COUNT) && in wpa_bss_add()
186 (wpa_bss_remove_oldest(wpa_s) < 0)) { in wpa_bss_add()
195 bss->id = wpa_s->bss_next_id++; in wpa_bss_add()
196 bss->last_update_idx = wpa_s->bss_update_idx; in wpa_bss_add()
204 dl_list_add_tail(&wpa_s->bss, &bss->list); in wpa_bss_add()
205 dl_list_add_tail(&wpa_s->bss_id, &bss->list_id); in wpa_bss_add()
206 wpa_s->num_bss++; in wpa_bss_add()
207 wpa_dbg(wpa_s, MSG_INFO, "BSS: Add new id %u BSSID " MACSTR in wpa_bss_add()
215 wpa_bss_update(struct wpa_supplicant *wpa_s, struct wpa_bss *bss, in wpa_bss_update() argument
218 if (bss->last_update_idx == wpa_s->bss_update_idx) { in wpa_bss_update()
236 bss->last_update_idx = wpa_s->bss_update_idx; in wpa_bss_update()
253 for (i = 0; i < wpa_s->last_scan_res_used; i++) { in wpa_bss_update()
254 if (wpa_s->last_scan_res[i] == bss) { in wpa_bss_update()
255 wpa_s->last_scan_res[i] = nbss; in wpa_bss_update()
259 if (wpa_s->current_bss == bss) in wpa_bss_update()
260 wpa_s->current_bss = nbss; in wpa_bss_update()
269 dl_list_add_tail(&wpa_s->bss, &bss->list); in wpa_bss_update()
284 void wpa_bss_update_start(struct wpa_supplicant *wpa_s) in wpa_bss_update_start() argument
286 wpa_s->bss_update_idx++; in wpa_bss_update_start()
287 wpa_dbg(wpa_s, MSG_DEBUG, "BSS: Start scan result update %u", in wpa_bss_update_start()
288 wpa_s->bss_update_idx); in wpa_bss_update_start()
289 wpa_s->last_scan_res_used = 0; in wpa_bss_update_start()
303 void wpa_bss_update_scan_res(struct wpa_supplicant *wpa_s, in wpa_bss_update_scan_res() argument
312 wpa_dbg(wpa_s, MSG_DEBUG, "BSS: No SSID IE included for " in wpa_bss_update_scan_res()
317 wpa_dbg(wpa_s, MSG_DEBUG, "BSS: Too long SSID IE included for " in wpa_bss_update_scan_res()
325 bss = wpa_bss_get(wpa_s, res->bssid, ssid + 2, ssid[1]); in wpa_bss_update_scan_res()
327 bss = wpa_bss_add(wpa_s, ssid + 2, ssid[1], res, fetch_time); in wpa_bss_update_scan_res()
329 bss = wpa_bss_update(wpa_s, bss, res, fetch_time); in wpa_bss_update_scan_res()
330 if (wpa_s->last_scan_res) { in wpa_bss_update_scan_res()
332 for (i = 0; i < wpa_s->last_scan_res_used; i++) { in wpa_bss_update_scan_res()
333 if (bss == wpa_s->last_scan_res[i]) { in wpa_bss_update_scan_res()
343 if (wpa_s->last_scan_res_used >= wpa_s->last_scan_res_size) { in wpa_bss_update_scan_res()
346 if (wpa_s->last_scan_res_size == 0) in wpa_bss_update_scan_res()
349 siz = wpa_s->last_scan_res_size * 2; in wpa_bss_update_scan_res()
350 n = os_realloc_array(wpa_s->last_scan_res, siz, in wpa_bss_update_scan_res()
354 wpa_s->last_scan_res = n; in wpa_bss_update_scan_res()
355 wpa_s->last_scan_res_size = siz; in wpa_bss_update_scan_res()
358 if (wpa_s->last_scan_res) in wpa_bss_update_scan_res()
359 wpa_s->last_scan_res[wpa_s->last_scan_res_used++] = bss; in wpa_bss_update_scan_res()
373 void wpa_bss_update_end(struct wpa_supplicant *wpa_s) in wpa_bss_update_end() argument
375 os_get_reltime(&wpa_s->last_scan); in wpa_bss_update_end()
386 int wpa_bss_init(struct wpa_supplicant *wpa_s) in wpa_bss_init() argument
388 dl_list_init(&wpa_s->bss); in wpa_bss_init()
389 dl_list_init(&wpa_s->bss_id); in wpa_bss_init()
398 void wpa_bss_flush(struct wpa_supplicant *wpa_s) in wpa_bss_flush() argument
402 if (wpa_s->bss.next == NULL) in wpa_bss_flush()
405 dl_list_for_each_safe(bss, n, &wpa_s->bss, struct wpa_bss, list) { in wpa_bss_flush()
406 if (wpa_bss_in_use(wpa_s, bss)) in wpa_bss_flush()
408 wpa_bss_remove(wpa_s, bss, __func__); in wpa_bss_flush()
417 void wpa_bss_deinit(struct wpa_supplicant *wpa_s) in wpa_bss_deinit() argument
419 wpa_bss_flush(wpa_s); in wpa_bss_deinit()
429 struct wpa_bss * wpa_bss_get_bssid(struct wpa_supplicant *wpa_s, in wpa_bss_get_bssid() argument
433 dl_list_for_each_reverse(bss, &wpa_s->bss, struct wpa_bss, list) { in wpa_bss_get_bssid()
447 struct wpa_bss * wpa_bss_get_next_bss(struct wpa_supplicant *wpa_s, in wpa_bss_get_next_bss() argument
453 return dl_list_first(&wpa_s->bss, struct wpa_bss, list); in wpa_bss_get_next_bss()
454 dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) { in wpa_bss_get_next_bss()