Lines Matching refs:wpa_s

47 void wpas_rrm_reset(struct wpa_supplicant *wpa_s)  in wpas_rrm_reset()  argument
49 wpa_s->rrm.rrm_used = 0; in wpas_rrm_reset()
51 eloop_cancel_timeout(wpas_rrm_neighbor_rep_timeout_handler, &wpa_s->rrm, in wpas_rrm_reset()
53 if (wpa_s->rrm.notify_neighbor_rep) in wpas_rrm_reset()
54 wpas_rrm_neighbor_rep_timeout_handler(&wpa_s->rrm, NULL); in wpas_rrm_reset()
55 wpa_s->rrm.next_neighbor_rep_token = 1; in wpas_rrm_reset()
56 wpas_clear_beacon_rep_data(wpa_s); in wpas_rrm_reset()
66 void wpas_rrm_process_neighbor_rep(struct wpa_supplicant *wpa_s, in wpas_rrm_process_neighbor_rep() argument
74 if (report[0] != wpa_s->rrm.next_neighbor_rep_token - 1) { in wpas_rrm_process_neighbor_rep()
77 report[0], wpa_s->rrm.next_neighbor_rep_token - 1); in wpas_rrm_process_neighbor_rep()
81 eloop_cancel_timeout(wpas_rrm_neighbor_rep_timeout_handler, &wpa_s->rrm, in wpas_rrm_process_neighbor_rep()
84 if (!wpa_s->rrm.notify_neighbor_rep) { in wpas_rrm_process_neighbor_rep()
85 wpa_msg(wpa_s, MSG_INFO, "RRM: Unexpected neighbor report"); in wpas_rrm_process_neighbor_rep()
91 wpa_s->rrm.notify_neighbor_rep(wpa_s->rrm.neighbor_rep_cb_ctx, in wpas_rrm_process_neighbor_rep()
93 wpa_s->rrm.notify_neighbor_rep = NULL; in wpas_rrm_process_neighbor_rep()
94 wpa_s->rrm.neighbor_rep_cb_ctx = NULL; in wpas_rrm_process_neighbor_rep()
136 int wpas_rrm_send_neighbor_rep_request(struct wpa_supplicant *wpa_s, in wpas_rrm_send_neighbor_rep_request() argument
145 if (!(wpa_s->rrm_ie[0] & WLAN_RRM_CAPS_NEIGHBOR_REPORT)) { in wpas_rrm_send_neighbor_rep_request()
152 if (wpa_s->rrm.notify_neighbor_rep) { in wpas_rrm_send_neighbor_rep_request()
153 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_rrm_send_neighbor_rep_request()
163 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_rrm_send_neighbor_rep_request()
168 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_rrm_send_neighbor_rep_request()
171 wpa_s->rrm.next_neighbor_rep_token); in wpas_rrm_send_neighbor_rep_request()
175 wpabuf_put_u8(buf, wpa_s->rrm.next_neighbor_rep_token); in wpas_rrm_send_neighbor_rep_request()
248 wpa_s->rrm.next_neighbor_rep_token++; in wpas_rrm_send_neighbor_rep_request()
250 if (wpa_drv_send_action(wpa_s, 0, 0, in wpas_rrm_send_neighbor_rep_request()
252 wpa_dbg(wpa_s, MSG_DEBUG, in wpas_rrm_send_neighbor_rep_request()
258 wpa_s->rrm.neighbor_rep_cb_ctx = cb_ctx; in wpas_rrm_send_neighbor_rep_request()
259 wpa_s->rrm.notify_neighbor_rep = cb; in wpas_rrm_send_neighbor_rep_request()
262 &wpa_s->rrm, NULL); in wpas_rrm_send_neighbor_rep_request()
287 static void wpas_rrm_send_msr_report_mpdu(struct wpa_supplicant *wpa_s, in wpas_rrm_send_msr_report_mpdu() argument
297 wpabuf_put_u8(report, wpa_s->rrm.token); in wpas_rrm_send_msr_report_mpdu()
301 if (wpa_drv_send_action(wpa_s, 0, 0, in wpas_rrm_send_msr_report_mpdu()
357 static void wpas_rrm_send_msr_report(struct wpa_supplicant *wpa_s, in wpas_rrm_send_msr_report() argument
373 wpas_rrm_send_msr_report_mpdu(wpa_s, pos, send_len); in wpas_rrm_send_msr_report()
560 static int wpas_add_beacon_rep(struct wpa_supplicant *wpa_s, in wpas_add_beacon_rep() argument
564 struct beacon_rep_data *data = &wpa_s->beacon_rep_data; in wpas_add_beacon_rep()
607 static int wpas_beacon_rep_no_results(struct wpa_supplicant *wpa_s, in wpas_beacon_rep_no_results() argument
610 return wpas_rrm_report_elem(buf, wpa_s->beacon_rep_data.token, in wpas_beacon_rep_no_results()
616 static void wpas_beacon_rep_table(struct wpa_supplicant *wpa_s, in wpas_beacon_rep_table() argument
621 for (i = 0; i < wpa_s->last_scan_res_used; i++) { in wpas_beacon_rep_table()
622 if (wpas_add_beacon_rep(wpa_s, buf, wpa_s->last_scan_res[i], in wpas_beacon_rep_table()
628 wpas_beacon_rep_no_results(wpa_s, buf); in wpas_beacon_rep_table()
634 static void wpas_rrm_refuse_request(struct wpa_supplicant *wpa_s) in wpas_rrm_refuse_request() argument
636 if (!is_multicast_ether_addr(wpa_s->rrm.dst_addr)) { in wpas_rrm_refuse_request()
639 if (wpas_rrm_report_elem(&buf, wpa_s->beacon_rep_data.token, in wpas_rrm_refuse_request()
647 wpas_rrm_send_msr_report(wpa_s, buf); in wpas_rrm_refuse_request()
651 wpas_clear_beacon_rep_data(wpa_s); in wpas_rrm_refuse_request()
657 struct wpa_supplicant *wpa_s = eloop_ctx; in wpas_rrm_scan_timeout() local
659 &wpa_s->beacon_rep_data.scan_params; in wpas_rrm_scan_timeout()
662 if (!wpa_s->current_bss) in wpas_rrm_scan_timeout()
665 os_get_reltime(&wpa_s->beacon_rep_scan); in wpas_rrm_scan_timeout()
666 wpa_s->scan_reason = REASON_RRM_BEACON_REPORT; in wpas_rrm_scan_timeout()
667 if (wpa_supplicant_trigger_scan(wpa_s, params) < 0) in wpas_rrm_scan_timeout()
668 wpas_rrm_refuse_request(wpa_s); in wpas_rrm_scan_timeout()
673 static int wpas_rm_handle_beacon_req_subelem(struct wpa_supplicant *wpa_s, in wpas_rm_handle_beacon_req_subelem() argument
789 wpas_rm_handle_beacon_req(struct wpa_supplicant *wpa_s, in wpas_rm_handle_beacon_req() argument
794 struct beacon_rep_data *data = &wpa_s->beacon_rep_data; in wpas_rm_handle_beacon_req()
834 wpa_s, data, subelems[0], subelems[1], &subelems[2]); in wpas_rm_handle_beacon_req()
848 wpas_beacon_rep_table(wpa_s, buf); in wpas_rm_handle_beacon_req()
876 wpas_rrm_scan_timeout(wpa_s, NULL); in wpas_rm_handle_beacon_req()
879 if (!is_multicast_ether_addr(wpa_s->rrm.dst_addr) && in wpas_rm_handle_beacon_req()
886 wpas_clear_beacon_rep_data(wpa_s); in wpas_rm_handle_beacon_req()
893 struct wpa_supplicant *wpa_s, in wpas_rrm_handle_msr_req_element() argument
921 return wpas_rm_handle_beacon_req(wpa_s, req->token, in wpas_rrm_handle_msr_req_element()
933 if (!is_multicast_ether_addr(wpa_s->rrm.dst_addr) && in wpas_rrm_handle_msr_req_element()
946 wpas_rrm_process_msr_req_elems(struct wpa_supplicant *wpa_s, const u8 *pos, in wpas_rrm_process_msr_req_elems() argument
979 res = wpas_rrm_handle_msr_req_element(wpa_s, req, &buf); in wpas_rrm_process_msr_req_elems()
995 void wpas_rrm_handle_radio_measurement_request(struct wpa_supplicant *wpa_s, in wpas_rrm_handle_radio_measurement_request() argument
1001 if (!wpa_s->rrm.rrm_used) { in wpas_rrm_handle_radio_measurement_request()
1013 wpa_s->rrm.token = *frame; in wpas_rrm_handle_radio_measurement_request()
1014 os_memcpy(wpa_s->rrm.dst_addr, dst, ETH_ALEN); in wpas_rrm_handle_radio_measurement_request()
1018 report = wpas_rrm_process_msr_req_elems(wpa_s, frame + 3, len - 3); in wpas_rrm_handle_radio_measurement_request()
1022 wpas_rrm_send_msr_report(wpa_s, report); in wpas_rrm_handle_radio_measurement_request()
1027 void wpas_rrm_handle_link_measurement_request(struct wpa_supplicant *wpa_s, in wpas_rrm_handle_link_measurement_request() argument
1073 if (wpa_drv_send_action(wpa_s, 0, 0, in wpas_rrm_handle_link_measurement_request()
1082 int wpas_beacon_rep_scan_process(struct wpa_supplicant *wpa_s, in wpas_beacon_rep_scan_process() argument
1089 if (!wpa_s->beacon_rep_data.token) in wpas_beacon_rep_scan_process()
1092 if (!wpa_s->current_bss) in wpas_beacon_rep_scan_process()
1096 MAC2STR(wpa_s->current_bss->bssid)); in wpas_beacon_rep_scan_process()
1098 for (i = 0; i < wpa_s->num_bss; i++) { in wpas_beacon_rep_scan_process()
1099 bss = wpa_bss_get_next_bss(wpa_s, bss); in wpas_beacon_rep_scan_process()
1104 if (wpa_s->beacon_rep_data.scan_params.channel && in wpas_beacon_rep_scan_process()
1105 bss->channel != wpa_s->beacon_rep_data.scan_params.channel) in wpas_beacon_rep_scan_process()
1125 os_reltime_sub(&wpa_s->beacon_rep_scan, in wpas_beacon_rep_scan_process()
1128 &wpa_s->beacon_rep_scan) && in wpas_beacon_rep_scan_process()
1143 if (wpas_add_beacon_rep(wpa_s, &buf, bss, scan_start_tsf, in wpas_beacon_rep_scan_process()
1148 if (!buf && wpas_beacon_rep_no_results(wpa_s, &buf)) in wpas_beacon_rep_scan_process()
1153 wpas_rrm_send_msr_report(wpa_s, buf); in wpas_beacon_rep_scan_process()
1157 wpas_clear_beacon_rep_data(wpa_s); in wpas_beacon_rep_scan_process()
1162 void wpas_clear_beacon_rep_data(struct wpa_supplicant *wpa_s) in wpas_clear_beacon_rep_data() argument
1164 struct beacon_rep_data *data = &wpa_s->beacon_rep_data; in wpas_clear_beacon_rep_data()
1166 eloop_cancel_timeout(wpas_rrm_scan_timeout, wpa_s, NULL); in wpas_clear_beacon_rep_data()