Lines Matching +full:unlock +full:- +full:keys
1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
3 * Copyright (C) 2024-2025 Intel Corporation
29 lockdep_assert_wiphy(mld->wiphy); in iwl_mld_fw_sta_id_from_link_sta()
33 return -ENOENT; in iwl_mld_fw_sta_id_from_link_sta()
38 return -ENOENT; in iwl_mld_fw_sta_id_from_link_sta()
41 return mld_link_sta->fw_id; in iwl_mld_fw_sta_id_from_link_sta()
56 * of Draft P802.11be D.30 Table 10-12a--Fields used for calculating in iwl_mld_fill_ampdu_size_and_dens()
57 * the maximum A-MPDU size of various PPDU types in different bands, in iwl_mld_fill_ampdu_size_and_dens()
61 if (link_sta->ht_cap.ht_supported) { in iwl_mld_fill_ampdu_size_and_dens()
62 agg_size = link_sta->ht_cap.ampdu_factor; in iwl_mld_fill_ampdu_size_and_dens()
63 mpdu_dens = link_sta->ht_cap.ampdu_density; in iwl_mld_fill_ampdu_size_and_dens()
66 if (link->chanreq.oper.chan->band == NL80211_BAND_6GHZ) { in iwl_mld_fill_ampdu_size_and_dens()
69 le16_get_bits(link_sta->he_6ghz_capa.capa, in iwl_mld_fill_ampdu_size_and_dens()
72 le16_get_bits(link_sta->he_6ghz_capa.capa, in iwl_mld_fill_ampdu_size_and_dens()
74 } else if (link_sta->vht_cap.vht_supported) { in iwl_mld_fill_ampdu_size_and_dens()
77 u32_get_bits(link_sta->vht_cap.cap, in iwl_mld_fill_ampdu_size_and_dens()
81 /* D6.0 10.12.2 A-MPDU length limit rules in iwl_mld_fill_ampdu_size_and_dens()
82 * A STA indicates the maximum length of the A-MPDU preEOF padding in iwl_mld_fill_ampdu_size_and_dens()
83 * that it can receive in an HE PPDU in the Maximum A-MPDU Length in iwl_mld_fill_ampdu_size_and_dens()
89 if (link_sta->he_cap.has_he) in iwl_mld_fill_ampdu_size_and_dens()
91 u8_get_bits(link_sta->he_cap.he_cap_elem.mac_cap_info[3], in iwl_mld_fill_ampdu_size_and_dens()
94 if (link_sta->eht_cap.has_eht) in iwl_mld_fill_ampdu_size_and_dens()
96 u8_get_bits(link_sta->eht_cap.eht_cap_elem.mac_cap_info[1], in iwl_mld_fill_ampdu_size_and_dens()
99 /* Limit to max A-MPDU supported by FW */ in iwl_mld_fill_ampdu_size_and_dens()
111 if (sta->uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_BK) in iwl_mld_get_uapsd_acs()
113 if (sta->uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_BE) in iwl_mld_get_uapsd_acs()
115 if (sta->uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_VI) in iwl_mld_get_uapsd_acs()
117 if (sta->uapsd_queues & IEEE80211_WMM_IE_STA_QOSINFO_AC_VO) in iwl_mld_get_uapsd_acs()
132 (BIT(IEEE80211_PPE_THRES_INFO_PPET_SIZE) - 1); in iwl_mld_he_get_ppe_val()
139 residue_bits = 8 - bit_num; in iwl_mld_he_get_ppe_val()
142 (BIT(IEEE80211_PPE_THRES_INFO_PPET_SIZE - residue_bits) - 1)) << in iwl_mld_he_get_ppe_val()
144 res += (ppe[byte_num] >> bit_num) & (BIT(residue_bits) - 1); in iwl_mld_he_get_ppe_val()
160 IWL_DEBUG_INFO(mld, "Got NSS = %d - trimming to %d\n", nss, in iwl_mld_parse_ppe()
170 bw < ARRAY_SIZE(pkt_ext->pkt_ext_qam_th[i]); in iwl_mld_parse_ppe()
175 * isn't present - it should inherit the thresholds from the last in iwl_mld_parse_ppe()
177 * this inheritance - continue in this case in iwl_mld_parse_ppe()
192 pkt_ext->pkt_ext_qam_th[i][bw][0] = low_th; in iwl_mld_parse_ppe()
193 pkt_ext->pkt_ext_qam_th[i][bw][1] = high_th; in iwl_mld_parse_ppe()
203 u8 nss = (link_sta->he_cap.ppe_thres[0] & in iwl_mld_set_pkt_ext_from_he_ppe()
205 u8 *ppe = &link_sta->he_cap.ppe_thres[0]; in iwl_mld_set_pkt_ext_from_he_ppe()
220 int low_th = -1; in iwl_mld_set_pkt_ext_from_nominal_padding()
221 int high_th = -1; in iwl_mld_set_pkt_ext_from_nominal_padding()
241 return -EINVAL; in iwl_mld_set_pkt_ext_from_nominal_padding()
246 bw < ARRAY_SIZE(pkt_ext->pkt_ext_qam_th[i]); in iwl_mld_set_pkt_ext_from_nominal_padding()
248 pkt_ext->pkt_ext_qam_th[i][bw][0] = low_th; in iwl_mld_set_pkt_ext_from_nominal_padding()
249 pkt_ext->pkt_ext_qam_th[i][bw][1] = high_th; in iwl_mld_set_pkt_ext_from_nominal_padding()
260 for (u8 bw = 0; bw < ARRAY_SIZE(pkt_ext->pkt_ext_qam_th[i]); in iwl_mld_get_optimal_ppe_info()
262 u8 *qam_th = &pkt_ext->pkt_ext_qam_th[i][bw][0]; in iwl_mld_get_optimal_ppe_info()
285 * 9-262ac of 80211.ax/D3.0. in iwl_mld_fill_pkt_ext()
289 if (link_sta->eht_cap.has_eht) { in iwl_mld_fill_pkt_ext()
291 u8_get_bits(link_sta->eht_cap.eht_cap_elem.phy_cap_info[5], in iwl_mld_fill_pkt_ext()
294 /* If PPE Thresholds exists, parse them into a FW-familiar in iwl_mld_fill_pkt_ext()
297 if (link_sta->eht_cap.eht_cap_elem.phy_cap_info[5] & in iwl_mld_fill_pkt_ext()
299 u8 nss = (link_sta->eht_cap.eht_ppe_thres[0] & in iwl_mld_fill_pkt_ext()
301 u8 *ppe = &link_sta->eht_cap.eht_ppe_thres[0]; in iwl_mld_fill_pkt_ext()
310 /* EHT PPE Thresholds doesn't exist - set the API according to in iwl_mld_fill_pkt_ext()
313 } else if (link_sta->he_cap.he_cap_elem.phy_cap_info[6] & in iwl_mld_fill_pkt_ext()
323 /* According to the requirements, for MCSs 12-13 the in iwl_mld_fill_pkt_ext()
329 /* if PPE Thresholds doesn't present in both EHT IE and HE IE - in iwl_mld_fill_pkt_ext()
336 } else if (link_sta->he_cap.has_he) { in iwl_mld_fill_pkt_ext()
337 /* If PPE Thresholds exist, parse them into a FW-familiar format. */ in iwl_mld_fill_pkt_ext()
338 if (link_sta->he_cap.he_cap_elem.phy_cap_info[6] & in iwl_mld_fill_pkt_ext()
342 /* PPE Thresholds doesn't exist - set the API PPE values in iwl_mld_fill_pkt_ext()
347 u8_get_bits(link_sta->he_cap.he_cap_elem.phy_cap_info[9], in iwl_mld_fill_pkt_ext()
357 bw < ARRAY_SIZE(*pkt_ext->pkt_ext_qam_th[i]); in iwl_mld_fill_pkt_ext()
360 &pkt_ext->pkt_ext_qam_th[i][bw][0]; in iwl_mld_fill_pkt_ext()
372 &link_sta->he_cap.he_cap_elem.mac_cap_info[0]; in iwl_mld_get_htc_flags()
405 int cmd_len = iwl_fw_lookup_cmd_ver(mld->fw, cmd_id, 0) > 1 ? in iwl_mld_send_sta_cmd()
418 struct ieee80211_sta *sta = link_sta->sta; in iwl_mld_add_modify_sta_cmd()
425 lockdep_assert_wiphy(mld->wiphy); in iwl_mld_add_modify_sta_cmd()
427 link = link_conf_dereference_protected(mld_sta->vif, in iwl_mld_add_modify_sta_cmd()
428 link_sta->link_id); in iwl_mld_add_modify_sta_cmd()
433 return -EINVAL; in iwl_mld_add_modify_sta_cmd()
436 cmd.station_type = cpu_to_le32(mld_sta->sta_type); in iwl_mld_add_modify_sta_cmd()
437 cmd.link_id = cpu_to_le32(mld_link->fw_id); in iwl_mld_add_modify_sta_cmd()
439 memcpy(&cmd.peer_mld_address, sta->addr, ETH_ALEN); in iwl_mld_add_modify_sta_cmd()
440 memcpy(&cmd.peer_link_address, link_sta->addr, ETH_ALEN); in iwl_mld_add_modify_sta_cmd()
442 if (mld_sta->sta_state >= IEEE80211_STA_ASSOC) in iwl_mld_add_modify_sta_cmd()
443 cmd.assoc_id = cpu_to_le32(sta->aid); in iwl_mld_add_modify_sta_cmd()
445 if (sta->mfp || mld_sta->sta_state < IEEE80211_STA_AUTHORIZED) in iwl_mld_add_modify_sta_cmd()
448 switch (link_sta->rx_nss) { in iwl_mld_add_modify_sta_cmd()
457 switch (link_sta->smps_mode) { in iwl_mld_add_modify_sta_cmd()
478 if (sta->wme) { in iwl_mld_add_modify_sta_cmd()
480 cpu_to_le32(sta->max_sp ? sta->max_sp * 2 : 128); in iwl_mld_add_modify_sta_cmd()
484 if (link_sta->he_cap.has_he) { in iwl_mld_add_modify_sta_cmd()
486 cpu_to_le32(link->uora_exists ? 1 : 0); in iwl_mld_add_modify_sta_cmd()
495 if (link_sta->he_cap.he_cap_elem.mac_cap_info[2] & in iwl_mld_add_modify_sta_cmd()
508 struct iwl_mld_sta *mld_sta = iwl_mld_sta_from_mac80211(link_sta->sta); in IWL_MLD_ALLOC_FN()
513 lockdep_assert_wiphy(mld->wiphy); in IWL_MLD_ALLOC_FN()
517 return -ENODEV; in IWL_MLD_ALLOC_FN()
526 WARN_ON(!mld->fw_status.in_hw_restart); in IWL_MLD_ALLOC_FN()
529 if (WARN_ON(mld_link_sta->in_fw)) in IWL_MLD_ALLOC_FN()
530 return -EINVAL; in IWL_MLD_ALLOC_FN()
532 fw_id = mld_link_sta->fw_id; in IWL_MLD_ALLOC_FN()
541 if (link_sta == &link_sta->sta->deflink) { in IWL_MLD_ALLOC_FN()
542 mld_link_sta = &mld_sta->deflink; in IWL_MLD_ALLOC_FN()
546 return -ENOMEM; in IWL_MLD_ALLOC_FN()
549 mld_link_sta->fw_id = fw_id; in IWL_MLD_ALLOC_FN()
550 rcu_assign_pointer(mld_sta->link[link_sta->link_id], mld_link_sta); in IWL_MLD_ALLOC_FN()
555 RCU_INIT_POINTER(mld->fw_id_to_link_sta[fw_id], NULL); in IWL_MLD_ALLOC_FN()
556 RCU_INIT_POINTER(mld_sta->link[link_sta->link_id], NULL); in IWL_MLD_ALLOC_FN()
557 if (link_sta != &link_sta->sta->deflink) in IWL_MLD_ALLOC_FN()
561 mld_link_sta->in_fw = true; in IWL_MLD_ALLOC_FN()
586 struct iwl_mld_sta *mld_sta = iwl_mld_sta_from_mac80211(link_sta->sta); in iwl_mld_remove_link_sta()
593 iwl_mld_rm_sta_from_fw(mld, mld_link_sta->fw_id); in iwl_mld_remove_link_sta()
594 mld_link_sta->in_fw = false; in iwl_mld_remove_link_sta()
600 mld_link_sta->fw_id); in iwl_mld_remove_link_sta()
605 RCU_INIT_POINTER(mld->fw_id_to_link_sta[mld_link_sta->fw_id], NULL); in iwl_mld_remove_link_sta()
606 RCU_INIT_POINTER(mld_sta->link[link_sta->link_id], NULL); in iwl_mld_remove_link_sta()
607 if (mld_link_sta != &mld_sta->deflink) in iwl_mld_remove_link_sta()
614 const struct ieee80211_sta_ht_cap *ht_cap = &link_sta->ht_cap; in iwl_mld_set_max_amsdu_len()
620 if (link_sta->eht_cap.has_eht || link_sta->he_cap.has_he || in iwl_mld_set_max_amsdu_len()
621 link_sta->vht_cap.vht_supported || in iwl_mld_set_max_amsdu_len()
622 !ht_cap->ht_supported || in iwl_mld_set_max_amsdu_len()
623 !(ht_cap->cap & IEEE80211_HT_CAP_MAX_AMSDU)) in iwl_mld_set_max_amsdu_len()
626 link_sta->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_HT_BA; in iwl_mld_set_max_amsdu_len()
627 ieee80211_sta_recalc_aggregates(link_sta->sta); in iwl_mld_set_max_amsdu_len()
637 for_each_sta_active_link(mld_sta->vif, sta, link_sta, link_id) { in iwl_mld_update_all_link_stations()
643 if (mld_sta->sta_state == IEEE80211_STA_ASSOC) in iwl_mld_update_all_link_stations()
653 kfree(mld_sta->dup_data); in iwl_mld_destroy_sta()
654 kfree(mld_sta->mpdu_counters); in iwl_mld_destroy_sta()
662 if (mld->fw_status.in_hw_restart) in iwl_mld_alloc_dup_data()
665 dup_data = kcalloc(mld->trans->info.num_rxqs, sizeof(*dup_data), in iwl_mld_alloc_dup_data()
668 return -ENOMEM; in iwl_mld_alloc_dup_data()
678 for (int q = 0; q < mld->trans->info.num_rxqs; q++) in iwl_mld_alloc_dup_data()
681 mld_sta->dup_data = dup_data; in iwl_mld_alloc_dup_data()
690 struct ieee80211_vif *vif = mld_sta->vif; in iwl_mld_alloc_mpdu_counters()
692 if (mld->fw_status.in_hw_restart) in iwl_mld_alloc_mpdu_counters()
697 sta->tdls || !ieee80211_vif_is_mld(vif)) in iwl_mld_alloc_mpdu_counters()
700 mld_sta->mpdu_counters = kcalloc(mld->trans->info.num_rxqs, in iwl_mld_alloc_mpdu_counters()
701 sizeof(*mld_sta->mpdu_counters), in iwl_mld_alloc_mpdu_counters()
703 if (!mld_sta->mpdu_counters) in iwl_mld_alloc_mpdu_counters()
706 for (int q = 0; q < mld->trans->info.num_rxqs; q++) in iwl_mld_alloc_mpdu_counters()
707 spin_lock_init(&mld_sta->mpdu_counters[q].lock); in iwl_mld_alloc_mpdu_counters()
716 mld_sta->vif = vif; in iwl_mld_init_sta()
717 mld_sta->sta_type = type; in iwl_mld_init_sta()
718 mld_sta->mld = mld; in iwl_mld_init_sta()
720 if (!mld->fw_status.in_hw_restart) in iwl_mld_init_sta()
721 for (int i = 0; i < ARRAY_SIZE(sta->txq); i++) in iwl_mld_init_sta()
722 iwl_mld_init_txq(iwl_mld_txq_from_mac80211(sta->txq[i])); in iwl_mld_init_sta()
726 iwl_mld_toggle_tx_ant(mld, &mld_sta->data_tx_ant); in iwl_mld_init_sta()
747 for_each_sta_active_link(mld_sta->vif, sta, link_sta, link_id) { in iwl_mld_add_sta()
767 for_each_sta_active_link(mld_sta->vif, sta, link_sta, link_id) { in iwl_mld_flush_sta_txqs()
785 for (int i = 0; i < ARRAY_SIZE(sta->txq); i++) { in iwl_mld_wait_sta_txqs_empty()
787 iwl_mld_txq_from_mac80211(sta->txq[i]); in iwl_mld_wait_sta_txqs_empty()
789 if (!mld_txq->status.allocated) in iwl_mld_wait_sta_txqs_empty()
792 iwl_trans_wait_txq_empty(mld->trans, mld_txq->fw_id); in iwl_mld_wait_sta_txqs_empty()
799 struct ieee80211_vif *vif = mld_sta->vif; in iwl_mld_remove_sta()
803 lockdep_assert_wiphy(mld->wiphy); in iwl_mld_remove_sta()
812 for (int i = 0; i < ARRAY_SIZE(sta->txq); i++) in iwl_mld_remove_sta()
813 iwl_mld_remove_txq(mld, sta->txq[i]); in iwl_mld_remove_sta()
816 /* Mac8011 will remove the groupwise keys after the sta is in iwl_mld_remove_sta()
817 * removed, but FW expects all the keys to be removed before in iwl_mld_remove_sta()
820 if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) in iwl_mld_remove_sta()
832 struct ieee80211_vif *vif = iwl_mld_sta_from_mac80211(sta)->vif; in iwl_mld_fw_sta_id_mask()
844 lockdep_assert_wiphy(mld->wiphy); in iwl_mld_fw_sta_id_mask()
871 mld_sta = iwl_mld_sta_from_mac80211(link_sta->sta); in iwl_mld_count_mpdu()
872 if (!mld_sta->mpdu_counters) in iwl_mld_count_mpdu()
875 mld_vif = iwl_mld_vif_from_mac80211(mld_sta->vif); in iwl_mld_count_mpdu()
876 mld_link = iwl_mld_link_dereference_check(mld_vif, link_sta->link_id); in iwl_mld_count_mpdu()
881 queue_counter = &mld_sta->mpdu_counters[queue]; in iwl_mld_count_mpdu()
883 mld = mld_vif->mld; in iwl_mld_count_mpdu()
888 if ((mld_vif->emlsr.blocked_reasons & IWL_MLD_EMLSR_BLOCKED_TPT) && in iwl_mld_count_mpdu()
889 time_is_before_jiffies(queue_counter->window_start_time + in iwl_mld_count_mpdu()
891 memset(queue_counter->per_link, 0, in iwl_mld_count_mpdu()
892 sizeof(queue_counter->per_link)); in iwl_mld_count_mpdu()
893 queue_counter->window_start_time = jiffies; in iwl_mld_count_mpdu()
898 link_counter = &queue_counter->per_link[mld_link->fw_id]; in iwl_mld_count_mpdu()
900 spin_lock_bh(&queue_counter->lock); in iwl_mld_count_mpdu()
904 link_counter->tx += count; in iwl_mld_count_mpdu()
906 link_counter->rx += count; in iwl_mld_count_mpdu()
912 if (!(mld_vif->emlsr.blocked_reasons & IWL_MLD_EMLSR_BLOCKED_TPT)) in iwl_mld_count_mpdu()
913 goto unlock; in iwl_mld_count_mpdu()
916 total_mpdus += tx ? queue_counter->per_link[i].tx : in iwl_mld_count_mpdu()
917 queue_counter->per_link[i].rx; in iwl_mld_count_mpdu()
920 if (total_mpdus - count >= IWL_MLD_ENTER_EMLSR_TPT_THRESH) in iwl_mld_count_mpdu()
921 goto unlock; in iwl_mld_count_mpdu()
924 wiphy_work_queue(mld->wiphy, &mld_vif->emlsr.unblock_tpt_wk); in iwl_mld_count_mpdu()
926 unlock: in iwl_mld_count_mpdu()
927 spin_unlock_bh(&queue_counter->lock); in iwl_mld_count_mpdu()
948 u32 sta_mask = BIT(internal_sta->sta_id); in iwl_mld_allocate_internal_txq()
952 mld->trans->mac_cfg->base->min_txq_size); in iwl_mld_allocate_internal_txq()
954 queue = iwl_trans_txq_alloc(mld->trans, 0, sta_mask, tid, size, in iwl_mld_allocate_internal_txq()
968 .sta_id = cpu_to_le32(internal_sta->sta_id), in iwl_mld_send_aux_sta_cmd()
969 /* TODO: CDB - properly set the lmac_id */ in iwl_mld_send_aux_sta_cmd()
985 if (internal_sta->sta_type == STATION_TYPE_AUX) in iwl_mld_add_internal_sta_to_fw()
988 cmd.sta_id = cpu_to_le32((u8)internal_sta->sta_id); in iwl_mld_add_internal_sta_to_fw()
990 cmd.station_type = cpu_to_le32(internal_sta->sta_type); in iwl_mld_add_internal_sta_to_fw()
997 if (internal_sta->sta_type == STATION_TYPE_BCAST_MGMT) in iwl_mld_add_internal_sta_to_fw()
1016 &internal_sta->sta_id, in iwl_mld_add_internal_sta()
1017 ERR_PTR(-EINVAL)); in iwl_mld_add_internal_sta()
1021 internal_sta->sta_type = sta_type; in iwl_mld_add_internal_sta()
1030 iwl_mld_rm_sta_from_fw(mld, internal_sta->sta_id); in iwl_mld_add_internal_sta()
1035 internal_sta->queue_id = queue_id; in iwl_mld_add_internal_sta()
1052 return -EINVAL; in iwl_mld_add_bcast_sta()
1054 if (WARN_ON(vif->type != NL80211_IFTYPE_AP && in iwl_mld_add_bcast_sta()
1055 vif->type != NL80211_IFTYPE_ADHOC)) in iwl_mld_add_bcast_sta()
1056 return -EINVAL; in iwl_mld_add_bcast_sta()
1058 addr = vif->type == NL80211_IFTYPE_ADHOC ? link->bssid : bcast_addr; in iwl_mld_add_bcast_sta()
1060 return iwl_mld_add_internal_sta(mld, &mld_link->bcast_sta, in iwl_mld_add_bcast_sta()
1062 mld_link->fw_id, addr, in iwl_mld_add_bcast_sta()
1074 return -EINVAL; in iwl_mld_add_mcast_sta()
1076 if (WARN_ON(vif->type != NL80211_IFTYPE_AP && in iwl_mld_add_mcast_sta()
1077 vif->type != NL80211_IFTYPE_ADHOC)) in iwl_mld_add_mcast_sta()
1078 return -EINVAL; in iwl_mld_add_mcast_sta()
1080 return iwl_mld_add_internal_sta(mld, &mld_link->mcast_sta, in iwl_mld_add_mcast_sta()
1082 mld_link->fw_id, mcast_addr, 0); in iwl_mld_add_mcast_sta()
1099 return -EINVAL; in iwl_mld_add_mon_sta()
1101 if (WARN_ON(vif->type != NL80211_IFTYPE_MONITOR)) in iwl_mld_add_mon_sta()
1102 return -EINVAL; in iwl_mld_add_mon_sta()
1104 return iwl_mld_add_internal_sta(mld, &mld_link->mon_sta, in iwl_mld_add_mon_sta()
1106 mld_link->fw_id, NULL, in iwl_mld_add_mon_sta()
1114 if (WARN_ON_ONCE(internal_sta->sta_id == IWL_INVALID_STA || in iwl_mld_remove_internal_sta()
1115 internal_sta->queue_id == IWL_MLD_INVALID_QUEUE)) in iwl_mld_remove_internal_sta()
1119 iwl_mld_flush_link_sta_txqs(mld, internal_sta->sta_id); in iwl_mld_remove_internal_sta()
1121 iwl_mld_free_txq(mld, BIT(internal_sta->sta_id), in iwl_mld_remove_internal_sta()
1122 tid, internal_sta->queue_id); in iwl_mld_remove_internal_sta()
1124 iwl_mld_rm_sta_from_fw(mld, internal_sta->sta_id); in iwl_mld_remove_internal_sta()
1138 if (WARN_ON(vif->type != NL80211_IFTYPE_AP && in iwl_mld_remove_bcast_sta()
1139 vif->type != NL80211_IFTYPE_ADHOC)) in iwl_mld_remove_bcast_sta()
1142 iwl_mld_remove_internal_sta(mld, &mld_link->bcast_sta, true, in iwl_mld_remove_bcast_sta()
1155 if (WARN_ON(vif->type != NL80211_IFTYPE_AP && in iwl_mld_remove_mcast_sta()
1156 vif->type != NL80211_IFTYPE_ADHOC)) in iwl_mld_remove_mcast_sta()
1159 iwl_mld_remove_internal_sta(mld, &mld_link->mcast_sta, true, 0); in iwl_mld_remove_mcast_sta()
1167 if (WARN_ON(vif->type != NL80211_IFTYPE_P2P_DEVICE && in iwl_mld_remove_aux_sta()
1168 vif->type != NL80211_IFTYPE_STATION)) in iwl_mld_remove_aux_sta()
1171 iwl_mld_remove_internal_sta(mld, &mld_vif->aux_sta, false, in iwl_mld_remove_aux_sta()
1184 if (WARN_ON(vif->type != NL80211_IFTYPE_MONITOR)) in iwl_mld_remove_mon_sta()
1187 iwl_mld_remove_internal_sta(mld, &mld_link->mon_sta, false, in iwl_mld_remove_mon_sta()
1225 lockdep_assert_wiphy(mld->wiphy); in iwl_mld_update_link_stas()
1233 return -EINVAL; in iwl_mld_update_link_stas()
1235 current_sta_mask |= BIT(mld_link_sta->fw_id); in iwl_mld_update_link_stas()
1237 sta_mask_to_rem |= BIT(mld_link_sta->fw_id); in iwl_mld_update_link_stas()
1256 return -EINVAL; in iwl_mld_update_link_stas()
1267 return -EINVAL; in iwl_mld_update_link_stas()
1277 link = link_conf_dereference_protected(mld_sta->vif, in iwl_mld_update_link_stas()
1278 link_sta->link_id); in iwl_mld_update_link_stas()
1283 sta_mask_added |= BIT(mld_link_sta->fw_id); in iwl_mld_update_link_stas()
1298 link_conf_dereference_protected(mld_sta->vif, link_id); in iwl_mld_update_link_stas()
1309 for_each_set_bit(sta_id, &sta_mask_added, mld->fw->ucode_capa.num_stations) { in iwl_mld_update_link_stas()
1311 wiphy_dereference(mld->wiphy, in iwl_mld_update_link_stas()
1312 mld->fw_id_to_link_sta[sta_id]); in iwl_mld_update_link_stas()