Lines Matching refs:assoc_data
831 struct ieee80211_mgd_assoc_data *assoc_data) in ieee80211_assoc_add_rates() argument
839 if (assoc_data->supp_rates_len) { in ieee80211_assoc_add_rates()
847 assoc_data->supp_rates, in ieee80211_assoc_add_rates()
848 assoc_data->supp_rates_len, in ieee80211_assoc_add_rates()
1030 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_link_elems() local
1031 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_assoc_link_elems()
1085 ieee80211_assoc_add_rates(skb, width, sband, assoc_data); in ieee80211_assoc_link_elems()
1131 !(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HT)) { in ieee80211_assoc_link_elems()
1133 assoc_data->link[link_id].ap_ht_param, in ieee80211_assoc_link_elems()
1135 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1145 !(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_VHT)) { in ieee80211_assoc_link_elems()
1148 &assoc_data->link[link_id].ap_vht_cap, in ieee80211_assoc_link_elems()
1149 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1160 if (assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HT || in ieee80211_assoc_link_elems()
1162 assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_VHT)) in ieee80211_assoc_link_elems()
1163 assoc_data->link[link_id].conn_flags |= in ieee80211_assoc_link_elems()
1172 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HE)) { in ieee80211_assoc_link_elems()
1174 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1183 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_EHT)) in ieee80211_assoc_link_elems()
1186 if (link_id == assoc_data->assoc_link_id) in ieee80211_assoc_link_elems()
1193 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_EHT)) in ieee80211_assoc_link_elems()
1205 link->u.mgd.conn_flags = assoc_data->link[link_id].conn_flags; in ieee80211_assoc_link_elems()
1276 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_add_ml_elem() local
1328 if (!assoc_data->link[link_id].bss || in ieee80211_assoc_add_ml_elem()
1329 link_id == assoc_data->assoc_link_id) in ieee80211_assoc_add_ml_elem()
1332 extra_elems = assoc_data->link[link_id].elems; in ieee80211_assoc_add_ml_elem()
1333 extra_elems_len = assoc_data->link[link_id].elems_len; in ieee80211_assoc_add_ml_elem()
1343 skb_put_data(skb, assoc_data->link[link_id].addr, in ieee80211_assoc_add_ml_elem()
1381 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_send_assoc() local
1399 if (assoc_data->ie_len) in ieee80211_send_assoc()
1401 assoc_data->ie, in ieee80211_send_assoc()
1402 assoc_data->ie_len); in ieee80211_send_assoc()
1408 2 + assoc_data->ssid_len + /* SSID */ in ieee80211_send_assoc()
1409 assoc_data->ie_len + /* extra IEs */ in ieee80211_send_assoc()
1410 (assoc_data->fils_kek_len ? 16 /* AES-SIV */ : 0) + in ieee80211_send_assoc()
1414 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_send_assoc()
1425 size += assoc_data->link[link_id].elems_len; in ieee80211_send_assoc()
1479 link = sdata_dereference(sdata->link[assoc_data->assoc_link_id], sdata); in ieee80211_send_assoc()
1483 if (WARN_ON(!assoc_data->link[assoc_data->assoc_link_id].bss)) in ieee80211_send_assoc()
1506 listen_int = cpu_to_le16(assoc_data->s1g ? in ieee80211_send_assoc()
1509 if (!is_zero_ether_addr(assoc_data->prev_ap_addr)) { in ieee80211_send_assoc()
1516 assoc_data->prev_ap_addr, ETH_ALEN); in ieee80211_send_assoc()
1528 pos = skb_put(skb, 2 + assoc_data->ssid_len); in ieee80211_send_assoc()
1531 *pos++ = assoc_data->ssid_len; in ieee80211_send_assoc()
1532 memcpy(pos, assoc_data->ssid, assoc_data->ssid_len); in ieee80211_send_assoc()
1538 assoc_data->ie, in ieee80211_send_assoc()
1539 assoc_data->ie_len, in ieee80211_send_assoc()
1540 assoc_data->assoc_link_id, link, in ieee80211_send_assoc()
1545 if (assoc_data->ie_len) { in ieee80211_send_assoc()
1546 noffset = ieee80211_ie_split_vendor(assoc_data->ie, in ieee80211_send_assoc()
1547 assoc_data->ie_len, in ieee80211_send_assoc()
1549 skb_put_data(skb, assoc_data->ie + offset, noffset - offset); in ieee80211_send_assoc()
1553 if (assoc_data->wmm) { in ieee80211_send_assoc()
1554 if (assoc_data->uapsd) { in ieee80211_send_assoc()
1566 if (assoc_data->ie_len) { in ieee80211_send_assoc()
1567 noffset = assoc_data->ie_len; in ieee80211_send_assoc()
1568 skb_put_data(skb, assoc_data->ie + offset, noffset - offset); in ieee80211_send_assoc()
1571 if (assoc_data->fils_kek_len) { in ieee80211_send_assoc()
1572 ret = fils_encrypt_assoc_req(skb, assoc_data); in ieee80211_send_assoc()
2804 struct ieee80211_mgd_assoc_data *assoc_data, in ieee80211_set_associated() argument
2815 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
2819 assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) in ieee80211_set_associated()
2849 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
2854 assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) in ieee80211_set_associated()
3314 else if (ifmgd->assoc_data && ifmgd->assoc_data->link[0].bss) in ieee80211_ap_probereq_get()
3315 cbss = ifmgd->assoc_data->link[0].bss; in ieee80211_ap_probereq_get()
3542 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_destroy_assoc_data() local
3553 sta_info_destroy_addr(sdata, assoc_data->ap_addr); in ieee80211_destroy_assoc_data()
3569 ARRAY_SIZE(assoc_data->link)); in ieee80211_destroy_assoc_data()
3572 data.bss[i] = assoc_data->link[i].bss; in ieee80211_destroy_assoc_data()
3575 data.ap_mld_addr = assoc_data->ap_addr; in ieee80211_destroy_assoc_data()
3586 kfree(assoc_data); in ieee80211_destroy_assoc_data()
3587 sdata->u.mgd.assoc_data = NULL; in ieee80211_destroy_assoc_data()
3846 if (ifmgd->assoc_data && in ieee80211_rx_mgmt_deauth()
3847 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->ap_addr)) { in ieee80211_rx_mgmt_deauth()
3850 ifmgd->assoc_data->ap_addr, reason_code, in ieee80211_rx_mgmt_deauth()
4006 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_assoc_config_link() local
4013 .link_id = link_id == assoc_data->assoc_link_id ? -1 : link_id, in ieee80211_assoc_config_link()
4030 if (link_id == assoc_data->assoc_link_id) { in ieee80211_assoc_config_link()
4037 assoc_data->link[link_id].status = WLAN_STATUS_SUCCESS; in ieee80211_assoc_config_link()
4060 assoc_data->link[link_id].status = get_unaligned_le16(ptr + 2); in ieee80211_assoc_config_link()
4064 if (assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) { in ieee80211_assoc_config_link()
4066 assoc_data->link[link_id].status); in ieee80211_assoc_config_link()
4090 ((assoc_data->wmm && !elems->wmm_param) || in ieee80211_assoc_config_link()
4118 if (assoc_data->wmm && in ieee80211_assoc_config_link()
5110 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_success() local
5123 sta = sta_info_get(sdata, assoc_data->ap_addr); in ieee80211_assoc_success()
5129 if (!assoc_data->link[link_id].bss) in ieee80211_assoc_success()
5133 if (assoc_data->link[link_id].disabled) in ieee80211_assoc_success()
5136 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5147 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_assoc_success()
5162 assoc_data->link[link_id].bss->bssid, in ieee80211_assoc_success()
5163 link_id == assoc_data->assoc_link_id ? in ieee80211_assoc_success()
5189 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5199 assoc_data->link[link_id].bss); in ieee80211_assoc_success()
5204 assoc_data->link[link_id].bss, in ieee80211_assoc_success()
5209 if (assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) { in ieee80211_assoc_success()
5215 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5256 ieee80211_set_associated(sdata, assoc_data, changed); in ieee80211_assoc_success()
5284 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_rx_mgmt_assoc_resp() local
5309 if (!assoc_data) in ieee80211_rx_mgmt_assoc_resp()
5312 if (!ether_addr_equal(assoc_data->ap_addr, mgmt->bssid) || in ieee80211_rx_mgmt_assoc_resp()
5313 !ether_addr_equal(assoc_data->ap_addr, mgmt->sa)) in ieee80211_rx_mgmt_assoc_resp()
5327 if (assoc_data->s1g) in ieee80211_rx_mgmt_assoc_resp()
5341 if (assoc_data->fils_kek_len && in ieee80211_rx_mgmt_assoc_resp()
5342 fils_decrypt_assoc_resp(sdata, (u8 *)mgmt, &len, assoc_data) < 0) in ieee80211_rx_mgmt_assoc_resp()
5354 else if (assoc_data->s1g) in ieee80211_rx_mgmt_assoc_resp()
5367 reassoc ? "Rea" : "A", assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5377 cfg80211_assoc_comeback(sdata->dev, assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5384 assoc_data->ap_addr, tu, ms); in ieee80211_rx_mgmt_assoc_resp()
5385 assoc_data->timeout = jiffies + msecs_to_jiffies(ms); in ieee80211_rx_mgmt_assoc_resp()
5386 assoc_data->timeout_started = true; in ieee80211_rx_mgmt_assoc_resp()
5388 run_again(sdata, assoc_data->timeout); in ieee80211_rx_mgmt_assoc_resp()
5394 assoc_data->ap_addr, status_code); in ieee80211_rx_mgmt_assoc_resp()
5411 assoc_data->ap_addr); in ieee80211_rx_mgmt_assoc_resp()
5427 if (memcmp(assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5432 assoc_data->ap_addr); in ieee80211_rx_mgmt_assoc_resp()
5456 if (!assoc_data->link[link_id].bss) in ieee80211_rx_mgmt_assoc_resp()
5459 resp.links[link_id].bss = assoc_data->link[link_id].bss; in ieee80211_rx_mgmt_assoc_resp()
5461 assoc_data->link[link_id].addr); in ieee80211_rx_mgmt_assoc_resp()
5462 resp.links[link_id].status = assoc_data->link[link_id].status; in ieee80211_rx_mgmt_assoc_resp()
5968 if (ifmgd->assoc_data && ifmgd->assoc_data->need_beacon && in ieee80211_rx_mgmt_beacon()
5970 ieee80211_rx_our_beacon(bssid, ifmgd->assoc_data->link[0].bss)) { in ieee80211_rx_mgmt_beacon()
5971 parse_params.bss = ifmgd->assoc_data->link[0].bss; in ieee80211_rx_mgmt_beacon()
5981 ifmgd->assoc_data->need_beacon = false; in ieee80211_rx_mgmt_beacon()
6004 ifmgd->assoc_data->timeout = jiffies; in ieee80211_rx_mgmt_beacon()
6005 ifmgd->assoc_data->timeout_started = true; in ieee80211_rx_mgmt_beacon()
6006 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_rx_mgmt_beacon()
6466 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_do_assoc() local
6472 assoc_data->tries++; in ieee80211_do_assoc()
6473 if (assoc_data->tries > IEEE80211_ASSOC_MAX_TRIES) { in ieee80211_do_assoc()
6475 assoc_data->ap_addr); in ieee80211_do_assoc()
6482 assoc_data->link[assoc_data->assoc_link_id].bss); in ieee80211_do_assoc()
6488 assoc_data->ap_addr, assoc_data->tries, in ieee80211_do_assoc()
6495 assoc_data->timeout = jiffies + IEEE80211_ASSOC_TIMEOUT; in ieee80211_do_assoc()
6496 assoc_data->timeout_started = true; in ieee80211_do_assoc()
6497 run_again(sdata, assoc_data->timeout); in ieee80211_do_assoc()
6499 assoc_data->timeout = in ieee80211_do_assoc()
6502 assoc_data->timeout_started = true; in ieee80211_do_assoc()
6503 run_again(sdata, assoc_data->timeout); in ieee80211_do_assoc()
6549 } else if (ifmgd->assoc_data && in ieee80211_sta_work()
6553 ifmgd->assoc_data->timeout = in ieee80211_sta_work()
6555 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
6557 ifmgd->assoc_data->timeout = jiffies - 1; in ieee80211_sta_work()
6559 ifmgd->assoc_data->timeout_started = true; in ieee80211_sta_work()
6589 if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started && in ieee80211_sta_work()
6590 time_after(jiffies, ifmgd->assoc_data->timeout)) { in ieee80211_sta_work()
6591 if ((ifmgd->assoc_data->need_beacon && in ieee80211_sta_work()
6603 } else if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started) in ieee80211_sta_work()
6604 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
6750 if (ifmgd->auth_data || ifmgd->assoc_data) { in ieee80211_mgd_quiesce()
6753 ifmgd->assoc_data->ap_addr; in ieee80211_mgd_quiesce()
6764 if (ifmgd->assoc_data) in ieee80211_mgd_quiesce()
6901 if (sdata->u.mgd.assoc_data) in ieee80211_mgd_setup_link()
6903 sdata->u.mgd.assoc_data->link[link_id].addr); in ieee80211_mgd_setup_link()
6959 if (WARN_ON(!ifmgd->auth_data && !ifmgd->assoc_data)) { in ieee80211_prep_connection()
7146 if (ifmgd->assoc_data) in ieee80211_mgd_auth()
7268 struct ieee80211_mgd_assoc_data *assoc_data, in ieee80211_setup_assoc_link() argument
7282 cbss = assoc_data->link[link_id].bss; in ieee80211_setup_assoc_link()
7301 assoc_data->supp_rates = bss->supp_rates; in ieee80211_setup_assoc_link()
7302 assoc_data->supp_rates_len = bss->supp_rates_len; in ieee80211_setup_assoc_link()
7307 memcpy(assoc_data->ie_pos, req->links[link_id].elems, in ieee80211_setup_assoc_link()
7309 assoc_data->link[link_id].elems = assoc_data->ie_pos; in ieee80211_setup_assoc_link()
7310 assoc_data->link[link_id].elems_len = req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
7311 assoc_data->ie_pos += req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
7317 assoc_data->link[link_id].ap_ht_param = in ieee80211_setup_assoc_link()
7323 memcpy(&assoc_data->link[link_id].ap_vht_cap, vht_elem->data, in ieee80211_setup_assoc_link()
7441 struct ieee80211_mgd_assoc_data *assoc_data; in ieee80211_mgd_assoc() local
7450 size_t size = sizeof(*assoc_data) + req->ie_len; in ieee80211_mgd_assoc()
7459 assoc_data = kzalloc(size, GFP_KERNEL); in ieee80211_mgd_assoc()
7460 if (!assoc_data) in ieee80211_mgd_assoc()
7467 if (!ssid_elem || ssid_elem->datalen > sizeof(assoc_data->ssid)) { in ieee80211_mgd_assoc()
7469 kfree(assoc_data); in ieee80211_mgd_assoc()
7472 memcpy(assoc_data->ssid, ssid_elem->data, ssid_elem->datalen); in ieee80211_mgd_assoc()
7473 assoc_data->ssid_len = ssid_elem->datalen; in ieee80211_mgd_assoc()
7474 memcpy(vif_cfg->ssid, assoc_data->ssid, assoc_data->ssid_len); in ieee80211_mgd_assoc()
7475 vif_cfg->ssid_len = assoc_data->ssid_len; in ieee80211_mgd_assoc()
7484 ether_addr_copy(assoc_data->link[i].addr, in ieee80211_mgd_assoc()
7487 eth_random_addr(assoc_data->link[i].addr); in ieee80211_mgd_assoc()
7490 memcpy(assoc_data->link[0].addr, sdata->vif.addr, ETH_ALEN); in ieee80211_mgd_assoc()
7493 assoc_data->s1g = cbss->channel->band == NL80211_BAND_S1GHZ; in ieee80211_mgd_assoc()
7495 memcpy(assoc_data->ap_addr, in ieee80211_mgd_assoc()
7504 sdata->vif.cfg.ap_addr, assoc_data->ap_addr); in ieee80211_mgd_assoc()
7520 if (ifmgd->assoc_data) { in ieee80211_mgd_assoc()
7530 assoc_data->ap_addr) && in ieee80211_mgd_assoc()
7538 assoc_data->wmm = bss->wmm_used && in ieee80211_mgd_assoc()
7606 memcpy(assoc_data->ie, req->ie, req->ie_len); in ieee80211_mgd_assoc()
7607 assoc_data->ie_len = req->ie_len; in ieee80211_mgd_assoc()
7608 assoc_data->ie_pos = assoc_data->ie + assoc_data->ie_len; in ieee80211_mgd_assoc()
7610 assoc_data->ie_pos = assoc_data->ie; in ieee80211_mgd_assoc()
7619 memcpy(assoc_data->fils_kek, req->fils_kek, in ieee80211_mgd_assoc()
7621 assoc_data->fils_kek_len = req->fils_kek_len; in ieee80211_mgd_assoc()
7625 memcpy(assoc_data->fils_nonces, req->fils_nonces, in ieee80211_mgd_assoc()
7629 assoc_data->timeout = jiffies; in ieee80211_mgd_assoc()
7630 assoc_data->timeout_started = true; in ieee80211_mgd_assoc()
7632 assoc_data->assoc_link_id = assoc_link_id; in ieee80211_mgd_assoc()
7635 for (i = 0; i < ARRAY_SIZE(assoc_data->link); i++) { in ieee80211_mgd_assoc()
7636 assoc_data->link[i].conn_flags = conn_flags; in ieee80211_mgd_assoc()
7637 assoc_data->link[i].bss = req->links[i].bss; in ieee80211_mgd_assoc()
7638 assoc_data->link[i].disabled = req->links[i].disabled; in ieee80211_mgd_assoc()
7646 assoc_data->link[0].conn_flags = conn_flags; in ieee80211_mgd_assoc()
7647 assoc_data->link[0].bss = cbss; in ieee80211_mgd_assoc()
7658 conn_flags |= ieee80211_setup_assoc_link(sdata, assoc_data, req, in ieee80211_mgd_assoc()
7670 assoc_data->uapsd = true; in ieee80211_mgd_assoc()
7673 assoc_data->uapsd = false; in ieee80211_mgd_assoc()
7678 memcpy(assoc_data->prev_ap_addr, req->prev_bssid, ETH_ALEN); in ieee80211_mgd_assoc()
7705 ifmgd->assoc_data = assoc_data; in ieee80211_mgd_assoc()
7707 for (i = 0; i < ARRAY_SIZE(assoc_data->link); i++) { in ieee80211_mgd_assoc()
7708 if (!assoc_data->link[i].bss) in ieee80211_mgd_assoc()
7710 if (i == assoc_data->assoc_link_id) in ieee80211_mgd_assoc()
7713 err = ieee80211_prep_channel(sdata, NULL, assoc_data->link[i].bss, in ieee80211_mgd_assoc()
7714 &assoc_data->link[i].conn_flags); in ieee80211_mgd_assoc()
7720 memcpy(sdata->vif.cfg.ap_addr, assoc_data->ap_addr, ETH_ALEN); in ieee80211_mgd_assoc()
7727 assoc_data->link[assoc_data->assoc_link_id].conn_flags = in ieee80211_mgd_assoc()
7742 assoc_data->timeout = TU_TO_EXP_TIME(req->bss->beacon_interval); in ieee80211_mgd_assoc()
7743 assoc_data->timeout_started = true; in ieee80211_mgd_assoc()
7744 assoc_data->need_beacon = true; in ieee80211_mgd_assoc()
7749 run_again(sdata, assoc_data->timeout); in ieee80211_mgd_assoc()
7756 ifmgd->assoc_data = NULL; in ieee80211_mgd_assoc()
7758 kfree(assoc_data); in ieee80211_mgd_assoc()
7792 if (ifmgd->assoc_data && in ieee80211_mgd_deauth()
7793 ether_addr_equal(ifmgd->assoc_data->ap_addr, req->bssid)) { in ieee80211_mgd_deauth()
7882 if (ifmgd->assoc_data) in ieee80211_mgd_stop()