Lines Matching refs:assoc_data

762 				      struct ieee80211_mgd_assoc_data *assoc_data)  in ieee80211_assoc_add_rates()  argument
770 if (assoc_data->supp_rates_len) { in ieee80211_assoc_add_rates()
778 assoc_data->supp_rates, in ieee80211_assoc_add_rates()
779 assoc_data->supp_rates_len, in ieee80211_assoc_add_rates()
961 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_link_elems() local
962 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_assoc_link_elems()
1016 ieee80211_assoc_add_rates(skb, width, sband, assoc_data); in ieee80211_assoc_link_elems()
1062 !(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HT)) { in ieee80211_assoc_link_elems()
1064 assoc_data->link[link_id].ap_ht_param, in ieee80211_assoc_link_elems()
1066 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1076 !(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_VHT)) { in ieee80211_assoc_link_elems()
1079 &assoc_data->link[link_id].ap_vht_cap, in ieee80211_assoc_link_elems()
1080 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1091 if (assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HT || in ieee80211_assoc_link_elems()
1093 assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_VHT)) in ieee80211_assoc_link_elems()
1094 assoc_data->link[link_id].conn_flags |= in ieee80211_assoc_link_elems()
1103 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_HE)) { in ieee80211_assoc_link_elems()
1105 assoc_data->link[link_id].conn_flags); in ieee80211_assoc_link_elems()
1114 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_EHT)) in ieee80211_assoc_link_elems()
1117 if (link_id == assoc_data->assoc_link_id) in ieee80211_assoc_link_elems()
1124 if (!(assoc_data->link[link_id].conn_flags & IEEE80211_CONN_DISABLE_EHT)) in ieee80211_assoc_link_elems()
1136 link->u.mgd.conn_flags = assoc_data->link[link_id].conn_flags; in ieee80211_assoc_link_elems()
1201 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_add_ml_elem() local
1253 if (!assoc_data->link[link_id].bss || in ieee80211_assoc_add_ml_elem()
1254 link_id == assoc_data->assoc_link_id) in ieee80211_assoc_add_ml_elem()
1257 extra_elems = assoc_data->link[link_id].elems; in ieee80211_assoc_add_ml_elem()
1258 extra_elems_len = assoc_data->link[link_id].elems_len; in ieee80211_assoc_add_ml_elem()
1268 skb_put_data(skb, assoc_data->link[link_id].addr, in ieee80211_assoc_add_ml_elem()
1305 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_send_assoc() local
1323 if (assoc_data->ie_len) in ieee80211_send_assoc()
1325 assoc_data->ie, in ieee80211_send_assoc()
1326 assoc_data->ie_len); in ieee80211_send_assoc()
1332 2 + assoc_data->ssid_len + /* SSID */ in ieee80211_send_assoc()
1333 assoc_data->ie_len + /* extra IEs */ in ieee80211_send_assoc()
1334 (assoc_data->fils_kek_len ? 16 /* AES-SIV */ : 0) + in ieee80211_send_assoc()
1338 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_send_assoc()
1349 size += assoc_data->link[link_id].elems_len; in ieee80211_send_assoc()
1403 link = sdata_dereference(sdata->link[assoc_data->assoc_link_id], sdata); in ieee80211_send_assoc()
1407 if (WARN_ON(!assoc_data->link[assoc_data->assoc_link_id].bss)) in ieee80211_send_assoc()
1430 listen_int = cpu_to_le16(assoc_data->s1g ? in ieee80211_send_assoc()
1433 if (!is_zero_ether_addr(assoc_data->prev_ap_addr)) { in ieee80211_send_assoc()
1440 assoc_data->prev_ap_addr, ETH_ALEN); in ieee80211_send_assoc()
1452 pos = skb_put(skb, 2 + assoc_data->ssid_len); in ieee80211_send_assoc()
1455 *pos++ = assoc_data->ssid_len; in ieee80211_send_assoc()
1456 memcpy(pos, assoc_data->ssid, assoc_data->ssid_len); in ieee80211_send_assoc()
1462 assoc_data->ie, in ieee80211_send_assoc()
1463 assoc_data->ie_len, in ieee80211_send_assoc()
1464 assoc_data->assoc_link_id, link, in ieee80211_send_assoc()
1469 if (assoc_data->ie_len) { in ieee80211_send_assoc()
1470 noffset = ieee80211_ie_split_vendor(assoc_data->ie, in ieee80211_send_assoc()
1471 assoc_data->ie_len, in ieee80211_send_assoc()
1473 skb_put_data(skb, assoc_data->ie + offset, noffset - offset); in ieee80211_send_assoc()
1477 if (assoc_data->wmm) { in ieee80211_send_assoc()
1478 if (assoc_data->uapsd) { in ieee80211_send_assoc()
1490 if (assoc_data->ie_len) { in ieee80211_send_assoc()
1491 noffset = assoc_data->ie_len; in ieee80211_send_assoc()
1492 skb_put_data(skb, assoc_data->ie + offset, noffset - offset); in ieee80211_send_assoc()
1495 if (assoc_data->fils_kek_len) { in ieee80211_send_assoc()
1496 ret = fils_encrypt_assoc_req(skb, assoc_data); in ieee80211_send_assoc()
2743 struct ieee80211_mgd_assoc_data *assoc_data, in ieee80211_set_associated() argument
2754 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
2783 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
3246 else if (ifmgd->assoc_data && ifmgd->assoc_data->link[0].bss) in ieee80211_ap_probereq_get()
3247 cbss = ifmgd->assoc_data->link[0].bss; in ieee80211_ap_probereq_get()
3469 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_destroy_assoc_data() local
3480 sta_info_destroy_addr(sdata, assoc_data->ap_addr); in ieee80211_destroy_assoc_data()
3496 ARRAY_SIZE(assoc_data->link)); in ieee80211_destroy_assoc_data()
3499 data.bss[i] = assoc_data->link[i].bss; in ieee80211_destroy_assoc_data()
3502 data.ap_mld_addr = assoc_data->ap_addr; in ieee80211_destroy_assoc_data()
3513 kfree(assoc_data); in ieee80211_destroy_assoc_data()
3514 sdata->u.mgd.assoc_data = NULL; in ieee80211_destroy_assoc_data()
3773 if (ifmgd->assoc_data && in ieee80211_rx_mgmt_deauth()
3774 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->ap_addr)) { in ieee80211_rx_mgmt_deauth()
3777 ifmgd->assoc_data->ap_addr, reason_code, in ieee80211_rx_mgmt_deauth()
3923 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_assoc_config_link() local
3966 ((assoc_data->wmm && !elems->wmm_param) || in ieee80211_assoc_config_link()
3993 if (assoc_data->wmm && in ieee80211_assoc_config_link()
4862 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_success() local
4874 sta = sta_info_get(sdata, assoc_data->ap_addr); in ieee80211_assoc_success()
4882 if (!assoc_data->link[link_id].bss) in ieee80211_assoc_success()
4886 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
4900 if (!assoc_data->link[link_id].bss) in ieee80211_assoc_success()
4911 assoc_data->link[link_id].bss->bssid); in ieee80211_assoc_success()
4918 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
4919 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_assoc_success()
4940 assoc_data->link[link_id].bss); in ieee80211_assoc_success()
4945 assoc_data->link[link_id].bss, in ieee80211_assoc_success()
4950 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
4988 ieee80211_set_associated(sdata, assoc_data, changed); in ieee80211_assoc_success()
5016 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_rx_mgmt_assoc_resp() local
5040 if (!assoc_data) in ieee80211_rx_mgmt_assoc_resp()
5043 if (!ether_addr_equal(assoc_data->ap_addr, mgmt->bssid) || in ieee80211_rx_mgmt_assoc_resp()
5044 !ether_addr_equal(assoc_data->ap_addr, mgmt->sa)) in ieee80211_rx_mgmt_assoc_resp()
5058 if (assoc_data->s1g) in ieee80211_rx_mgmt_assoc_resp()
5072 if (assoc_data->fils_kek_len && in ieee80211_rx_mgmt_assoc_resp()
5073 fils_decrypt_assoc_resp(sdata, (u8 *)mgmt, &len, assoc_data) < 0) in ieee80211_rx_mgmt_assoc_resp()
5085 else if (assoc_data->s1g) in ieee80211_rx_mgmt_assoc_resp()
5098 reassoc ? "Rea" : "A", assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5108 cfg80211_assoc_comeback(sdata->dev, assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5115 assoc_data->ap_addr, tu, ms); in ieee80211_rx_mgmt_assoc_resp()
5116 assoc_data->timeout = jiffies + msecs_to_jiffies(ms); in ieee80211_rx_mgmt_assoc_resp()
5117 assoc_data->timeout_started = true; in ieee80211_rx_mgmt_assoc_resp()
5119 run_again(sdata, assoc_data->timeout); in ieee80211_rx_mgmt_assoc_resp()
5125 assoc_data->ap_addr, status_code); in ieee80211_rx_mgmt_assoc_resp()
5142 assoc_data->ap_addr); in ieee80211_rx_mgmt_assoc_resp()
5158 if (memcmp(assoc_data->ap_addr, in ieee80211_rx_mgmt_assoc_resp()
5163 assoc_data->ap_addr); in ieee80211_rx_mgmt_assoc_resp()
5190 if (!assoc_data->link[link_id].bss) in ieee80211_rx_mgmt_assoc_resp()
5192 resp.links[link_id].bss = assoc_data->link[link_id].bss; in ieee80211_rx_mgmt_assoc_resp()
5484 if (ifmgd->assoc_data && ifmgd->assoc_data->need_beacon && in ieee80211_rx_mgmt_beacon()
5486 ieee80211_rx_our_beacon(bssid, ifmgd->assoc_data->link[0].bss)) { in ieee80211_rx_mgmt_beacon()
5487 parse_params.bss = ifmgd->assoc_data->link[0].bss; in ieee80211_rx_mgmt_beacon()
5497 ifmgd->assoc_data->need_beacon = false; in ieee80211_rx_mgmt_beacon()
5519 ifmgd->assoc_data->timeout = jiffies; in ieee80211_rx_mgmt_beacon()
5520 ifmgd->assoc_data->timeout_started = true; in ieee80211_rx_mgmt_beacon()
5521 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_rx_mgmt_beacon()
5955 struct ieee80211_mgd_assoc_data *assoc_data = sdata->u.mgd.assoc_data; in ieee80211_do_assoc() local
5961 assoc_data->tries++; in ieee80211_do_assoc()
5962 if (assoc_data->tries > IEEE80211_ASSOC_MAX_TRIES) { in ieee80211_do_assoc()
5964 assoc_data->ap_addr); in ieee80211_do_assoc()
5971 assoc_data->link[assoc_data->assoc_link_id].bss); in ieee80211_do_assoc()
5977 assoc_data->ap_addr, assoc_data->tries, in ieee80211_do_assoc()
5984 assoc_data->timeout = jiffies + IEEE80211_ASSOC_TIMEOUT; in ieee80211_do_assoc()
5985 assoc_data->timeout_started = true; in ieee80211_do_assoc()
5986 run_again(sdata, assoc_data->timeout); in ieee80211_do_assoc()
5988 assoc_data->timeout = in ieee80211_do_assoc()
5991 assoc_data->timeout_started = true; in ieee80211_do_assoc()
5992 run_again(sdata, assoc_data->timeout); in ieee80211_do_assoc()
6038 } else if (ifmgd->assoc_data && in ieee80211_sta_work()
6042 ifmgd->assoc_data->timeout = in ieee80211_sta_work()
6044 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
6046 ifmgd->assoc_data->timeout = jiffies - 1; in ieee80211_sta_work()
6048 ifmgd->assoc_data->timeout_started = true; in ieee80211_sta_work()
6078 if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started && in ieee80211_sta_work()
6079 time_after(jiffies, ifmgd->assoc_data->timeout)) { in ieee80211_sta_work()
6080 if ((ifmgd->assoc_data->need_beacon && in ieee80211_sta_work()
6092 } else if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started) in ieee80211_sta_work()
6093 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
6239 if (ifmgd->auth_data || ifmgd->assoc_data) { in ieee80211_mgd_quiesce()
6242 ifmgd->assoc_data->ap_addr; in ieee80211_mgd_quiesce()
6253 if (ifmgd->assoc_data) in ieee80211_mgd_quiesce()
6387 if (sdata->u.mgd.assoc_data) in ieee80211_mgd_setup_link()
6389 sdata->u.mgd.assoc_data->link[link_id].addr); in ieee80211_mgd_setup_link()
6445 if (WARN_ON(!ifmgd->auth_data && !ifmgd->assoc_data)) { in ieee80211_prep_connection()
6631 if (ifmgd->assoc_data) in ieee80211_mgd_auth()
6751 struct ieee80211_mgd_assoc_data *assoc_data, in ieee80211_setup_assoc_link() argument
6765 cbss = assoc_data->link[link_id].bss; in ieee80211_setup_assoc_link()
6784 assoc_data->supp_rates = bss->supp_rates; in ieee80211_setup_assoc_link()
6785 assoc_data->supp_rates_len = bss->supp_rates_len; in ieee80211_setup_assoc_link()
6790 memcpy(assoc_data->ie_pos, req->links[link_id].elems, in ieee80211_setup_assoc_link()
6792 assoc_data->link[link_id].elems = assoc_data->ie_pos; in ieee80211_setup_assoc_link()
6793 assoc_data->link[link_id].elems_len = req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
6794 assoc_data->ie_pos += req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
6800 assoc_data->link[link_id].ap_ht_param = in ieee80211_setup_assoc_link()
6806 memcpy(&assoc_data->link[link_id].ap_vht_cap, vht_elem->data, in ieee80211_setup_assoc_link()
6896 struct ieee80211_mgd_assoc_data *assoc_data; in ieee80211_mgd_assoc() local
6905 size_t size = sizeof(*assoc_data) + req->ie_len; in ieee80211_mgd_assoc()
6914 assoc_data = kzalloc(size, GFP_KERNEL); in ieee80211_mgd_assoc()
6915 if (!assoc_data) in ieee80211_mgd_assoc()
6922 if (!ssid_elem || ssid_elem->datalen > sizeof(assoc_data->ssid)) { in ieee80211_mgd_assoc()
6924 kfree(assoc_data); in ieee80211_mgd_assoc()
6927 memcpy(assoc_data->ssid, ssid_elem->data, ssid_elem->datalen); in ieee80211_mgd_assoc()
6928 assoc_data->ssid_len = ssid_elem->datalen; in ieee80211_mgd_assoc()
6929 memcpy(vif_cfg->ssid, assoc_data->ssid, assoc_data->ssid_len); in ieee80211_mgd_assoc()
6930 vif_cfg->ssid_len = assoc_data->ssid_len; in ieee80211_mgd_assoc()
6939 ether_addr_copy(assoc_data->link[i].addr, in ieee80211_mgd_assoc()
6942 eth_random_addr(assoc_data->link[i].addr); in ieee80211_mgd_assoc()
6945 memcpy(assoc_data->link[0].addr, sdata->vif.addr, ETH_ALEN); in ieee80211_mgd_assoc()
6948 assoc_data->s1g = cbss->channel->band == NL80211_BAND_S1GHZ; in ieee80211_mgd_assoc()
6950 memcpy(assoc_data->ap_addr, in ieee80211_mgd_assoc()
6959 sdata->vif.cfg.ap_addr, assoc_data->ap_addr); in ieee80211_mgd_assoc()
6975 if (ifmgd->assoc_data) { in ieee80211_mgd_assoc()
6985 assoc_data->ap_addr); in ieee80211_mgd_assoc()
6992 assoc_data->wmm = bss->wmm_used && in ieee80211_mgd_assoc()
7060 memcpy(assoc_data->ie, req->ie, req->ie_len); in ieee80211_mgd_assoc()
7061 assoc_data->ie_len = req->ie_len; in ieee80211_mgd_assoc()
7062 assoc_data->ie_pos = assoc_data->ie + assoc_data->ie_len; in ieee80211_mgd_assoc()
7064 assoc_data->ie_pos = assoc_data->ie; in ieee80211_mgd_assoc()
7073 memcpy(assoc_data->fils_kek, req->fils_kek, in ieee80211_mgd_assoc()
7075 assoc_data->fils_kek_len = req->fils_kek_len; in ieee80211_mgd_assoc()
7079 memcpy(assoc_data->fils_nonces, req->fils_nonces, in ieee80211_mgd_assoc()
7083 assoc_data->timeout = jiffies; in ieee80211_mgd_assoc()
7084 assoc_data->timeout_started = true; in ieee80211_mgd_assoc()
7086 assoc_data->assoc_link_id = assoc_link_id; in ieee80211_mgd_assoc()
7089 for (i = 0; i < ARRAY_SIZE(assoc_data->link); i++) { in ieee80211_mgd_assoc()
7090 assoc_data->link[i].conn_flags = conn_flags; in ieee80211_mgd_assoc()
7091 assoc_data->link[i].bss = req->links[i].bss; in ieee80211_mgd_assoc()
7099 assoc_data->link[0].conn_flags = conn_flags; in ieee80211_mgd_assoc()
7100 assoc_data->link[0].bss = cbss; in ieee80211_mgd_assoc()
7111 conn_flags |= ieee80211_setup_assoc_link(sdata, assoc_data, req, in ieee80211_mgd_assoc()
7123 assoc_data->uapsd = true; in ieee80211_mgd_assoc()
7126 assoc_data->uapsd = false; in ieee80211_mgd_assoc()
7131 memcpy(assoc_data->prev_ap_addr, req->prev_bssid, ETH_ALEN); in ieee80211_mgd_assoc()
7158 ifmgd->assoc_data = assoc_data; in ieee80211_mgd_assoc()
7160 for (i = 0; i < ARRAY_SIZE(assoc_data->link); i++) { in ieee80211_mgd_assoc()
7161 if (!assoc_data->link[i].bss) in ieee80211_mgd_assoc()
7163 if (i == assoc_data->assoc_link_id) in ieee80211_mgd_assoc()
7166 err = ieee80211_prep_channel(sdata, NULL, assoc_data->link[i].bss, in ieee80211_mgd_assoc()
7167 &assoc_data->link[i].conn_flags); in ieee80211_mgd_assoc()
7173 memcpy(sdata->vif.cfg.ap_addr, assoc_data->ap_addr, ETH_ALEN); in ieee80211_mgd_assoc()
7180 assoc_data->link[assoc_data->assoc_link_id].conn_flags = in ieee80211_mgd_assoc()
7196 assoc_data->timeout = TU_TO_EXP_TIME(req->bss->beacon_interval); in ieee80211_mgd_assoc()
7197 assoc_data->timeout_started = true; in ieee80211_mgd_assoc()
7198 assoc_data->need_beacon = true; in ieee80211_mgd_assoc()
7203 run_again(sdata, assoc_data->timeout); in ieee80211_mgd_assoc()
7210 ifmgd->assoc_data = NULL; in ieee80211_mgd_assoc()
7212 kfree(assoc_data); in ieee80211_mgd_assoc()
7246 if (ifmgd->assoc_data && in ieee80211_mgd_deauth()
7247 ether_addr_equal(ifmgd->assoc_data->ap_addr, req->bssid)) { in ieee80211_mgd_deauth()
7329 if (ifmgd->assoc_data) in ieee80211_mgd_stop()