STRUCT IWL_MVM_STA_STATE_OPS(9)
πΈ NAME πΈ
struct iwl_mvm_sta_state_ops β the callback squad for the sta_state() ops π
(this one's from the Kernel API Manual, bestie, so you know it's official)
β¨ SYNOPSIS β¨
struct iwl_mvm_sta_state_ops {
int (*add_sta)(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
struct ieee80211_sta *sta);
int (*update_sta)(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
struct ieee80211_sta *sta);
int (*rm_sta)(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct
ieee80211_sta *sta);
int (*mac_ctxt_changed)(struct iwl_mvm *mvm, struct ieee80211_vif
*vif, bool force_assoc_off);
};
okay so it's literally just a struct full of function pointers π four of them, each one a lil designated driver for a different sta_state moment. no cap.
π¦ Members π¦
add_staβ pointer to the function that adds a new sta β¨ (yes, the name literally tells you what it does, we love a self-documenting king π)update_staβ pointer to the function that updates a sta π₯rm_staβ pointer to the functions that removes a sta π (the original says "functions", plural, so I'm passing that along untouched, don't come for me π)mac_ctxt_changedβ pointer to the function that handles a change in mac ctxt π§
π Description π
So here's the tea β: both the MLD and non-MLD versions of sta_state are, like, almost identical β the only difference between them is these function calls. That's it. That's the whole plot.
So instead of duplicating the entire vibe, each version just sends its own specific function calls over to iwl_mvm_mac_sta_state_common. Shared logic stays shared, version-specific behaviour gets slotted in through this little struct of callbacks. it's giving "we're not doing copy-paste in this house" π«Ά iconic, honestly.
π SEE ALSO π
Kernel file ./drivers/net/wireless/intel/iwlwifi/mvm/sta.h
- DQA - Dynamic Queue Allocation -introduction(9)
- station table - introduction(9)
- station table - locking(9)
- station table - internal stations(9)
- station table - AP Station in STA mode(9)
- station table - Drain vs. Flush(9)
- station table - fw restart(9)
- AP mode - PS(9)
- enum
iwl_mvm_agg_state(9) - struct
iwl_mvm_tid_data(9) - enum
iwl_mvm_rxq_notif_type(9) - struct
iwl_mvm_internal_rxq_notif(9) - struct
iwl_mvm_rxq_dup_data(9) - struct
iwl_mvm_link_sta(9) - struct
iwl_mvm_sta(9) - struct
iwl_mvm_int_sta(9) iwl_mvm_sta_send_to_fw(9)
bestie, that's a lot of cross-references β go read them, I promise it's worth it π
and that's the whole page!! π brought to you by ./drivers/net/wireless/intel/i..., stamped October 2026, and it's still out here being struct iwl_mvm_sta_state_ops(9) β slay, we stan a stable API legend πβ¨ byeee π
π¦ 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