Lines Matching +full:link +full:-
1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
3 * Copyright (C) 2024-2025 Intel Corporation
15 * struct iwl_mld_rxq_dup_data - Duplication detection data, per STA & Rx queue
17 * @last_sub_frame_idx: the index of the last subframe in an A-MSDU. This value
18 * will be zero if the packet is not part of an A-MSDU.
26 * struct iwl_mld_link_sta - link-level station
28 * This represents the link-level sta - the driver level equivalent to the
33 * @in_fw: whether the link STA is uploaded to the FW (false during restart)
35 * @fw_id: the FW id of this link sta.
50 rcu_dereference_check((mld_sta)->link[link_id], \
51 lockdep_is_held(&mld_sta->mld->wiphy->mtx))
54 for (link_id = 0; link_id < ARRAY_SIZE((mld_sta)->link); \
61 /* struct iwl_mld_ptk_pn - Holds Packet Number (PN) per TID.
73 * struct iwl_mld_per_link_mpdu_counter - per-link TX/RX MPDU counters
84 * struct iwl_mld_per_q_mpdu_counter - per-queue MPDU counter
87 * @per_link: per-link counters.
88 * @window_start_time: timestamp of the counting-window start
97 * struct iwl_mld_sta - representation of a station in the driver.
99 * This represent the MLD-level sta, and will not be added to the FW.
109 * @tid_to_baid: a simple map of TID to Block-Ack fw id
110 * @deflink: This holds the default link STA information, for non MLO STA all
111 * link specific STA information is accessed through @deflink or through
112 * link[0] which points to address of @deflink. For MLO Link STA
113 * the first added link STA will point to deflink.
114 * @link: reference to Link Sta entries. For Non MLO STA, except 1st link,
115 * i.e link[0] all links would be assigned to NULL by default and
116 * would access link information via @deflink or link[0]. For MLO
117 * STA, first link STA being added will point its link pointer to
119 * would be assigned to link[link_id] where link_id is the id assigned
139 struct iwl_mld_link_sta __rcu *link[IEEE80211_MLD_MAX_NUM_LINKS]; member
147 return (void *)sta->drv_priv; in iwl_mld_sta_from_mac80211()
157 for (int i = 0; i < ARRAY_SIZE(sta->txq); i++) in iwl_mld_cleanup_sta()
158 CLEANUP_STRUCT(iwl_mld_txq_from_mac80211(sta->txq[i])); in iwl_mld_cleanup_sta()
163 if (!ieee80211_vif_is_mld(mld_sta->vif)) { in iwl_mld_cleanup_sta()
169 if (mld_sta->vif->active_links & BIT(link_id)) in iwl_mld_cleanup_sta()
172 /* Should not happen as link removal should always succeed */ in iwl_mld_cleanup_sta()
174 RCU_INIT_POINTER(mld_sta->link[link_id], NULL); in iwl_mld_cleanup_sta()
175 RCU_INIT_POINTER(mld_sta->mld->fw_id_to_link_sta[mld_link_sta->fw_id], in iwl_mld_cleanup_sta()
177 if (mld_link_sta != &mld_sta->deflink) in iwl_mld_cleanup_sta()
187 struct iwl_mld_sta *mld_sta = iwl_mld_sta_from_mac80211(link_sta->sta); in iwl_mld_link_sta_from_mac80211()
189 return iwl_mld_link_sta_dereference_check(mld_sta, link_sta->link_id); in iwl_mld_link_sta_from_mac80211()
208 * struct iwl_mld_int_sta - representation of an internal station
224 internal_sta->sta_id = IWL_INVALID_STA; in iwl_mld_init_internal_sta()
225 internal_sta->queue_id = IWL_MLD_INVALID_QUEUE; in iwl_mld_init_internal_sta()
232 if (WARN_ON(internal_sta->sta_id == IWL_INVALID_STA)) in iwl_mld_free_internal_sta()
235 RCU_INIT_POINTER(mld->fw_id_to_link_sta[internal_sta->sta_id], NULL); in iwl_mld_free_internal_sta()
241 struct ieee80211_bss_conf *link);
245 struct ieee80211_bss_conf *link);
252 struct ieee80211_bss_conf *link);
256 struct ieee80211_bss_conf *link);
260 struct ieee80211_bss_conf *link);
267 struct ieee80211_bss_conf *link);