Lines Matching refs:assoc_data
836 struct ieee80211_mgd_assoc_data *assoc_data) in ieee80211_assoc_add_rates() argument
844 if (assoc_data->supp_rates_len) { in ieee80211_assoc_add_rates()
852 assoc_data->supp_rates, in ieee80211_assoc_add_rates()
853 assoc_data->supp_rates_len, in ieee80211_assoc_add_rates()
1035 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_link_elems() local
1036 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_assoc_link_elems()
1090 ieee80211_assoc_add_rates(skb, width, sband, assoc_data); in ieee80211_assoc_link_elems()
1136 !(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HT)) { in ieee80211_assoc_link_elems()
1138 assoc_data->link[link_id].ap_ht_param, in ieee80211_assoc_link_elems()
1140 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1150 !(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_VHT)) { in ieee80211_assoc_link_elems()
1153 &assoc_data->link[link_id].ap_vht_cap, in ieee80211_assoc_link_elems()
1154 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1165 if (assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HT || in ieee80211_assoc_link_elems()
1167 assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_VHT)) in ieee80211_assoc_link_elems()
1168 assoc_data->link[link_id].conn_flags |= in ieee80211_assoc_link_elems()
1177 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HE)) { in ieee80211_assoc_link_elems()
1179 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1188 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_EHT)) in ieee80211_assoc_link_elems()
1191 if (link_id == assoc_data->assoc_link_id) in ieee80211_assoc_link_elems()
1198 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_EHT)) in ieee80211_assoc_link_elems()
1210 link->u.mgd.conn_flags = assoc_data->link[link_id].conn_flags; in ieee80211_assoc_link_elems()
1275 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_add_ml_elem() local
1327 if (!assoc_data->link[link_id].bss || in ieee80211_assoc_add_ml_elem()
1328 link_id == assoc_data->assoc_link_id) in ieee80211_assoc_add_ml_elem()
1331 extra_elems = assoc_data->link[link_id].elems; in ieee80211_assoc_add_ml_elem()
1332 extra_elems_len = assoc_data->link[link_id].elems_len; in ieee80211_assoc_add_ml_elem()
1342 skb_put_data(skb, assoc_data->link[link_id].addr, in ieee80211_assoc_add_ml_elem()
1379 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_send_assoc() local
1397 if (assoc_data->ie_len) in ieee80211_send_assoc()
1399 assoc_data->ie, in ieee80211_send_assoc()
1400 assoc_data->ie_len); in ieee80211_send_assoc()
1406 2 + assoc_data->ssid_len + /* SSID */ in ieee80211_send_assoc()
1407 assoc_data->ie_len + /* extra IEs */ in ieee80211_send_assoc()
1408 (assoc_data->fils_kek_len ? 16 /* AES-SIV */ : 0) + in ieee80211_send_assoc()
1412 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_send_assoc()
1423 size += assoc_data->link[link_id].elems_len; in ieee80211_send_assoc()
1477 link = sdata_dereference(sdata->link[assoc_data->assoc_link_id], sdata); in ieee80211_send_assoc()
1481 if (WARN_ON(!assoc_data->link[assoc_data->assoc_link_id].bss)) in ieee80211_send_assoc()
1504 listen_int = cpu_to_le16(assoc_data->s1g ? in ieee80211_send_assoc()
1507 if (!is_zero_ether_addr(assoc_data->prev_ap_addr)) { in ieee80211_send_assoc()
1514 assoc_data->prev_ap_addr, ETH_ALEN); in ieee80211_send_assoc()
1526 pos = skb_put(skb, 2 + assoc_data->ssid_len); in ieee80211_send_assoc()
1529 *pos++ = assoc_data->ssid_len; in ieee80211_send_assoc()
1530 memcpy(pos, assoc_data->ssid, assoc_data->ssid_len); in ieee80211_send_assoc()
1536 assoc_data->ie, in ieee80211_send_assoc()
1537 assoc_data->ie_len, in ieee80211_send_assoc()
1538 assoc_data->assoc_link_id, link, in ieee80211_send_assoc()
1543 if (assoc_data->ie_len) { in ieee80211_send_assoc()
1544 noffset = ieee80211_ie_split_vendor(assoc_data->ie, in ieee80211_send_assoc()
1545 assoc_data->ie_len, in ieee80211_send_assoc()
1547 skb_put_data(skb, assoc_data->ie + offset, noffset - offset); in ieee80211_send_assoc()
1551 if (assoc_data->wmm) { in ieee80211_send_assoc()
1552 if (assoc_data->uapsd) { in ieee80211_send_assoc()
1564 if (assoc_data->ie_len) { in ieee80211_send_assoc()
1565 noffset = assoc_data->ie_len; in ieee80211_send_assoc()
1566 skb_put_data(skb, assoc_data->ie + offset, noffset - offset); in ieee80211_send_assoc()
1569 if (assoc_data->fils_kek_len) { in ieee80211_send_assoc()
1570 ret = fils_encrypt_assoc_req(skb, assoc_data); in ieee80211_send_assoc()
2809 struct ieee80211_mgd_assoc_data *assoc_data, in ieee80211_set_associated() argument
2820 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
2824 assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) in ieee80211_set_associated()
2850 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
2853 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()
3537 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_destroy_assoc_data() local
3548 sta_info_destroy_addr(sdata, assoc_data->ap_addr); in ieee80211_destroy_assoc_data()
3564 ARRAY_SIZE(assoc_data->link)); in ieee80211_destroy_assoc_data()
3567 data.bss[i] = assoc_data->link[i].bss; in ieee80211_destroy_assoc_data()
3570 data.ap_mld_addr = assoc_data->ap_addr; in ieee80211_destroy_assoc_data()
3581 kfree(assoc_data); in ieee80211_destroy_assoc_data()
3582 sdata->u.mgd.assoc_data = NULL; in ieee80211_destroy_assoc_data()
3841 if (ifmgd->assoc_data && in ieee80211_rx_mgmt_deauth()
3842 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->ap_addr)) { in ieee80211_rx_mgmt_deauth()
3845 ifmgd->assoc_data->ap_addr, reason_code, in ieee80211_rx_mgmt_deauth()
4002 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_assoc_config_link() local
4009 .link_id = link_id == assoc_data->assoc_link_id ? -1 : link_id, in ieee80211_assoc_config_link()
4024 if (link_id == assoc_data->assoc_link_id) { in ieee80211_assoc_config_link()
4031 assoc_data->link[link_id].status = WLAN_STATUS_SUCCESS; in ieee80211_assoc_config_link()
4044 assoc_data->link[link_id].status = get_unaligned_le16(ptr + 2); in ieee80211_assoc_config_link()
4046 if (assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) { in ieee80211_assoc_config_link()
4048 assoc_data->link[link_id].status); in ieee80211_assoc_config_link()
4072 ((assoc_data->wmm && !elems->wmm_param) || in ieee80211_assoc_config_link()
4100 if (assoc_data->wmm && in ieee80211_assoc_config_link()
4971 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_success() local
4984 sta = sta_info_get(sdata, assoc_data->ap_addr); in ieee80211_assoc_success()
4990 if (!assoc_data->link[link_id].bss) in ieee80211_assoc_success()
4994 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5005 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_assoc_success()
5020 assoc_data->link[link_id].bss->bssid, in ieee80211_assoc_success()
5021 link_id == assoc_data->assoc_link_id ? in ieee80211_assoc_success()
5047 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5057 assoc_data->link[link_id].bss); in ieee80211_assoc_success()
5062 assoc_data->link[link_id].bss, in ieee80211_assoc_success()
5067 if (assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) { in ieee80211_assoc_success()
5073 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5114 ieee80211_set_associated(sdata, assoc_data, changed); in ieee80211_assoc_success()
5142 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_rx_mgmt_assoc_resp() local
5167 if (!assoc_data) in ieee80211_rx_mgmt_assoc_resp()
5170 if (!ether_addr_equal(assoc_data->ap_addr, mgmt->bssid) || in ieee80211_rx_mgmt_assoc_resp()
5171 !ether_addr_equal(assoc_data->ap_addr, mgmt->sa)) in ieee80211_rx_mgmt_assoc_resp()
5185 if (assoc_data->s1g) in ieee80211_rx_mgmt_assoc_resp()
5199 if (assoc_data->fils_kek_len && in ieee80211_rx_mgmt_assoc_resp()
5200 fils_decrypt_assoc_resp(sdata, (u8 *)mgmt, &len, assoc_data) < 0) in ieee80211_rx_mgmt_assoc_resp()
5212 else if (assoc_data->s1g) in ieee80211_rx_mgmt_assoc_resp()
5225 reassoc ? "Rea" : "A", assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5235 cfg80211_assoc_comeback(sdata->dev, assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5242 assoc_data->ap_addr, tu, ms); in ieee80211_rx_mgmt_assoc_resp()
5243 assoc_data->timeout = jiffies + msecs_to_jiffies(ms); in ieee80211_rx_mgmt_assoc_resp()
5244 assoc_data->timeout_started = true; in ieee80211_rx_mgmt_assoc_resp()
5246 run_again(sdata, assoc_data->timeout); in ieee80211_rx_mgmt_assoc_resp()
5252 assoc_data->ap_addr, status_code); in ieee80211_rx_mgmt_assoc_resp()
5269 assoc_data->ap_addr); in ieee80211_rx_mgmt_assoc_resp()
5285 if (memcmp(assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5290 assoc_data->ap_addr); in ieee80211_rx_mgmt_assoc_resp()
5318 if (!assoc_data->link[link_id].bss) in ieee80211_rx_mgmt_assoc_resp()
5321 resp.links[link_id].bss = assoc_data->link[link_id].bss; in ieee80211_rx_mgmt_assoc_resp()
5323 resp.links[link_id].status = assoc_data->link[link_id].status; in ieee80211_rx_mgmt_assoc_resp()
5657 if (ifmgd->assoc_data && ifmgd->assoc_data->need_beacon && in ieee80211_rx_mgmt_beacon()
5659 ieee80211_rx_our_beacon(bssid, ifmgd->assoc_data->link[0].bss)) { in ieee80211_rx_mgmt_beacon()
5660 parse_params.bss = ifmgd->assoc_data->link[0].bss; in ieee80211_rx_mgmt_beacon()
5670 ifmgd->assoc_data->need_beacon = false; in ieee80211_rx_mgmt_beacon()
5692 ifmgd->assoc_data->timeout = jiffies; in ieee80211_rx_mgmt_beacon()
5693 ifmgd->assoc_data->timeout_started = true; in ieee80211_rx_mgmt_beacon()
5694 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_rx_mgmt_beacon()
6148 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_do_assoc() local
6154 assoc_data->tries++; in ieee80211_do_assoc()
6155 if (assoc_data->tries > IEEE80211_ASSOC_MAX_TRIES) { in ieee80211_do_assoc()
6157 assoc_data->ap_addr); in ieee80211_do_assoc()
6164 assoc_data->link[assoc_data->assoc_link_id].bss); in ieee80211_do_assoc()
6170 assoc_data->ap_addr, assoc_data->tries, in ieee80211_do_assoc()
6177 assoc_data->timeout = jiffies + IEEE80211_ASSOC_TIMEOUT; in ieee80211_do_assoc()
6178 assoc_data->timeout_started = true; in ieee80211_do_assoc()
6179 run_again(sdata, assoc_data->timeout); in ieee80211_do_assoc()
6181 assoc_data->timeout = in ieee80211_do_assoc()
6184 assoc_data->timeout_started = true; in ieee80211_do_assoc()
6185 run_again(sdata, assoc_data->timeout); in ieee80211_do_assoc()
6231 } else if (ifmgd->assoc_data && in ieee80211_sta_work()
6235 ifmgd->assoc_data->timeout = in ieee80211_sta_work()
6237 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
6239 ifmgd->assoc_data->timeout = jiffies - 1; in ieee80211_sta_work()
6241 ifmgd->assoc_data->timeout_started = true; in ieee80211_sta_work()
6271 if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started && in ieee80211_sta_work()
6272 time_after(jiffies, ifmgd->assoc_data->timeout)) { in ieee80211_sta_work()
6273 if ((ifmgd->assoc_data->need_beacon && in ieee80211_sta_work()
6285 } else if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started) in ieee80211_sta_work()
6286 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
6432 if (ifmgd->auth_data || ifmgd->assoc_data) { in ieee80211_mgd_quiesce()
6435 ifmgd->assoc_data->ap_addr; in ieee80211_mgd_quiesce()
6446 if (ifmgd->assoc_data) in ieee80211_mgd_quiesce()
6580 if (sdata->u.mgd.assoc_data) in ieee80211_mgd_setup_link()
6582 sdata->u.mgd.assoc_data->link[link_id].addr); in ieee80211_mgd_setup_link()
6638 if (WARN_ON(!ifmgd->auth_data && !ifmgd->assoc_data)) { in ieee80211_prep_connection()
6824 if (ifmgd->assoc_data) in ieee80211_mgd_auth()
6946 struct ieee80211_mgd_assoc_data *assoc_data, in ieee80211_setup_assoc_link() argument
6960 cbss = assoc_data->link[link_id].bss; in ieee80211_setup_assoc_link()
6979 assoc_data->supp_rates = bss->supp_rates; in ieee80211_setup_assoc_link()
6980 assoc_data->supp_rates_len = bss->supp_rates_len; in ieee80211_setup_assoc_link()
6985 memcpy(assoc_data->ie_pos, req->links[link_id].elems, in ieee80211_setup_assoc_link()
6987 assoc_data->link[link_id].elems = assoc_data->ie_pos; in ieee80211_setup_assoc_link()
6988 assoc_data->link[link_id].elems_len = req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
6989 assoc_data->ie_pos += req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
6995 assoc_data->link[link_id].ap_ht_param = in ieee80211_setup_assoc_link()
7001 memcpy(&assoc_data->link[link_id].ap_vht_cap, vht_elem->data, in ieee80211_setup_assoc_link()
7119 struct ieee80211_mgd_assoc_data *assoc_data; in ieee80211_mgd_assoc() local
7128 size_t size = sizeof(*assoc_data) + req->ie_len; in ieee80211_mgd_assoc()
7137 assoc_data = kzalloc(size, GFP_KERNEL); in ieee80211_mgd_assoc()
7138 if (!assoc_data) in ieee80211_mgd_assoc()
7145 if (!ssid_elem || ssid_elem->datalen > sizeof(assoc_data->ssid)) { in ieee80211_mgd_assoc()
7147 kfree(assoc_data); in ieee80211_mgd_assoc()
7150 memcpy(assoc_data->ssid, ssid_elem->data, ssid_elem->datalen); in ieee80211_mgd_assoc()
7151 assoc_data->ssid_len = ssid_elem->datalen; in ieee80211_mgd_assoc()
7152 memcpy(vif_cfg->ssid, assoc_data->ssid, assoc_data->ssid_len); in ieee80211_mgd_assoc()
7153 vif_cfg->ssid_len = assoc_data->ssid_len; in ieee80211_mgd_assoc()
7162 ether_addr_copy(assoc_data->link[i].addr, in ieee80211_mgd_assoc()
7165 eth_random_addr(assoc_data->link[i].addr); in ieee80211_mgd_assoc()
7168 memcpy(assoc_data->link[0].addr, sdata->vif.addr, ETH_ALEN); in ieee80211_mgd_assoc()
7171 assoc_data->s1g = cbss->channel->band == NL80211_BAND_S1GHZ; in ieee80211_mgd_assoc()
7173 memcpy(assoc_data->ap_addr, in ieee80211_mgd_assoc()
7182 sdata->vif.cfg.ap_addr, assoc_data->ap_addr); in ieee80211_mgd_assoc()
7198 if (ifmgd->assoc_data) { in ieee80211_mgd_assoc()
7208 assoc_data->ap_addr) && in ieee80211_mgd_assoc()
7216 assoc_data->wmm = bss->wmm_used && in ieee80211_mgd_assoc()
7284 memcpy(assoc_data->ie, req->ie, req->ie_len); in ieee80211_mgd_assoc()
7285 assoc_data->ie_len = req->ie_len; in ieee80211_mgd_assoc()
7286 assoc_data->ie_pos = assoc_data->ie + assoc_data->ie_len; in ieee80211_mgd_assoc()
7288 assoc_data->ie_pos = assoc_data->ie; in ieee80211_mgd_assoc()
7297 memcpy(assoc_data->fils_kek, req->fils_kek, in ieee80211_mgd_assoc()
7299 assoc_data->fils_kek_len = req->fils_kek_len; in ieee80211_mgd_assoc()
7303 memcpy(assoc_data->fils_nonces, req->fils_nonces, in ieee80211_mgd_assoc()
7307 assoc_data->timeout = jiffies; in ieee80211_mgd_assoc()
7308 assoc_data->timeout_started = true; in ieee80211_mgd_assoc()
7310 assoc_data->assoc_link_id = assoc_link_id; in ieee80211_mgd_assoc()
7313 for (i = 0; i < ARRAY_SIZE(assoc_data->link); i++) { in ieee80211_mgd_assoc()
7314 assoc_data->link[i].conn_flags = conn_flags; in ieee80211_mgd_assoc()
7315 assoc_data->link[i].bss = req->links[i].bss; in ieee80211_mgd_assoc()
7323 assoc_data->link[0].conn_flags = conn_flags; in ieee80211_mgd_assoc()
7324 assoc_data->link[0].bss = cbss; in ieee80211_mgd_assoc()
7335 conn_flags |= ieee80211_setup_assoc_link(sdata, assoc_data, req, in ieee80211_mgd_assoc()
7347 assoc_data->uapsd = true; in ieee80211_mgd_assoc()
7350 assoc_data->uapsd = false; in ieee80211_mgd_assoc()
7355 memcpy(assoc_data->prev_ap_addr, req->prev_bssid, ETH_ALEN); in ieee80211_mgd_assoc()
7382 ifmgd->assoc_data = assoc_data; in ieee80211_mgd_assoc()
7384 for (i = 0; i < ARRAY_SIZE(assoc_data->link); i++) { in ieee80211_mgd_assoc()
7385 if (!assoc_data->link[i].bss) in ieee80211_mgd_assoc()
7387 if (i == assoc_data->assoc_link_id) in ieee80211_mgd_assoc()
7390 err = ieee80211_prep_channel(sdata, NULL, assoc_data->link[i].bss, in ieee80211_mgd_assoc()
7391 &assoc_data->link[i].conn_flags); in ieee80211_mgd_assoc()
7397 memcpy(sdata->vif.cfg.ap_addr, assoc_data->ap_addr, ETH_ALEN); in ieee80211_mgd_assoc()
7404 assoc_data->link[assoc_data->assoc_link_id].conn_flags = in ieee80211_mgd_assoc()
7420 assoc_data->timeout = TU_TO_EXP_TIME(req->bss->beacon_interval); in ieee80211_mgd_assoc()
7421 assoc_data->timeout_started = true; in ieee80211_mgd_assoc()
7422 assoc_data->need_beacon = true; in ieee80211_mgd_assoc()
7427 run_again(sdata, assoc_data->timeout); in ieee80211_mgd_assoc()
7434 ifmgd->assoc_data = NULL; in ieee80211_mgd_assoc()
7436 kfree(assoc_data); in ieee80211_mgd_assoc()
7470 if (ifmgd->assoc_data && in ieee80211_mgd_deauth()
7471 ether_addr_equal(ifmgd->assoc_data->ap_addr, req->bssid)) { in ieee80211_mgd_deauth()
7553 if (ifmgd->assoc_data) in ieee80211_mgd_stop()