Lines Matching refs:data

89 	struct bgscan_learn_data *data, const u8 *bssid)  in bgscan_learn_get_bss()  argument
93 dl_list_for_each(bss, &data->bss, struct bgscan_learn_bss, list) { in bgscan_learn_get_bss()
101 static int bgscan_learn_load(struct bgscan_learn_data *data) in bgscan_learn_load() argument
107 if (data->fname == NULL) in bgscan_learn_load()
110 f = fopen(data->fname, "r"); in bgscan_learn_load()
115 data->fname); in bgscan_learn_load()
120 data->fname); in bgscan_learn_load()
135 dl_list_add(&data->bss, &bss->list); in bgscan_learn_load()
146 bss = bgscan_learn_get_bss(data, addr); in bgscan_learn_load()
161 static void bgscan_learn_save(struct bgscan_learn_data *data) in bgscan_learn_save() argument
166 if (data->fname == NULL) in bgscan_learn_save()
170 data->fname); in bgscan_learn_save()
172 f = fopen(data->fname, "w"); in bgscan_learn_save()
177 dl_list_for_each(bss, &data->bss, struct bgscan_learn_bss, list) { in bgscan_learn_save()
182 dl_list_for_each(bss, &data->bss, struct bgscan_learn_bss, list) { in bgscan_learn_save()
211 static int * bgscan_learn_get_freqs(struct bgscan_learn_data *data, in bgscan_learn_get_freqs() argument
219 dl_list_for_each(bss, &data->bss, struct bgscan_learn_bss, list) { in bgscan_learn_get_freqs()
235 static int * bgscan_learn_get_probe_freq(struct bgscan_learn_data *data, in bgscan_learn_get_probe_freq() argument
240 if (data->supp_freqs == NULL) in bgscan_learn_get_probe_freq()
243 idx = data->probe_idx; in bgscan_learn_get_probe_freq()
245 if (!in_array(freqs, data->supp_freqs[idx])) { in bgscan_learn_get_probe_freq()
247 "%u", data->supp_freqs[idx]); in bgscan_learn_get_probe_freq()
248 data->probe_idx = idx + 1; in bgscan_learn_get_probe_freq()
249 if (data->supp_freqs[data->probe_idx] == 0) in bgscan_learn_get_probe_freq()
250 data->probe_idx = 0; in bgscan_learn_get_probe_freq()
255 freqs[count] = data->supp_freqs[idx]; in bgscan_learn_get_probe_freq()
262 if (data->supp_freqs[idx] == 0) in bgscan_learn_get_probe_freq()
264 } while (idx != data->probe_idx); in bgscan_learn_get_probe_freq()
272 struct bgscan_learn_data *data = eloop_ctx; in bgscan_learn_timeout() local
273 struct wpa_supplicant *wpa_s = data->wpa_s; in bgscan_learn_timeout()
281 params.ssids[0].ssid = data->ssid->ssid; in bgscan_learn_timeout()
282 params.ssids[0].ssid_len = data->ssid->ssid_len; in bgscan_learn_timeout()
283 if (data->ssid->scan_freq) in bgscan_learn_timeout()
284 params.freqs = data->ssid->scan_freq; in bgscan_learn_timeout()
286 freqs = bgscan_learn_get_freqs(data, &count); in bgscan_learn_timeout()
289 freqs = bgscan_learn_get_probe_freq(data, freqs, count); in bgscan_learn_timeout()
310 eloop_register_timeout(data->scan_interval, 0, in bgscan_learn_timeout()
311 bgscan_learn_timeout, data, NULL); in bgscan_learn_timeout()
313 os_get_reltime(&data->last_bgscan); in bgscan_learn_timeout()
318 static int bgscan_learn_get_params(struct bgscan_learn_data *data, in bgscan_learn_get_params() argument
323 data->short_interval = atoi(params); in bgscan_learn_get_params()
329 data->signal_threshold = atoi(pos); in bgscan_learn_get_params()
337 data->long_interval = atoi(pos); in bgscan_learn_get_params()
341 data->fname = os_strdup(pos); in bgscan_learn_get_params()
384 struct bgscan_learn_data *data; in bgscan_learn_init() local
386 data = os_zalloc(sizeof(*data)); in bgscan_learn_init()
387 if (data == NULL) in bgscan_learn_init()
389 dl_list_init(&data->bss); in bgscan_learn_init()
390 data->wpa_s = wpa_s; in bgscan_learn_init()
391 data->ssid = ssid; in bgscan_learn_init()
392 if (bgscan_learn_get_params(data, params) < 0) { in bgscan_learn_init()
393 os_free(data->fname); in bgscan_learn_init()
394 os_free(data); in bgscan_learn_init()
397 if (data->short_interval <= 0) in bgscan_learn_init()
398 data->short_interval = 30; in bgscan_learn_init()
399 if (data->long_interval <= 0) in bgscan_learn_init()
400 data->long_interval = 30; in bgscan_learn_init()
402 if (bgscan_learn_load(data) < 0) { in bgscan_learn_init()
403 os_free(data->fname); in bgscan_learn_init()
404 os_free(data); in bgscan_learn_init()
410 data->signal_threshold, data->short_interval, in bgscan_learn_init()
411 data->long_interval); in bgscan_learn_init()
413 if (data->signal_threshold && in bgscan_learn_init()
414 wpa_drv_signal_monitor(wpa_s, data->signal_threshold, 4) < 0) { in bgscan_learn_init()
419 data->supp_freqs = bgscan_learn_get_supp_freqs(wpa_s); in bgscan_learn_init()
420 data->scan_interval = data->short_interval; in bgscan_learn_init()
421 if (data->signal_threshold) { in bgscan_learn_init()
425 siginfo.data.signal >= data->signal_threshold) in bgscan_learn_init()
426 data->scan_interval = data->long_interval; in bgscan_learn_init()
429 eloop_register_timeout(data->scan_interval, 0, bgscan_learn_timeout, in bgscan_learn_init()
430 data, NULL); in bgscan_learn_init()
438 os_get_reltime(&data->last_bgscan); in bgscan_learn_init()
440 return data; in bgscan_learn_init()
446 struct bgscan_learn_data *data = priv; in bgscan_learn_deinit() local
449 bgscan_learn_save(data); in bgscan_learn_deinit()
450 eloop_cancel_timeout(bgscan_learn_timeout, data, NULL); in bgscan_learn_deinit()
451 if (data->signal_threshold) in bgscan_learn_deinit()
452 wpa_drv_signal_monitor(data->wpa_s, 0, 0); in bgscan_learn_deinit()
453 os_free(data->fname); in bgscan_learn_deinit()
454 dl_list_for_each_safe(bss, n, &data->bss, struct bgscan_learn_bss, in bgscan_learn_deinit()
459 os_free(data->supp_freqs); in bgscan_learn_deinit()
460 os_free(data); in bgscan_learn_deinit()
464 static int bgscan_learn_bss_match(struct bgscan_learn_data *data, in bgscan_learn_bss_match() argument
473 if (data->ssid->ssid_len != ie[1] || in bgscan_learn_bss_match()
474 os_memcmp(data->ssid->ssid, ie + 2, ie[1]) != 0) in bgscan_learn_bss_match()
484 struct bgscan_learn_data *data = priv; in bgscan_learn_notify_scan() local
492 eloop_cancel_timeout(bgscan_learn_timeout, data, NULL); in bgscan_learn_notify_scan()
493 eloop_register_timeout(data->scan_interval, 0, bgscan_learn_timeout, in bgscan_learn_notify_scan()
494 data, NULL); in bgscan_learn_notify_scan()
498 if (!bgscan_learn_bss_match(data, res)) in bgscan_learn_notify_scan()
514 if (!bgscan_learn_bss_match(data, res)) in bgscan_learn_notify_scan()
517 bss = bgscan_learn_get_bss(data, res->bssid); in bgscan_learn_notify_scan()
531 dl_list_add(&data->bss, &bss->list); in bgscan_learn_notify_scan()
563 struct bgscan_learn_data *data = priv; in bgscan_learn_notify_signal_change() local
567 if (data->short_interval == data->long_interval || in bgscan_learn_notify_signal_change()
568 data->signal_threshold == 0) in bgscan_learn_notify_signal_change()
575 if (data->scan_interval == data->long_interval && !above) { in bgscan_learn_notify_signal_change()
578 data->scan_interval = data->short_interval; in bgscan_learn_notify_signal_change()
580 if (now.sec > data->last_bgscan.sec + 1) in bgscan_learn_notify_signal_change()
582 } else if (data->scan_interval == data->short_interval && above) { in bgscan_learn_notify_signal_change()
585 data->scan_interval = data->long_interval; in bgscan_learn_notify_signal_change()
586 eloop_cancel_timeout(bgscan_learn_timeout, data, NULL); in bgscan_learn_notify_signal_change()
587 eloop_register_timeout(data->scan_interval, 0, in bgscan_learn_notify_signal_change()
588 bgscan_learn_timeout, data, NULL); in bgscan_learn_notify_signal_change()
595 if (now.sec > data->last_bgscan.sec + 10) in bgscan_learn_notify_signal_change()
601 eloop_cancel_timeout(bgscan_learn_timeout, data, NULL); in bgscan_learn_notify_signal_change()
602 eloop_register_timeout(0, 0, bgscan_learn_timeout, data, NULL); in bgscan_learn_notify_signal_change()