STRUCT TID_AMPDU_TX(9)
π struct tid_ampdu_tx(9) π
okay bestie, welcome to the Kernel API Manual, section 9 β this is the whole entire glow-up of struct tid_ampdu_tx, aka TID aggregation info but make it transmit. she's the Tx sister, she's booked and busy, and she's about to explain herself. periodt. π
β¨ NAME β¨
struct tid_ampdu_tx β TID aggregation information (Tx). yes that's literally what it is, no notes, she ate. π
π¦ SYNOPSIS π¦
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;
};
look at her. seventeen fields. main character energy fr fr. every single one is listed below, so don't you dare skip ahead π
πΈ MEMBERS πΈ
rcu_headβ the rcu head for freeing the structure. she's the exit plan, lowkey iconic of her.session_timerβ checks if we keep Tx-ing on the TID, based on the timeout value. she's the vibe check that keeps the session alive. β°addba_resp_timerβ timer for the peer's response to the addba request. it's giving "waiting for the group chat to text back". πpendingβ the pending frames queue β and heads up, use the sta's spinlock to protect it. πstaβ the station we are attached to. our plus-one. π«Άstateβ session state (see above). yes, "see above", that's what the manpage says, iykyk.last_txβ jiffies of the last tx activity. timestamping the last time she spoke, honestly relatable.timeoutβ session timeout value, to be filled in ADDBA requests. she's the deadline queen. πdialog_tokenβ dialog token for the aggregation session. no cap, she's just the token.stop_initiatorβ the initiator of a session stop. who hit the brakes, exactly.tx_stopβ TX DelBA frame when stopping. yes babe, announce your exit. πbuf_sizeβ reorder buffer size at the receiver. not ours! theirs. keep up. πssnβ starting sequence number of the session. the origin story, literally.failed_bar_ssnβ ssn of the last failed BAR tx attempt. the flop we don't talk about. πbar_pendingβ BAR needs to be re-sent. she's got a draft that never got sent, we've all been there. π©amsduβ support A-MSDU within A-MDPU. (yes, that's how the original spells it, we don't fix it, we don't touch it, we respect it. π)ndpβ this session is using NDP Block ACKs. fancy.tidβ the TID number. the number herself.
π DESCRIPTION π
so this structure's lifetime is managed by RCU, and any assignment to the array that holds it must hold the aggregation mutex. rules are rules bestie, no skipping. π
now here's the spicy part β 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. read the comments in the tx code that touches it, i'm begging. π
fr fr, "if and only if" is doing a LOT of heavy lifting in that sentence. don't be the person who ignores it. that's not a vibe, that's a bug.
β SEE ALSO β
Kernel file ./net/mac80211/sta_info.h enum ieee80211_sta_info_flags(9), struct tid_ampdu_rx(9), struct sta_ampdu_mlme(9), struct ieee80211_fast_tx(9), struct ieee80211_fast_rx(9), struct mesh_sta(9), struct link_sta_info(9), struct ieee80211_sta_removed_link_stats(9), struct sta_info(9), __sta_info_flush(9), sta_info_flush(9)
like the whole friend group showed up. slay. π«Άπ
that's the page babes β brought to you straight out of ./net/mac80211, dated October 2026, with love. π§β¨ go read struct tid_ampdu_rx(9) next, she misses you. ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms