STRUCT IWL_MVM_BAID_DATA(9)
β¨ struct iwl_mvm_baid_data(9) β BA session data β¨
okay so bestie, we're in the Kernel API Manual today and the star of the show is struct iwl_mvm_baid_data, which is literally just BA session data π
no cap, that's the whole NAME section, we move fast here.
πΈ NAME πΈ
struct iwl_mvm_baid_data β BA session data. that's it. that's the vibe. π
π¦ SYNOPSIS π¦
like, here's the whole glow-up, character for character, don't touch it:
struct iwl_mvm_baid_data {
struct rcu_head rcu_head;
u32 sta_mask;
u8 tid;
u8 baid;
u16 timeout;
u16 buf_size;
u16 entries_per_queue;
unsigned long last_rx;
struct timer_list session_timer;
struct iwl_mvm_baid_data **rcu_ptr;
struct iwl_mvm *mvm;
struct iwl_mvm_reorder_buffer reorder_buf[IWL_MAX_RX_HW_QUEUES];
struct iwl_mvm_reorder_buf_entry entries[];
};
she's got range π struct, array, flexible array member at the end β main character energy fr fr.
π MEMBERS π
bestie, let's meet the cast one by one, they all ate:
rcu_headβ the RCU head for freeing this data</... okay no, for real: it's the RCU head used for freeing this data π«Άsta_maskβ the current station mask for the BAID β¨tidβ the tid of the session πbaidβ the baid of the session πtimeoutβ the timeout that got set in the addba request β°buf_sizeβ the reorder buffer size, as set by the last addba request πentries_per_queueβ the # of buffers per queue; and lowkey this one actually gets aligned up to avoid cache line sharing between queues, iykyk π§last_rxβ last rx jiffies, and it only gets updated if the timeout passed since the last update πsession_timerβ a timer to check if the BA session expired; it runs at 2 * timeout βrcu_ptrβ BA data RCU protected access π₯mvmβ the mvm pointer, needed for timer context (timer said "I need an adult") πreorder_bufβ the reorder buffer, allocated per queue πentriesβ data π¦
π SEE ALSO π
go look at the kernel file ./drivers/net/wireless/intel/iwlwifi/mvm/mvm.h, and also these iconic neighbors:
struct iwl_mvm_mod_params(9)enum iwl_power_scheme(9)enum iwl_mvm_low_latency_force(9)enum iwl_mvm_low_latency_cause(9)struct iwl_mvm_link_bf_data(9)struct iwl_probe_resp_data(9)struct iwl_mvm_vif_link_info(9)struct iwl_mvm_vif(9)struct iwl_mvm_tt_mgmt(9)struct iwl_mvm_thermal_device(9)struct iwl_mvm_reorder_buffer(9)struct iwl_mvm_reorder_buf_entry(9)struct iwl_mvm_tvqm_txq_info(9)struct iwl_mvm_acs_survey_channel(9)enum iwl_mvm_status(9)struct iwl_mvm_roc_ops(9)struct iwl_mvm_switch_vif_chanctx_ops(9)
lowkey mandatory reading list, but make it cute. no skimming bestie, these are all linked from the same header π«Ά
and that's the whole page!! source: ./drivers/net/wireless/intel/i..., dated October 2026, and we're still slaying in struct iwl_mvm_baid_data(9) π
β¨ bye bestie, go read some kernel headers π
π¦ 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