STRUCT IWL_MVM_VIF_LINK_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so this is a page from the Kernel API Manual, section 9, all about struct iwl_mvm_vif_link_info β€” and yes the header in the original is literally struct iwl_m...if_link_info(9) because man page titles got truncated and honestly? relatable, we've all been cut off mid-sentence in the group chat πŸ’€


✨ NAME ✨

struct iwl_mvm_vif_link_info β€” the per-link data that lives inside a Virtual Interface πŸ’… like, one struct per link, and she's carrying a LOT.


🌸 SYNOPSIS 🌸

struct iwl_mvm_vif_link_info {
    u8 bssid[ETH_ALEN];
    u8 ap_sta_id;
    u8 fw_link_id;
    struct iwl_mvm_int_sta bcast_sta;
    struct iwl_mvm_int_sta mcast_sta;
    struct {
      u32 num_beacons, accu_num_beacons;
      u8 avg_signal;
    } beacon_stats;
    enum ieee80211_smps_mode smps_requests[NUM_IWL_MVM_SMPS_REQ];
    struct iwl_probe_resp_data *probe_resp_data;
    struct ieee80211_key_conf *igtk;
    bool he_ru_2mhz_block;
    bool active;
    bool listen_lmac;
    bool csa_block_tx;
    u16 cab_queue;
    struct iwl_mvm_phy_ctxt *phy_ctxt;
    struct ieee80211_tx_queue_params queue_params[IEEE80211_NUM_ACS];
    u16 mgmt_queue;
    struct iwl_mvm_link_bf_data bf_data;
    u32 average_beacon_energy;
 };

look at her. absolute main character struct energy. no notes. πŸŽ€


πŸ‘‘ Members πŸ‘‘

okay bestie, field by field, let's get into it:

  • bssid β€” the BSSID for this (client) interface. her government name, basically πŸͺͺ
  • ap_sta_id β€” the sta_id of the AP. important caveat: this is valid only if the VIF type is STA πŸ‘€
  • fw_link_id β€” the id of the link, according to the FW API. the firmware's own little name tag for her πŸ”–
  • bcast_sta β€” station used for broadcast packets. used by the following vifs: P2P_DEVICE, GO and AP. so like, the broadcast girlies πŸ“’
  • mcast_sta β€” multicast station. sister of the above, different crowd 🫢
  • beacon_stats β€” beacon statistics, and she contains three things: the number of received beacons (num_beacons), the number of received beacons accumulated over an FW restart (accu_num_beacons), and the current average signal of beacons retrieved from the firmware (avg_signal). a whole little trio in a nested struct, iconic 🌈
  • smps_requests β€” the SMPS requests of different parts of the driver, combined on update to yield the overall request to mac80211. democracy in a NUM_IWL_MVM_SMPS_REQ-sized array πŸ’œ
  • probe_resp_data β€” data from an FW notification, used to store NOA and CSA related data that gets inserted into the probe response. the receipts, filed for later πŸ“¨
  • igtk β€” the current IGTK programmed into the firmware. key material, handle with care πŸ”
  • he_ru_2mhz_block β€” when set, 26-tone RU OFDMA transmissions should be blocked. just say no to 26-tone RU OFDMA 🚫
  • active β€” indicates the link is active in FW. purely for sanity checking, she's a vibe check in boolean form βœ…
  • listen_lmac β€” indicates this link is allocated to the listen LMAC. yes she's on listen duty πŸ‘‚
  • csa_block_tx β€” we got CSA with mode=1. that's the whole note. that's the field πŸ’€
  • cab_queue β€” the content-after-beacon (multicast) queue. cab stands for content-after-beacon, not the taxi, sorry to disappoint πŸš•
  • phy_ctxt β€” the phy context allocated to this link, if any. note the if any β€” sometimes she's allocated, sometimes she's not, she contains multitudes 🧚
  • queue_params β€” QoS params for this MAC, in an IEEE80211_NUM_ACS-sized array πŸ“Š
  • mgmt_queue β€” the queue number for unbufferable management frames. unbufferable, honestly same 😭
  • bf_data β€” beacon filtering data, in the form of a struct iwl_mvm_link_bf_data πŸŽ€
  • average_beacon_energy β€” average beacon energy for beacons received during client connections. energy, but make it literally measurable ⚑
no cap: every field above is straight from the man page β€” I'm just narrating, not inventing a single thing 🫢

πŸ”₯ SEE ALSO πŸ”₯

go read the whole friend group, they're all in the kernel file ./drivers/net/wireless/intel/iwlwifi/mvm/mvm.h, struct iwl_mvm_vif_link_info:

  • 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(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_baid_data(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)

and that's the whole page, bestie ✨ source is ./drivers/net/wireless/intel/i... (the truncated path, living her truth), dated October 2026, and the footer still insists on calling her struct iwl_m...if_link_info(9) β€” love that for her. mwah πŸ’‹πŸ’–

πŸ“¦ where this page comes from