net/mac80211/sta_info.h
Source file repositories/reference/linux-study-clean/net/mac80211/sta_info.h
File Facts
- System
- Linux kernel
- Corpus path
net/mac80211/sta_info.h- Extension
.h- Size
- 39567 bytes
- Lines
- 1162
- Domain
- Networking Core
- Bucket
- Sockets, Protocols, Packet Path, And Network Policy
- Inferred role
- Networking Core: implementation source
- Status
- source implementation candidate
Why This File Exists
Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/list.hlinux/types.hlinux/if_ether.hlinux/workqueue.hlinux/average.hlinux/bitfield.hlinux/etherdevice.hlinux/rhashtable.hlinux/u64_stats_sync.hkey.h
Detected Declarations
struct airtime_infostruct sta_infostruct tid_ampdu_txstruct tid_ampdu_rxstruct sta_ampdu_mlmestruct ieee80211_fast_txstruct ieee80211_fast_rxstruct mesh_stastruct ieee80211_sta_rx_statsstruct ieee80211_fragment_entrystruct ieee80211_fragment_cachestruct link_sta_infostruct ieee80211_sta_removed_link_statsstruct sta_infoenum ieee80211_sta_info_flagsenum ieee80211_agg_stop_reasonenum ieee80211_sta_bw_directionenum sta_stats_typefunction ieee80211_tdls_sta_link_idfunction sta_plink_statefunction set_sta_flagfunction clear_sta_flagfunction test_sta_flagfunction test_and_clear_sta_flagfunction test_and_set_sta_flagfunction sta_info_pre_move_statefunction sta_info_flushfunction sta_stats_encode_rate
Annotated Snippet
struct airtime_info {
u64 rx_airtime;
u64 tx_airtime;
unsigned long last_active;
s32 deficit;
atomic_t aql_tx_pending; /* Estimated airtime for frames pending */
u32 aql_limit_low;
u32 aql_limit_high;
};
void ieee80211_sta_update_pending_airtime(struct ieee80211_local *local,
struct sta_info *sta, u8 ac,
u16 tx_airtime, bool tx_completed);
struct sta_info;
/**
* struct tid_ampdu_tx - TID aggregation information (Tx).
*
* @rcu_head: rcu head for freeing structure
* @session_timer: check if we keep Tx-ing on the TID (by timeout value)
* @addba_resp_timer: timer for peer's response to addba request
* @pending: pending frames queue -- use sta's spinlock to protect
* @sta: station we are attached to
* @dialog_token: dialog token for aggregation session
* @timeout: session timeout value to be filled in ADDBA requests
* @tid: TID number
* @state: session state (see above)
* @last_tx: jiffies of last tx activity
* @stop_initiator: initiator of a session stop
* @tx_stop: TX DelBA frame when stopping
* @buf_size: reorder buffer size at receiver
* @failed_bar_ssn: ssn of the last failed BAR tx attempt
* @bar_pending: BAR needs to be re-sent
* @amsdu: support A-MSDU within A-MDPU
* @ssn: starting sequence number of the session
* @ndp: this session is using NDP Block ACKs
*
* This structure's lifetime is managed by RCU, assignments to
* the array holding it must hold the aggregation mutex.
*
* The TX path can access it under RCU lock-free if, and
* only if, the state has the flag %HT_AGG_STATE_OPERATIONAL
* set. Otherwise, the TX path must also acquire the spinlock
* and re-check the state, see comments in the tx code
* touching it.
*/
struct tid_ampdu_tx {
struct rcu_head rcu_head;
struct timer_list session_timer;
struct timer_list addba_resp_timer;
struct sk_buff_head pending;
struct sta_info *sta;
unsigned long state;
unsigned long last_tx;
u16 timeout;
u8 dialog_token;
u8 stop_initiator;
bool tx_stop;
u16 buf_size;
u16 ssn;
u16 failed_bar_ssn;
bool bar_pending;
bool amsdu;
bool ndp;
u8 tid;
};
/**
* struct tid_ampdu_rx - TID aggregation information (Rx).
*
* @reorder_buf_filtered: bitmap indicating where there are filtered frames in
* the reorder buffer that should be ignored when releasing frames
* @session_timer: check if peer keeps Tx-ing on the TID (by timeout value)
* @reorder_timer: releases expired frames from the reorder buffer.
* @sta: station we are attached to
* @last_rx: jiffies of last rx activity
* @head_seq_num: head sequence number in reordering buffer.
* @stored_mpdu_num: number of MPDUs in reordering buffer
* @ssn: Starting Sequence Number expected to be aggregated.
* @buf_size: buffer size for incoming A-MPDUs
* @timeout: reset timer value (in TUs).
* @tid: TID number
* @rcu_head: RCU head used for freeing this struct
* @reorder_lock: serializes access to reorder buffer, see below.
* @auto_seq: used for offloaded BA sessions to automatically pick head_seq_and
* and ssn.
* @removed: this session is removed (but might have been found due to RCU)
* @started: this session has started (head ssn or higher was received)
Annotation
- Immediate include surface: `linux/list.h`, `linux/types.h`, `linux/if_ether.h`, `linux/workqueue.h`, `linux/average.h`, `linux/bitfield.h`, `linux/etherdevice.h`, `linux/rhashtable.h`.
- Detected declarations: `struct airtime_info`, `struct sta_info`, `struct tid_ampdu_tx`, `struct tid_ampdu_rx`, `struct sta_ampdu_mlme`, `struct ieee80211_fast_tx`, `struct ieee80211_fast_rx`, `struct mesh_sta`, `struct ieee80211_sta_rx_stats`, `struct ieee80211_fragment_entry`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.