Lines Matching +full:ac +full:- +full:link

1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright 2002-2005, Devicescape Software, Inc.
4 * Copyright 2013-2014 Intel Mobile Communications GmbH
5 * Copyright(c) 2015-2017 Intel Deutschland GmbH
6 * Copyright(c) 2020-2024 Intel Corporation
24 * enum ieee80211_sta_info_flags - Stations flags
31 * @WLAN_STA_PS_STA: Station is in power-save mode
35 * @WLAN_STA_SHORT_PREAMBLE: Station is capable of receiving short-preamble
45 * power-save mode logically to flush frames that might still
47 * @WLAN_STA_PSPOLL: Station sent PS-poll while driver was keeping
48 * station in power-save mode, reply when the driver unblocks.
51 * packets. This means the link is enabled.
52 * @WLAN_STA_TDLS_INITIATOR: We are the initiator of the TDLS link with this
54 * @WLAN_STA_TDLS_CHAN_SWITCH: This TDLS peer supports TDLS channel-switching
55 * @WLAN_STA_TDLS_OFF_CHANNEL: The local STA is currently off-channel with this
60 * keeping station in power-save mode, reply when the driver
63 * reply to other uAPSD trigger frames or PS-Poll.
64 * @WLAN_STA_4ADDR_EVENT: 4-addr event was already sent for this frame.
149 struct sta_info *sta, u8 ac,
155 * struct tid_ampdu_tx - TID aggregation information (Tx).
158 * @session_timer: check if we keep Tx-ing on the TID (by timeout value)
160 * @pending: pending frames queue -- use sta's spinlock to protect
171 * @bar_pending: BAR needs to be re-sent
172 * @amsdu: support A-MSDU within A-MDPU
178 * The TX path can access it under RCU lock-free if, and
181 * and re-check the state, see comments in the tx code
206 * struct tid_ampdu_rx - TID aggregation information (Rx).
209 * A-MSDU with individually reported subframes.
213 * @session_timer: check if peer keeps Tx-ing on the TID (by timeout value)
220 * @buf_size: buffer size for incoming A-MPDUs
260 * struct sta_ampdu_mlme - STA aggregation information.
262 * @tid_rx: aggregation info for Rx per TID -- RCU protected
276 * by wiphy mutex but also sta->lock
306 * struct ieee80211_fast_tx - TX fastpath information
317 * header length of 8 like for CCMP/GCMP) fits into a single 64-byte
332 * struct ieee80211_fast_rx - RX fastpath information
334 * @vif_type: (P2P-less) interface type of the original sdata (sdata->vif.type)
363 /* we use only values in the range 0-100, so pick a large precision */
368 * struct mesh_sta - mesh STA information
370 * @llid: Local link ID
371 * @plid: Peer link ID
375 * @plink_state: peer link state
376 * @plink_timeout: timeout of peer link
377 * @plink_timer: peer link watch timer
378 * @plink_sta: peer link watch timer's sta_info
382 * @local_pm: local link-specific power save mode
383 * @peer_pm: peer-specific power save mode towards local STA
384 * @nonpeer_pm: STA power save mode towards non-peer neighbors
442 * IEEE 802.11-2016 (10.6 "Defragmentation") recommends support for "concurrent
470 * struct link_sta_info - Link STA information
471 * All link specific sta info are stored here for reference. This can be
472 * a single entry for non-MLD STA or multiple entries for MLD STA
473 * @addr: Link MAC address - Can be same as MLD STA mac address and is always
474 * same for non-MLD STA. This is used as key for searching link STA
475 * @link_id: Link ID uniquely identifying the link STA. This is 0 for non-MLD
490 * @rx_stats_avg.chain_signal: averaged per-chain signal
491 * @pcpu_rx_stats: per-CPU RX statistics, assigned only if the driver needs
512 * @pub: public (driver visible) link STA data
513 * TODO Move other link params from sta_info as required for MLD operation
572 * struct ieee80211_sta_removed_link_stats - Removed link sta data
574 * keep required accumulated removed link data for stats
587 * @rx_dropped_misc: accumulated dropped packets for un-specified reason
593 * @pertid_stats: accumulated per-TID statistics for removed link of
624 * struct sta_info - STA information
632 * @addr: station's MAC address - duplicated from public part to
641 * @rate_ctrl_priv: rate control private per-STA pointer
648 * @ps_tx_buf: buffers (per AC) of frames to transmit to this station
650 * @tx_filtered: buffers (per AC) of frames we already tried to
659 * plus one for non-QoS frames)
660 * @tid_seq: per-TID sequence numbers for sending to this STA
661 * @airtime: per-AC struct airtime_info describing airtime statistics for this
664 * @ampdu_mlme: A-MPDU state machine state
674 * @amsdu_mesh_control: track the mesh A-MSDU format used by the peer:
676 * * -1: not yet known
677 * * 0: non-mesh A-MSDU length field
678 * * 1: big-endian mesh A-MSDU length field
679 * * 2: little-endian mesh A-MSDU length field
688 * @deflink: This is the default link STA information, for non MLO STA all link
690 * link[0] which points to address of @deflink. For MLO Link STA
691 * the first added link STA will point to deflink.
692 * @link: reference to Link Sta entries. For Non MLO STA, except 1st link,
693 * i.e link[0] all links would be assigned to NULL by default and
694 * would access link information via @deflink or link[0]. For MLO
695 * STA, first link STA being added will point its link pointer to
697 * would be assigned to link[link_id] where link_id is the id assigned
699 * @rem_link_stats: accumulated removed link stats
747 /* Plus 1 for non-QoS frames */
773 struct link_sta_info __rcu *link[IEEE80211_MLD_MAX_NUM_LINKS]; member
782 /* TDLS STA can only have a single link */ in ieee80211_tdls_sta_link_id()
783 return sta->sta.valid_links ? __ffs(sta->sta.valid_links) : 0; in ieee80211_tdls_sta_link_id()
789 return sta->mesh->plink_state; in sta_plink_state()
800 set_bit(flag, &sta->_flags); in set_sta_flag()
809 clear_bit(flag, &sta->_flags); in clear_sta_flag()
815 return test_bit(flag, &sta->_flags); in test_sta_flag()
824 return test_and_clear_bit(flag, &sta->_flags); in test_and_clear_sta_flag()
833 return test_and_set_bit(flag, &sta->_flags); in test_and_set_sta_flag()
855 rcu_dereference_protected((sta)->ampdu_mlme.tid_tx[tid], \
856 lockdep_is_held(&(sta)->lock) || \
857 lockdep_is_held(&(sta)->local->hw.wiphy->mtx));
859 /* Maximum number of frames to buffer per power saving station per AC */
922 * -EEXIST if (if the same MAC address is already present).
924 * Calling the non-rcu version makes the caller relinquish,
943 * __sta_info_flush - flush matching STA entries from the STA table
950 * will be removed. If -1 is passed, all STA entries will be
958 * sta_info_flush - flush matching STA entries from the STA table
964 * will be removed. If -1 is passed, all STA entries will be
1041 r = STA_STATS_FIELD(BW, s->bw); in sta_stats_encode_rate()
1043 if (s->enc_flags & RX_ENC_FLAG_SHORT_GI) in sta_stats_encode_rate()
1046 switch (s->encoding) { in sta_stats_encode_rate()
1049 r |= STA_STATS_FIELD(VHT_NSS, s->nss); in sta_stats_encode_rate()
1050 r |= STA_STATS_FIELD(VHT_MCS, s->rate_idx); in sta_stats_encode_rate()
1054 r |= STA_STATS_FIELD(HT_MCS, s->rate_idx); in sta_stats_encode_rate()
1058 r |= STA_STATS_FIELD(LEGACY_BAND, s->band); in sta_stats_encode_rate()
1059 r |= STA_STATS_FIELD(LEGACY_IDX, s->rate_idx); in sta_stats_encode_rate()
1063 r |= STA_STATS_FIELD(HE_NSS, s->nss); in sta_stats_encode_rate()
1064 r |= STA_STATS_FIELD(HE_MCS, s->rate_idx); in sta_stats_encode_rate()
1065 r |= STA_STATS_FIELD(HE_GI, s->he_gi); in sta_stats_encode_rate()
1066 r |= STA_STATS_FIELD(HE_RU, s->he_ru); in sta_stats_encode_rate()
1067 r |= STA_STATS_FIELD(HE_DCM, s->he_dcm); in sta_stats_encode_rate()
1071 r |= STA_STATS_FIELD(EHT_NSS, s->nss); in sta_stats_encode_rate()
1072 r |= STA_STATS_FIELD(EHT_MCS, s->rate_idx); in sta_stats_encode_rate()
1073 r |= STA_STATS_FIELD(EHT_GI, s->eht.gi); in sta_stats_encode_rate()
1074 r |= STA_STATS_FIELD(EHT_RU, s->eht.ru); in sta_stats_encode_rate()