STRUCT IWL_MVM_BAID_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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