Lines Matching refs:wpa_s
92 void wpas_mbo_check_pmf(struct wpa_supplicant *wpa_s, struct wpa_bss *bss in wpas_mbo_check_pmf() argument
101 wpa_s->disable_mbo_oce = 0; in wpas_mbo_check_pmf()
115 wpa_s->disable_mbo_oce = 1; /* AP uses RSN without PMF */ in wpas_mbo_check_pmf()
119 if (wpas_get_ssid_pmf(wpa_s, ssid) == NO_MGMT_FRAME_PROTECTION) in wpas_mbo_check_pmf()
121 wpa_s->disable_mbo_oce = 1; /* STA uses RSN without PMF */ in wpas_mbo_check_pmf()
122 if (wpa_s->disable_mbo_oce) in wpas_mbo_check_pmf()
127 static void wpas_mbo_non_pref_chan_attr_body(struct wpa_supplicant *wpa_s, in wpas_mbo_non_pref_chan_attr_body() argument
133 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].oper_class); in wpas_mbo_non_pref_chan_attr_body()
136 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[i].chan); in wpas_mbo_non_pref_chan_attr_body()
138 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].preference); in wpas_mbo_non_pref_chan_attr_body()
139 wpabuf_put_u8(mbo, wpa_s->non_pref_chan[start].reason); in wpas_mbo_non_pref_chan_attr_body()
150 static void wpas_mbo_non_pref_chan_attr(struct wpa_supplicant *wpa_s, in wpas_mbo_non_pref_chan_attr() argument
159 wpas_mbo_non_pref_chan_attr_body(wpa_s, mbo, start, end); in wpas_mbo_non_pref_chan_attr()
172 static void wpas_mbo_non_pref_chan_subelement(struct wpa_supplicant *wpa_s, in wpas_mbo_non_pref_chan_subelement() argument
182 wpas_mbo_non_pref_chan_attr_body(wpa_s, mbo, start, end); in wpas_mbo_non_pref_chan_subelement()
186 static void wpas_mbo_non_pref_chan_attrs(struct wpa_supplicant *wpa_s, in wpas_mbo_non_pref_chan_attrs() argument
192 if (!wpa_s->non_pref_chan || !wpa_s->non_pref_chan_num) { in wpas_mbo_non_pref_chan_attrs()
199 start_pref = &wpa_s->non_pref_chan[0]; in wpas_mbo_non_pref_chan_attrs()
201 for (i = 1; i <= wpa_s->non_pref_chan_num; i++) { in wpas_mbo_non_pref_chan_attrs()
204 if (i < wpa_s->non_pref_chan_num) in wpas_mbo_non_pref_chan_attrs()
205 non_pref = &wpa_s->non_pref_chan[i]; in wpas_mbo_non_pref_chan_attrs()
211 wpas_mbo_non_pref_chan_subelement(wpa_s, mbo, in wpas_mbo_non_pref_chan_attrs()
214 wpas_mbo_non_pref_chan_attr(wpa_s, mbo, start, in wpas_mbo_non_pref_chan_attrs()
226 int wpas_mbo_ie(struct wpa_supplicant *wpa_s, u8 *buf, size_t len, in wpas_mbo_ie() argument
233 ((wpa_s->enable_oce & OCE_STA) ? 3 : 0)) in wpas_mbo_ie()
242 wpas_mbo_non_pref_chan_attrs(wpa_s, mbo, 0); in wpas_mbo_ie()
253 wpabuf_put_u8(mbo, wpa_s->mbo_cell_capa); in wpas_mbo_ie()
257 if ((wpa_s->enable_oce & OCE_STA) && add_oce_capa) { in wpas_mbo_ie()
272 static void wpas_mbo_send_wnm_notification(struct wpa_supplicant *wpa_s, in wpas_mbo_send_wnm_notification() argument
283 if (!wpa_s->current_bss || in wpas_mbo_send_wnm_notification()
284 !wpa_bss_get_vendor_ie(wpa_s->current_bss, MBO_IE_VENDOR_TYPE)) in wpas_mbo_send_wnm_notification()
293 wpa_s->mbo_wnm_token++; in wpas_mbo_send_wnm_notification()
294 if (wpa_s->mbo_wnm_token == 0) in wpas_mbo_send_wnm_notification()
295 wpa_s->mbo_wnm_token++; in wpas_mbo_send_wnm_notification()
296 wpabuf_put_u8(buf, wpa_s->mbo_wnm_token); in wpas_mbo_send_wnm_notification()
301 res = wpa_drv_send_action(wpa_s, 0, 0, in wpas_mbo_send_wnm_notification()
311 static void wpas_mbo_non_pref_chan_changed(struct wpa_supplicant *wpa_s) in wpas_mbo_non_pref_chan_changed() argument
319 wpas_mbo_non_pref_chan_attrs(wpa_s, buf, 1); in wpas_mbo_non_pref_chan_changed()
320 wpas_mbo_send_wnm_notification(wpa_s, wpabuf_head_u8(buf), in wpas_mbo_non_pref_chan_changed()
354 int wpas_mbo_update_non_pref_chan(struct wpa_supplicant *wpa_s, in wpas_mbo_update_non_pref_chan() argument
441 os_free(wpa_s->non_pref_chan); in wpas_mbo_update_non_pref_chan()
442 wpa_s->non_pref_chan = chans; in wpas_mbo_update_non_pref_chan()
443 wpa_s->non_pref_chan_num = num; in wpas_mbo_update_non_pref_chan()
444 wpas_mbo_non_pref_chan_changed(wpa_s); in wpas_mbo_update_non_pref_chan()
454 int wpas_mbo_update_non_pref_chan(struct wpa_supplicant *wpa_s, in wpas_mbo_update_non_pref_chan() argument
470 os_free(wpa_s->non_pref_chan); in wpas_mbo_update_non_pref_chan()
471 wpa_s->non_pref_chan = chans; in wpas_mbo_update_non_pref_chan()
473 wpa_s->non_pref_chan_num = non_pref_chan->non_pref_chan_num; in wpas_mbo_update_non_pref_chan()
475 wpa_s->non_pref_chan_num = 0; in wpas_mbo_update_non_pref_chan()
476 wpas_mbo_non_pref_chan_changed(wpa_s); in wpas_mbo_update_non_pref_chan()
483 void wpas_mbo_scan_ie(struct wpa_supplicant *wpa_s, struct wpabuf *ie) in wpas_mbo_scan_ie() argument
498 wpabuf_put_u8(ie, wpa_s->mbo_cell_capa); in wpas_mbo_scan_ie()
500 if (wpa_s->enable_oce & OCE_STA) { in wpas_mbo_scan_ie()
511 wpa_bss_tmp_disallowed * wpas_get_disallowed_bss(struct wpa_supplicant *wpa_s, in wpas_get_disallowed_bss() argument
516 dl_list_for_each(bss, &wpa_s->bss_tmp_disallowed, in wpas_get_disallowed_bss()
527 struct wpa_supplicant *wpa_s = &g_wpa_supp; in wpa_bss_tmp_disallow_timeout() local
531 dl_list_for_each(tmp, &wpa_s->bss_tmp_disallowed, in wpa_bss_tmp_disallow_timeout()
541 void wpa_bss_tmp_disallow(struct wpa_supplicant *wpa_s, const u8 *bssid, in wpa_bss_tmp_disallow() argument
546 bss = wpas_get_disallowed_bss(wpa_s, bssid); in wpa_bss_tmp_disallow()
548 eloop_cancel_timeout(wpa_bss_tmp_disallow_timeout, wpa_s, bss); in wpa_bss_tmp_disallow()
560 dl_list_add(&wpa_s->bss_tmp_disallowed, &bss->list); in wpa_bss_tmp_disallow()
564 wpa_s, bss); in wpa_bss_tmp_disallow()
567 int wpa_is_bss_tmp_disallowed(struct wpa_supplicant *wpa_s, in wpa_is_bss_tmp_disallowed() argument
572 dl_list_for_each_safe(tmp, prev, &wpa_s->bss_tmp_disallowed, in wpa_is_bss_tmp_disallowed()
586 void wpas_mbo_ie_trans_req(struct wpa_supplicant *wpa_s, const u8 *mbo_ie, in wpas_mbo_ie_trans_req() argument
614 if (wpa_s->mbo_cell_capa == in wpas_mbo_ie_trans_req()
626 wpa_s->wnm_mbo_trans_reason_present = 1; in wpas_mbo_ie_trans_req()
627 wpa_s->wnm_mbo_transition_reason = *pos; in wpas_mbo_ie_trans_req()
633 if (wpa_s->wnm_mode & in wpas_mbo_ie_trans_req()
638 } else if (wpa_s->wnm_mode & in wpas_mbo_ie_trans_req()
673 if (wpa_s->wnm_mbo_trans_reason_present) in wpas_mbo_ie_trans_req()
675 wpa_s->wnm_mbo_transition_reason); in wpas_mbo_ie_trans_req()
677 if (disallowed_sec && wpa_s->current_bss) in wpas_mbo_ie_trans_req()
678 wpa_bss_tmp_disallow(wpa_s, wpa_s->current_bss->bssid, in wpas_mbo_ie_trans_req()
688 size_t wpas_mbo_ie_bss_trans_reject(struct wpa_supplicant *wpa_s, u8 *pos, in wpas_mbo_ie_bss_trans_reject() argument
703 void wpas_mbo_update_cell_capa(struct wpa_supplicant *wpa_s, u8 mbo_cell_capa) in wpas_mbo_update_cell_capa() argument
707 if (wpa_s->mbo_cell_capa == mbo_cell_capa) { in wpas_mbo_update_cell_capa()
714 wpa_s->mbo_cell_capa = mbo_cell_capa; in wpas_mbo_update_cell_capa()
722 wpas_mbo_send_wnm_notification(wpa_s, cell_capa, 7); in wpas_mbo_update_cell_capa()
723 wpa_supplicant_set_default_scan_ies(wpa_s); in wpas_mbo_update_cell_capa()
727 struct wpabuf * mbo_build_anqp_buf(struct wpa_supplicant *wpa_s, in mbo_build_anqp_buf() argument
764 void mbo_parse_rx_anqp_resp(struct wpa_supplicant *wpa_s, in mbo_parse_rx_anqp_resp() argument
781 wpa_msg(wpa_s, MSG_INFO, RX_MBO_ANQP MACSTR in mbo_parse_rx_anqp_resp()