• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/wpa/wpa_supplicant/

Lines Matching defs:wpa_s

69 static int wmm_ac_add_ts(struct wpa_supplicant *wpa_s, const u8 *addr,
82 if (wpa_s->tspecs[ac][idx]) {
95 ret = wpa_drv_add_ts(wpa_s, tsid, addr, up, admitted_time);
106 wpa_s->tspecs[ac][idx] = _tspec;
110 wpa_msg(wpa_s, MSG_INFO, WMM_AC_EVENT_TSPEC_ADDED
118 static void wmm_ac_del_ts_idx(struct wpa_supplicant *wpa_s, u8 ac,
121 struct wmm_tspec_element *tspec = wpa_s->tspecs[ac][dir];
132 wpa_drv_del_ts(wpa_s, tsid, wpa_s->bssid);
134 wpa_msg(wpa_s, MSG_INFO, WMM_AC_EVENT_TSPEC_REMOVED
135 "tsid=%d addr=" MACSTR, tsid, MAC2STR(wpa_s->bssid));
137 os_free(wpa_s->tspecs[ac][dir]);
138 wpa_s->tspecs[ac][dir] = NULL;
142 static void wmm_ac_del_req(struct wpa_supplicant *wpa_s, int failed)
144 struct wmm_ac_addts_request *req = wpa_s->addts_request;
150 wpa_msg(wpa_s, MSG_INFO, WMM_AC_EVENT_TSPEC_REQ_FAILED
153 eloop_cancel_timeout(wmm_ac_addts_req_timeout, wpa_s, req);
154 wpa_s->addts_request = NULL;
161 struct wpa_supplicant *wpa_s = eloop_ctx;
169 wmm_ac_del_req(wpa_s, 1);
173 static int wmm_ac_send_addts_request(struct wpa_supplicant *wpa_s,
195 ret = wpa_drv_send_action(wpa_s, wpa_s->assoc_freq, 0, req->address,
196 wpa_s->own_addr, wpa_s->bssid,
208 static int wmm_ac_send_delts(struct wpa_supplicant *wpa_s,
229 ret = wpa_drv_send_action(wpa_s, wpa_s->assoc_freq, 0, address,
230 wpa_s->own_addr, wpa_s->bssid,
241 static int wmm_ac_find_tsid(struct wpa_supplicant *wpa_s, u8 tsid,
249 if (wpa_s->tspecs[ac][idx] &&
250 wmm_ac_get_tsid(wpa_s->tspecs[ac][idx]) == tsid) {
263 wmm_ac_build_addts_req(struct wpa_supplicant *wpa_s,
270 u8 uapsd = wpa_s->wmm_ac_assoc_info->ac_params[ac].uapsd;
280 if (++wpa_s->wmm_ac_last_dialog_token == 0)
281 wpa_s->wmm_ac_last_dialog_token++;
283 addts_req->dialog_token = wpa_s->wmm_ac_last_dialog_token;
328 static int wmm_ac_should_replace_ts(struct wpa_supplicant *wpa_s,
334 cur_ac = wmm_ac_find_tsid(wpa_s, tsid, &idx);
348 if (wpa_s->tspecs[ac][idx])
375 static int wmm_ac_ts_req_is_valid(struct wpa_supplicant *wpa_s,
404 if (!wpa_s->wmm_ac_assoc_info->ac_params[req_ac].acm) {
409 if (wmm_ac_should_replace_ts(wpa_s, params->tsid, req_ac,
418 wmm_ac_process_param_elem(struct wpa_supplicant *wpa_s, const u8 *ies,
463 static int wmm_ac_init(struct wpa_supplicant *wpa_s, const u8 *ies,
469 if (wpa_s->wmm_ac_assoc_info) {
479 os_memset(wpa_s->tspecs, 0, sizeof(wpa_s->tspecs));
480 wpa_s->wmm_ac_last_dialog_token = 0;
481 wpa_s->addts_request = NULL;
483 assoc_data = wmm_ac_process_param_elem(wpa_s, ies, ies_len);
495 wpa_s->wmm_ac_assoc_info = assoc_data;
500 static void wmm_ac_del_ts(struct wpa_supplicant *wpa_s, u8 ac, int dir_bitmap)
508 wmm_ac_del_ts_idx(wpa_s, ac, idx);
513 static void wmm_ac_deinit(struct wpa_supplicant *wpa_s)
518 wmm_ac_del_ts(wpa_s, i, TS_DIR_IDX_ALL);
521 wmm_ac_del_req(wpa_s, 1);
523 os_free(wpa_s->wmm_ac_assoc_info);
524 wpa_s->wmm_ac_assoc_info = NULL;
528 void wmm_ac_notify_assoc(struct wpa_supplicant *wpa_s, const u8 *ies,
531 if (wmm_ac_init(wpa_s, ies, ies_len, wmm_params))
539 void wmm_ac_notify_disassoc(struct wpa_supplicant *wpa_s)
541 if (!wpa_s->wmm_ac_assoc_info)
544 wmm_ac_deinit(wpa_s);
549 int wpas_wmm_ac_delts(struct wpa_supplicant *wpa_s, u8 tsid)
555 if (!wpa_s->wmm_ac_assoc_info) {
561 ac = wmm_ac_find_tsid(wpa_s, tsid, &dir);
567 tspec = *wpa_s->tspecs[ac][dir];
569 wmm_ac_del_ts_idx(wpa_s, ac, dir);
571 wmm_ac_send_delts(wpa_s, &tspec, wpa_s->bssid);
577 int wpas_wmm_ac_addts(struct wpa_supplicant *wpa_s,
582 if (!wpa_s->wmm_ac_assoc_info) {
588 if (wpa_s->addts_request) {
599 !wpa_s->wmm_ac_supported) {
605 if (!wmm_ac_ts_req_is_valid(wpa_s, params))
610 MAC2STR(wpa_s->bssid), params->tsid,
613 addts_req = wmm_ac_build_addts_req(wpa_s, params, wpa_s->bssid);
617 if (wmm_ac_send_addts_request(wpa_s, addts_req))
621 wpa_s->addts_request = addts_req;
623 wpa_s, addts_req);
631 static void wmm_ac_handle_delts(struct wpa_supplicant *wpa_s, const u8 *sa,
644 ac = wmm_ac_find_tsid(wpa_s, tsid, &idx);
651 wmm_ac_del_ts_idx(wpa_s, ac, idx);
659 static void wmm_ac_handle_addts_resp(struct wpa_supplicant *wpa_s, const u8 *sa,
663 struct wmm_ac_addts_request *req = wpa_s->addts_request;
691 wmm_ac_del_req(wpa_s, 0);
702 replace_tspecs = wmm_ac_should_replace_ts(wpa_s, tsid, ac, dir);
709 wmm_ac_del_ts(wpa_s, ac, replace_tspecs);
718 if (wmm_ac_add_ts(wpa_s, sa, tspec))
725 wmm_ac_send_delts(wpa_s, tspec, sa);
727 wpa_msg(wpa_s, MSG_INFO, WMM_AC_EVENT_TSPEC_REQ_FAILED "tsid=%u",
732 void wmm_ac_rx_action(struct wpa_supplicant *wpa_s, const u8 *da,
741 if (wpa_s->wmm_ac_assoc_info == NULL) {
758 if (os_memcmp(da, wpa_s->own_addr, ETH_ALEN) != 0) {
764 if (os_memcmp(sa, wpa_s->bssid, ETH_ALEN) != 0) {
803 wmm_ac_handle_addts_resp(wpa_s, sa, dialog_token, status_code,
807 wmm_ac_handle_delts(wpa_s, sa, tspec);
847 int wpas_wmm_ac_status(struct wpa_supplicant *wpa_s, char *buf, size_t buflen)
849 struct wmm_ac_assoc_data *assoc_info = wpa_s->wmm_ac_assoc_info;
875 tspec = wpa_s->tspecs[ac][idx];
892 MAC2STR(wpa_s->bssid),
907 static u8 wmm_ac_get_tspecs_count(struct wpa_supplicant *wpa_s)
913 if (wpa_s->tspecs[ac][dir])
922 void wmm_ac_save_tspecs(struct wpa_supplicant *wpa_s)
928 if (!wpa_s->wmm_ac_assoc_info)
931 tspecs_count = wmm_ac_get_tspecs_count(wpa_s);
939 wmm_ac_clear_saved_tspecs(wpa_s);
940 wpa_s->last_tspecs = os_calloc(tspecs_count,
941 sizeof(*wpa_s->last_tspecs));
942 if (!wpa_s->last_tspecs) {
949 if (!wpa_s->tspecs[ac][dir])
952 wpa_s->last_tspecs[wpa_s->last_tspecs_count++] =
953 *wpa_s->tspecs[ac][dir];
958 wpa_s->last_tspecs_count);
962 void wmm_ac_clear_saved_tspecs(struct wpa_supplicant *wpa_s)
964 if (wpa_s->last_tspecs) {
966 os_free(wpa_s->last_tspecs);
967 wpa_s->last_tspecs = NULL;
968 wpa_s->last_tspecs_count = 0;
973 int wmm_ac_restore_tspecs(struct wpa_supplicant *wpa_s)
977 if (!wpa_s->wmm_ac_assoc_info || !wpa_s->last_tspecs_count)
981 wpa_s->last_tspecs_count);
983 for (i = 0; i < wpa_s->last_tspecs_count; i++)
984 wmm_ac_add_ts(wpa_s, wpa_s->bssid, &wpa_s->last_tspecs[i]);