Lines Matching refs:link_id
347 int link_id, in ieee80211_verify_peer_he_mcs_support() argument
375 link_id_info(sdata, link_id, in ieee80211_verify_peer_he_mcs_support()
421 link_id_info(sdata, link_id, in ieee80211_verify_peer_he_mcs_support()
883 struct cfg80211_bss *cbss, int link_id, in ieee80211_determine_chan_mode() argument
892 .link_id = -1, in ieee80211_determine_chan_mode()
925 mlme_link_id_dbg(sdata, link_id, "determined AP %pM to be %s\n", in ieee80211_determine_chan_mode()
944 link_id_info(sdata, link_id, in ieee80211_determine_chan_mode()
1002 link_id_info(sdata, link_id, in ieee80211_determine_chan_mode()
1039 link_id_info(sdata, link_id, in ieee80211_determine_chan_mode()
1043 (!ieee80211_verify_peer_he_mcs_support(sdata, link_id, in ieee80211_determine_chan_mode()
1049 link_id_info(sdata, link_id, in ieee80211_determine_chan_mode()
1060 link_id_info(sdata, link_id, in ieee80211_determine_chan_mode()
1070 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_chan_mode()
1527 unsigned int link_id, in ieee80211_add_link_elems() argument
1533 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_add_link_elems()
1633 assoc_data->link[link_id].conn.mode >= IEEE80211_CONN_MODE_HT) { in ieee80211_add_link_elems()
1635 assoc_data->link[link_id].ap_ht_param, in ieee80211_add_link_elems()
1637 &assoc_data->link[link_id].conn); in ieee80211_add_link_elems()
1647 assoc_data->link[link_id].conn.mode >= IEEE80211_CONN_MODE_VHT && in ieee80211_add_link_elems()
1651 &assoc_data->link[link_id].ap_vht_cap, in ieee80211_add_link_elems()
1652 &assoc_data->link[link_id].conn); in ieee80211_add_link_elems()
1664 if (assoc_data->link[link_id].conn.mode >= IEEE80211_CONN_MODE_HE) { in ieee80211_add_link_elems()
1666 &assoc_data->link[link_id].conn); in ieee80211_add_link_elems()
1676 if (assoc_data->link[link_id].conn.mode >= IEEE80211_CONN_MODE_EHT) in ieee80211_add_link_elems()
1679 if (link_id == assoc_data->assoc_link_id) in ieee80211_add_link_elems()
1686 if (assoc_data->link[link_id].conn.mode >= IEEE80211_CONN_MODE_EHT) in ieee80211_add_link_elems()
1688 &assoc_data->link[link_id].conn); in ieee80211_add_link_elems()
1772 unsigned int link_id; in ieee80211_assoc_add_ml_elem() local
1809 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_assoc_add_ml_elem()
1817 if (!assoc_data->link[link_id].bss || in ieee80211_assoc_add_ml_elem()
1818 link_id == assoc_data->assoc_link_id) in ieee80211_assoc_add_ml_elem()
1821 extra_elems = assoc_data->link[link_id].elems; in ieee80211_assoc_add_ml_elem()
1822 extra_elems_len = assoc_data->link[link_id].elems_len; in ieee80211_assoc_add_ml_elem()
1827 ctrl = cpu_to_le16(link_id | in ieee80211_assoc_add_ml_elem()
1832 skb_put_data(skb, assoc_data->link[link_id].addr, in ieee80211_assoc_add_ml_elem()
1848 link_id, NULL, in ieee80211_assoc_add_ml_elem()
1931 unsigned int link_id, n_links = 0; in ieee80211_send_assoc() local
1952 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_send_assoc()
1953 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_send_assoc()
1954 size_t elems_len = assoc_data->link[link_id].elems_len; in ieee80211_send_assoc()
2112 info.link_id = assoc_data->assoc_link_id; in ieee80211_send_assoc()
2229 if (!ieee80211_vif_link_active(&sdata->vif, link->link_id)) { in ieee80211_csa_switch_work()
2232 link->link_id); in ieee80211_csa_switch_work()
2318 link->link_id); in ieee80211_chswitch_post_beacon()
2322 unsigned int link_id) in ieee80211_chswitch_done() argument
2326 trace_api_chswitch_done(sdata, success, link_id); in ieee80211_chswitch_done()
2333 link_id); in ieee80211_chswitch_done()
2338 rcu_dereference(sdata->link[link_id]); in ieee80211_chswitch_done()
2392 int link_id; in ieee80211_sta_csa_rnr_iter() local
2405 link_id = le16_get_bits(ti->mld_params.params, in ieee80211_sta_csa_rnr_iter()
2407 if (link_id != data->link->link_id) in ieee80211_sta_csa_rnr_iter()
2499 .link_id = link->link_id, in ieee80211_sta_process_chanswitch()
2577 link->link_id)) in ieee80211_sta_process_chanswitch()
2682 if (ieee80211_vif_link_active(&sdata->vif, link->link_id) && !conf) { in ieee80211_sta_process_chanswitch()
2729 link->link_id, csa_ie.count, in ieee80211_sta_process_chanswitch()
2738 if (ieee80211_vif_link_active(&sdata->vif, link->link_id) && in ieee80211_sta_process_chanswitch()
2785 int link_id; in ieee80211_sta_bss_param_ch_cnt_iter() local
2798 link_id = le16_get_bits(ti->mld_params.params, in ieee80211_sta_bss_param_ch_cnt_iter()
2805 link_id < ARRAY_SIZE(sdata->link)) { in ieee80211_sta_bss_param_ch_cnt_iter()
2807 sdata_dereference(sdata->link[link_id], sdata); in ieee80211_sta_bss_param_ch_cnt_iter()
2825 .reporting_link_id = bss_conf->link_id, in ieee80211_mgd_update_bss_param_ch_cnt()
2849 bss_conf->link_id; in ieee80211_mgd_update_bss_param_ch_cnt()
3247 if (sdata->wdev.links[link->link_id].cac_started) { in ieee80211_dfs_cac_timer_work()
3251 GFP_KERNEL, link->link_id); in ieee80211_dfs_cac_timer_work()
3645 unsigned int link_id; in ieee80211_set_associated() local
3651 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_set_associated()
3652 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
3656 assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) in ieee80211_set_associated()
3660 !(ieee80211_vif_usable_links(&sdata->vif) & BIT(link_id))) in ieee80211_set_associated()
3663 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_set_associated()
3667 changed[link_id] |= ieee80211_link_set_associated(link, cbss); in ieee80211_set_associated()
3682 for (link_id = 0; in ieee80211_set_associated()
3683 link_id < IEEE80211_MLD_MAX_NUM_LINKS; in ieee80211_set_associated()
3684 link_id++) { in ieee80211_set_associated()
3686 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_set_associated()
3689 !(BIT(link_id) & in ieee80211_set_associated()
3691 assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) in ieee80211_set_associated()
3694 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_set_associated()
3699 changed[link_id]); in ieee80211_set_associated()
3738 u8 link_id; in ieee80211_ml_reconf_reset() local
3740 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; in ieee80211_ml_reconf_reset()
3741 link_id++) in ieee80211_ml_reconf_reset()
3742 done_data.links[link_id].bss = in ieee80211_ml_reconf_reset()
3743 add_links_data->link[link_id].bss; in ieee80211_ml_reconf_reset()
3759 unsigned int link_id; in ieee80211_set_disassoc() local
3764 .link_id = ffs(sdata->vif.active_links) - 1, in ieee80211_set_disassoc()
3919 for (link_id = 0; link_id < ARRAY_SIZE(sdata->link); link_id++) { in ieee80211_set_disassoc()
3922 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_set_disassoc()
4258 for (unsigned int link_id = 0; in __ieee80211_disconnect() local
4259 link_id < ARRAY_SIZE(sdata->link); in __ieee80211_disconnect()
4260 link_id++) { in __ieee80211_disconnect()
4263 if (!ieee80211_vif_link_active(&sdata->vif, link_id)) in __ieee80211_disconnect()
4266 link = sdata_dereference(sdata->link[link_id], sdata); in __ieee80211_disconnect()
4278 unsigned int link_id; in __ieee80211_disconnect() local
4287 for (link_id = 0; in __ieee80211_disconnect()
4288 link_id < ARRAY_SIZE(sdata->link); in __ieee80211_disconnect()
4289 link_id++) { in __ieee80211_disconnect()
4292 link = sdata_dereference(sdata->link[link_id], sdata); in __ieee80211_disconnect()
4496 .link_id = auth_data->link_id, in ieee80211_auth_challenge()
4851 unsigned int link_id = link->link_id; in ieee80211_assoc_config_link() local
4856 .link_id = link_id == assoc_data->assoc_link_id ? -1 : link_id, in ieee80211_assoc_config_link()
4874 if (link_id == assoc_data->assoc_link_id) { in ieee80211_assoc_config_link()
4881 assoc_data->link[link_id].status = WLAN_STATUS_SUCCESS; in ieee80211_assoc_config_link()
4891 bss_conf->bss_param_ch_cnt_link_id = link_id; in ieee80211_assoc_config_link()
4908 assoc_data->link[link_id].status = get_unaligned_le16(ptr + 2); in ieee80211_assoc_config_link()
4912 bss_conf->bss_param_ch_cnt_link_id = link_id; in ieee80211_assoc_config_link()
4914 if (assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) { in ieee80211_assoc_config_link()
4916 assoc_data->link[link_id].status); in ieee80211_assoc_config_link()
4962 parse_params.link_id = -1; in ieee80211_assoc_config_link()
5035 link_id == assoc_data->assoc_link_id, in ieee80211_assoc_config_link()
5398 bool wmm_used, int link_id, in ieee80211_determine_our_sta_mode() argument
5421 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5427 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5447 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5462 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5472 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5488 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5493 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5508 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5513 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5521 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5537 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5544 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5553 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5564 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5570 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5577 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5591 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5595 mlme_link_id_dbg(sdata, link_id, in ieee80211_determine_our_sta_mode()
5609 req->link_id > 0 ? req->link_id : 0, in ieee80211_determine_our_sta_mode_auth()
5617 bool wmm_used, int link_id, in ieee80211_determine_our_sta_mode_assoc() argument
5624 ieee80211_determine_our_sta_mode(sdata, sband, req, wmm_used, link_id, in ieee80211_determine_our_sta_mode_assoc()
5652 int link_id, in ieee80211_prep_channel() argument
5667 elems = ieee80211_determine_chan_mode(sdata, conn, cbss, link_id, in ieee80211_prep_channel()
5780 unsigned int link_id; in ieee80211_assoc_success() local
5798 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_assoc_success()
5799 if (!assoc_data->link[link_id].bss) in ieee80211_assoc_success()
5802 valid_links |= BIT(link_id); in ieee80211_assoc_success()
5803 if (assoc_data->link[link_id].disabled) in ieee80211_assoc_success()
5804 dormant_links |= BIT(link_id); in ieee80211_assoc_success()
5806 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5807 err = ieee80211_sta_allocate_link(sta, link_id); in ieee80211_assoc_success()
5816 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_assoc_success()
5817 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_assoc_success()
5824 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_assoc_success()
5832 assoc_data->link[link_id].bss->bssid, in ieee80211_assoc_success()
5833 link_id == assoc_data->assoc_link_id ? in ieee80211_assoc_success()
5836 link_sta = rcu_dereference_protected(sta->link[link_id], in ieee80211_assoc_success()
5859 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5860 link->u.mgd.conn = assoc_data->link[link_id].conn; in ieee80211_assoc_success()
5862 err = ieee80211_prep_channel(sdata, link, link_id, cbss, in ieee80211_assoc_success()
5872 assoc_data->link[link_id].bss); in ieee80211_assoc_success()
5877 assoc_data->link[link_id].bss, in ieee80211_assoc_success()
5879 &changed[link_id])) in ieee80211_assoc_success()
5882 if (assoc_data->link[link_id].status != WLAN_STATUS_SUCCESS) { in ieee80211_assoc_success()
5883 valid_links &= ~BIT(link_id); in ieee80211_assoc_success()
5884 ieee80211_sta_remove_link(sta, link_id); in ieee80211_assoc_success()
5888 if (link_id != assoc_data->assoc_link_id) { in ieee80211_assoc_success()
5889 err = ieee80211_sta_activate_link(sta, link_id); in ieee80211_assoc_success()
5958 .link_id = -1, in ieee80211_rx_mgmt_assoc_resp()
5975 unsigned int link_id; in ieee80211_rx_mgmt_assoc_resp() local
5982 info.link_id = assoc_data->assoc_link_id; in ieee80211_rx_mgmt_assoc_resp()
6127 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_rx_mgmt_assoc_resp()
6130 if (!assoc_data->link[link_id].bss) in ieee80211_rx_mgmt_assoc_resp()
6133 resp.links[link_id].bss = assoc_data->link[link_id].bss; in ieee80211_rx_mgmt_assoc_resp()
6134 ether_addr_copy(resp.links[link_id].addr, in ieee80211_rx_mgmt_assoc_resp()
6135 assoc_data->link[link_id].addr); in ieee80211_rx_mgmt_assoc_resp()
6136 resp.links[link_id].status = assoc_data->link[link_id].status; in ieee80211_rx_mgmt_assoc_resp()
6138 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_rx_mgmt_assoc_resp()
6438 u8 link_id; in ieee80211_ml_reconfiguration() local
6461 link_id = control & IEEE80211_MLE_STA_RECONF_CONTROL_LINK_ID; in ieee80211_ml_reconfiguration()
6463 removed_links |= BIT(link_id); in ieee80211_ml_reconfiguration()
6476 link_removal_timeout[link_id] = get_unaligned_le16(pos); in ieee80211_ml_reconfiguration()
6491 for_each_set_bit(link_id, &removed_links, IEEE80211_MLD_MAX_NUM_LINKS) { in ieee80211_ml_reconfiguration()
6493 sdata_dereference(sdata->vif.link_conf[link_id], sdata); in ieee80211_ml_reconfiguration()
6497 removed_links &= ~BIT(link_id); in ieee80211_ml_reconfiguration()
6501 if (link_removal_timeout[link_id] < 1) in ieee80211_ml_reconfiguration()
6505 (link_removal_timeout[link_id] - 1); in ieee80211_ml_reconfiguration()
6793 int link_id; in ieee80211_mgd_check_cross_link_csa() local
6812 link_id = le16_get_bits(prof->control, in ieee80211_mgd_check_cross_link_csa()
6815 if (link_id == reporting_link_id || in ieee80211_mgd_check_cross_link_csa()
6816 link_id >= IEEE80211_MLD_MAX_NUM_LINKS) in ieee80211_mgd_check_cross_link_csa()
6819 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_mgd_check_cross_link_csa()
6829 sta_profiles[link_id] = sub; in ieee80211_mgd_check_cross_link_csa()
6830 sta_profiles_len[link_id] = len; in ieee80211_mgd_check_cross_link_csa()
6833 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_mgd_check_cross_link_csa()
6839 if (link_id == reporting_link_id) in ieee80211_mgd_check_cross_link_csa()
6842 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_mgd_check_cross_link_csa()
6846 if (!sta_profiles[link_id]) { in ieee80211_mgd_check_cross_link_csa()
6852 len = cfg80211_defragment_element(sta_profiles[link_id], in ieee80211_mgd_check_cross_link_csa()
6854 (void *)sta_profiles[link_id], in ieee80211_mgd_check_cross_link_csa()
6855 sta_profiles_len[link_id], in ieee80211_mgd_check_cross_link_csa()
6857 if (WARN_ON(len != sta_profiles_len[link_id])) in ieee80211_mgd_check_cross_link_csa()
6860 prof = (void *)sta_profiles[link_id]; in ieee80211_mgd_check_cross_link_csa()
6934 .link_id = -1, in ieee80211_rx_mgmt_beacon()
7146 ieee80211_mgd_check_cross_link_csa(sdata, rx_status->link_id, elems); in ieee80211_rx_mgmt_beacon()
7188 link_sta = rcu_dereference_protected(sta->link[link->link_id], in ieee80211_rx_mgmt_beacon()
7694 link = sdata_dereference(sdata->link[rx_status->link_id], in ieee80211_sta_rx_queued_mgmt()
7851 info.link_id = auth_data->link_id; in ieee80211_auth()
8352 unsigned int link_id = link->link_id; in ieee80211_mgd_setup_link() local
8374 sdata->u.mgd.assoc_data->link[link_id].addr); in ieee80211_mgd_setup_link()
8377 sdata->u.mgd.reconf.add_links_data->link[link_id].addr); in ieee80211_mgd_setup_link()
8397 struct cfg80211_bss *cbss, s8 link_id, in ieee80211_prep_connection() argument
8412 if (link_id >= 0) { in ieee80211_prep_connection()
8416 err = ieee80211_vif_set_links(sdata, BIT(link_id), 0); in ieee80211_prep_connection()
8422 link_id = 0; in ieee80211_prep_connection()
8429 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_prep_connection()
8455 link_id, cbss->bssid, in ieee80211_prep_connection()
8486 link_sta = rcu_dereference(new_sta->link[link_id]); in ieee80211_prep_connection()
8539 err = ieee80211_prep_channel(sdata, link, link->link_id, cbss, in ieee80211_prep_connection()
8740 auth_data->link_id = req->link_id; in ieee80211_mgd_auth()
8760 ifmgd->auth_data->link_id == req->link_id; in ieee80211_mgd_auth()
8829 err = ieee80211_prep_connection(sdata, req->bss, req->link_id, in ieee80211_mgd_auth()
8836 if (req->link_id >= 0) in ieee80211_mgd_auth()
8837 link = sdata_dereference(sdata->link[req->link_id], sdata); in ieee80211_mgd_auth()
8876 unsigned int link_id) in ieee80211_setup_assoc_link() argument
8885 cbss = assoc_data->link[link_id].bss; in ieee80211_setup_assoc_link()
8895 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_setup_assoc_link()
8906 if (req->links[link_id].elems_len) { in ieee80211_setup_assoc_link()
8907 memcpy(assoc_data->ie_pos, req->links[link_id].elems, in ieee80211_setup_assoc_link()
8908 req->links[link_id].elems_len); in ieee80211_setup_assoc_link()
8909 assoc_data->link[link_id].elems = assoc_data->ie_pos; in ieee80211_setup_assoc_link()
8910 assoc_data->link[link_id].elems_len = req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
8911 assoc_data->ie_pos += req->links[link_id].elems_len; in ieee80211_setup_assoc_link()
8993 int link_id) in ieee80211_mgd_get_ap_ht_vht_capa() argument
8995 struct cfg80211_bss *cbss = assoc_data->link[link_id].bss; in ieee80211_mgd_get_ap_ht_vht_capa()
9005 if (assoc_data->link[link_id].conn.mode < IEEE80211_CONN_MODE_HT) in ieee80211_mgd_get_ap_ht_vht_capa()
9011 mlme_link_id_dbg(sdata, link_id, "no HT operation on BSS %pM\n", in ieee80211_mgd_get_ap_ht_vht_capa()
9016 assoc_data->link[link_id].ap_ht_param = in ieee80211_mgd_get_ap_ht_vht_capa()
9020 if (assoc_data->link[link_id].conn.mode < IEEE80211_CONN_MODE_VHT) in ieee80211_mgd_get_ap_ht_vht_capa()
9036 mlme_link_id_dbg(sdata, link_id, "no VHT capa on BSS %pM\n", in ieee80211_mgd_get_ap_ht_vht_capa()
9041 memcpy(&assoc_data->link[link_id].ap_vht_cap, elem->data, in ieee80211_mgd_get_ap_ht_vht_capa()
9054 unsigned int assoc_link_id = req->link_id < 0 ? 0 : req->link_id; in ieee80211_mgd_assoc()
9071 if (sdata->u.mgd.use_4addr && req->link_id >= 0) in ieee80211_mgd_assoc()
9078 cbss = req->link_id < 0 ? req->bss : req->links[req->link_id].bss; in ieee80211_mgd_assoc()
9139 ifmgd->auth_data->link_id == req->link_id; in ieee80211_mgd_assoc()
9383 err = ieee80211_prep_connection(sdata, cbss, req->link_id, in ieee80211_mgd_assoc()
9446 info.link_id = ifmgd->auth_data->link_id; in ieee80211_mgd_deauth()
9467 info.link_id = ifmgd->assoc_data->assoc_link_id; in ieee80211_mgd_deauth()
9654 unsigned int link_id; in ieee80211_process_ml_reconf_resp() local
9682 link_id = *pos; in ieee80211_process_ml_reconf_resp()
9684 if (!(link_mask & BIT(link_id))) { in ieee80211_process_ml_reconf_resp()
9687 link_id, sta_changed_links); in ieee80211_process_ml_reconf_resp()
9694 link_mask &= ~BIT(link_id); in ieee80211_process_ml_reconf_resp()
9702 link_id, status); in ieee80211_process_ml_reconf_resp()
9708 if (sdata->u.mgd.reconf.removed_links & BIT(link_id)) in ieee80211_process_ml_reconf_resp()
9714 sdata->u.mgd.reconf.added_links &= ~BIT(link_id); in ieee80211_process_ml_reconf_resp()
9751 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_process_ml_reconf_resp()
9752 if (!add_links_data->link[link_id].bss || in ieee80211_process_ml_reconf_resp()
9753 !(sdata->u.mgd.reconf.added_links & BIT(link_id))) in ieee80211_process_ml_reconf_resp()
9757 valid_links |= BIT(link_id); in ieee80211_process_ml_reconf_resp()
9758 if (ieee80211_sta_allocate_link(sta, link_id)) in ieee80211_process_ml_reconf_resp()
9765 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_process_ml_reconf_resp()
9766 struct cfg80211_bss *cbss = add_links_data->link[link_id].bss; in ieee80211_process_ml_reconf_resp()
9774 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_process_ml_reconf_resp()
9780 add_links_data->link[link_id].addr, in ieee80211_process_ml_reconf_resp()
9781 add_links_data->link[link_id].bss->bssid); in ieee80211_process_ml_reconf_resp()
9783 link_sta = rcu_dereference_protected(sta->link[link_id], in ieee80211_process_ml_reconf_resp()
9806 link->u.mgd.conn = add_links_data->link[link_id].conn; in ieee80211_process_ml_reconf_resp()
9807 if (ieee80211_prep_channel(sdata, link, link_id, cbss, in ieee80211_process_ml_reconf_resp()
9815 add_links_data->link[link_id].bss)) in ieee80211_process_ml_reconf_resp()
9819 add_links_data->link[link_id].bss, in ieee80211_process_ml_reconf_resp()
9828 if (add_links_data->link[link_id].status != WLAN_STATUS_SUCCESS) in ieee80211_process_ml_reconf_resp()
9832 if (ieee80211_sta_activate_link(sta, link_id)) in ieee80211_process_ml_reconf_resp()
9839 link_mask |= BIT(link_id); in ieee80211_process_ml_reconf_resp()
9857 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) in ieee80211_process_ml_reconf_resp()
9858 done_data.links[link_id].bss = add_links_data->link[link_id].bss; in ieee80211_process_ml_reconf_resp()
9883 unsigned int link_id; in ieee80211_build_ml_reconf_req() local
9926 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_build_ml_reconf_req()
9930 if (removed_links & BIT(link_id)) { in ieee80211_build_ml_reconf_req()
9936 if (!add_links_data || !add_links_data->link[link_id].bss) in ieee80211_build_ml_reconf_req()
9939 elems_len = add_links_data->link[link_id].elems_len; in ieee80211_build_ml_reconf_req()
9940 cbss = add_links_data->link[link_id].bss; in ieee80211_build_ml_reconf_req()
10011 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; link_id++) { in ieee80211_build_ml_reconf_req()
10017 if (!(removed_links & BIT(link_id)) && in ieee80211_build_ml_reconf_req()
10018 (!add_links_data || !add_links_data->link[link_id].bss)) in ieee80211_build_ml_reconf_req()
10021 ctrl = link_id | in ieee80211_build_ml_reconf_req()
10024 if (removed_links & BIT(link_id)) { in ieee80211_build_ml_reconf_req()
10026 sdata_dereference(sdata->vif.link_conf[link_id], in ieee80211_build_ml_reconf_req()
10035 addr = add_links_data->link[link_id].addr; in ieee80211_build_ml_reconf_req()
10048 if (!(removed_links & BIT(link_id))) { in ieee80211_build_ml_reconf_req()
10063 add_links_data->link[link_id].elems, in ieee80211_build_ml_reconf_req()
10064 add_links_data->link[link_id].elems_len, in ieee80211_build_ml_reconf_req()
10065 link_id, NULL, in ieee80211_build_ml_reconf_req()
10069 if (add_links_data->link[link_id].elems) in ieee80211_build_ml_reconf_req()
10071 add_links_data->link[link_id].elems + in ieee80211_build_ml_reconf_req()
10073 add_links_data->link[link_id].elems_len - in ieee80211_build_ml_reconf_req()
10108 int link_id, err; in ieee80211_mgd_assoc_ml_reconf() local
10121 for (link_id = 0; add_links && link_id < IEEE80211_MLD_MAX_NUM_LINKS; in ieee80211_mgd_assoc_ml_reconf()
10122 link_id++) { in ieee80211_mgd_assoc_ml_reconf()
10123 if (!add_links[link_id].bss) in ieee80211_mgd_assoc_ml_reconf()
10126 added_links |= BIT(link_id); in ieee80211_mgd_assoc_ml_reconf()
10133 if (rem_links & BIT(sta->sta.deflink.link_id)) in ieee80211_mgd_assoc_ml_reconf()
10151 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; in ieee80211_mgd_assoc_ml_reconf()
10152 link_id++) { in ieee80211_mgd_assoc_ml_reconf()
10154 struct cfg80211_bss *link_cbss = add_links[link_id].bss; in ieee80211_mgd_assoc_ml_reconf()
10172 eth_random_addr(data->link[link_id].addr); in ieee80211_mgd_assoc_ml_reconf()
10173 data->link[link_id].conn = in ieee80211_mgd_assoc_ml_reconf()
10179 NULL, true, link_id, in ieee80211_mgd_assoc_ml_reconf()
10180 &data->link[link_id].conn); in ieee80211_mgd_assoc_ml_reconf()
10182 data->link[link_id].bss = link_cbss; in ieee80211_mgd_assoc_ml_reconf()
10183 data->link[link_id].disabled = in ieee80211_mgd_assoc_ml_reconf()
10184 add_links[link_id].disabled; in ieee80211_mgd_assoc_ml_reconf()
10185 data->link[link_id].elems = in ieee80211_mgd_assoc_ml_reconf()
10186 (u8 *)add_links[link_id].elems; in ieee80211_mgd_assoc_ml_reconf()
10187 data->link[link_id].elems_len = in ieee80211_mgd_assoc_ml_reconf()
10188 add_links[link_id].elems_len; in ieee80211_mgd_assoc_ml_reconf()
10193 if (data->link[link_id].conn.mode < in ieee80211_mgd_assoc_ml_reconf()
10200 link_id); in ieee80211_mgd_assoc_ml_reconf()
10216 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; in ieee80211_mgd_assoc_ml_reconf()
10217 link_id++) { in ieee80211_mgd_assoc_ml_reconf()
10218 if (!data->link[link_id].bss) in ieee80211_mgd_assoc_ml_reconf()
10222 err = ieee80211_prep_channel(sdata, NULL, link_id, in ieee80211_mgd_assoc_ml_reconf()
10223 data->link[link_id].bss, in ieee80211_mgd_assoc_ml_reconf()
10225 &data->link[link_id].conn, in ieee80211_mgd_assoc_ml_reconf()
10294 for (link_id = 0; link_id < IEEE80211_MLD_MAX_NUM_LINKS; in ieee80211_mgd_assoc_ml_reconf()
10295 link_id++) { in ieee80211_mgd_assoc_ml_reconf()
10296 if (!(rem_links & BIT(link_id))) in ieee80211_mgd_assoc_ml_reconf()
10299 ieee80211_sta_remove_link(sta, link_id); in ieee80211_mgd_assoc_ml_reconf()