STRUCT VIF_PARAMS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct vif_params β€” bestie, this is the lil struct that describes your virtual interface parameters ✨ (yes, it's from the Kernel API Manual, section 9, and no, we're not skipping any of it 🫢)


🌸 SYNOPSIS 🌸

struct vif_params {
    u32 flags;
    int use_4addr;
    u8 macaddr[ETH_ALEN];
    const u8 *vht_mumimo_groups;
    const u8 *vht_mumimo_follow_addr;
 };

Look at her. Five fields. Immaculate struct energy πŸ’…


πŸŽ€ Members πŸŽ€

  • flags β€” ok so these are your monitor interface flags πŸ‘€ if it's 0 nothing changes, no cap. But if it's anything else, MONITOR_FLAG_CHANGED gets set. That's the whole vibe check on this one πŸ¦‹
  • use_4addr β€” literally just "use 4-address frames." That's it. That's the field πŸ“
  • macaddr β€” the address to use for this virtual interface πŸ’– and here's the tea: if you set this parameter to the zero address, the driver is allowed to figure out the address itself, as needed. Iconic, flexible, main character behaviour ✨
🚨 But listen β€” this feature is only fully supported by drivers that enable the NL80211_FEATURE_MAC_ON_CREATE flag. Everyone else? Lowkey not guaranteed. Others may support creating: - only p2p devices with specified MAC.

So yeah, that's a real caveat, ngl β€” don't come for me, it's in the source 😭

  • vht_mumimo_groups β€” the MU-MIMO groupID πŸ‘‘ used for monitoring MU-MIMO packets that belong to that MU-MIMO groupID. And it's NULL if not changed β€” so NULL = "no thoughts, head empty, leave it alone" πŸ™ˆ
  • vht_mumimo_follow_addr β€” the MU-MIMO follow address 🌈 used for monitoring MU-MIMO packets going to the specified station. Also NULL if not changed πŸ’œ

more parts coming, don't go anywhere bestie πŸ’…

reg_query_regdb_wmm(9), cfg80211_scan_done(9), cfg80211_sched_scan_results(9), cfg80211_sched_scan_stopped(9), cfg80211_sched_scan_stopped_locked(9), cfg80211_inform_bss_frame_data(9), cfg80211_gen_new_bssid(9), cfg80211_is_element_inherited(9), cfg80211_merge_profile(9), enum cfg80211_bss_frame_type(9), cfg80211_get_ies_channel_number(9), cfg80211_ssid_eq(9), cfg80211_inform_bss_data(9), __cfg80211_get_bss(9), cfg80211_get_bss(9), cfg80211_ref_bss(9), cfg80211_put_bss(9), cfg80211_unlink_bss(9), cfg80211_bss_iter(9), cfg80211_rx_mlme_mgmt(9), cfg80211_auth_timeout(9), struct cfg80211_rx_assoc_resp_data(9), cfg80211_rx_assoc_resp(9), struct cfg80211_assoc_failure(9), cfg80211_assoc_failure(9), cfg80211_tx_mlme_mgmt(9), cfg80211_rx_unprot_mlme_mgmt(9), cfg80211_michael_mic_failure(9), cfg80211_ibss_joined(9), cfg80211_notify_new_peer_candidate(9)

🌈 RFkill integration + Vendor commands + Test mode

πŸ‘‘ The connect / roam / notify girlies

That's the entire list, no cap, zero skips β€” go click through them and have the best time ever πŸ’–βœ¨

…okay so the SEE ALSO list just keeps going, bestie, and honestly? It ate. Here's the rest of the squad, every single one accounted for, no skips, no cap:

That's the whole group chat, bestie β€” sixty-four of them, and yes, you're expected to say hi to all of them. πŸ’…βœ¨ Lowkey the color-change girlies and the NAN girlies are running their own rival group chats, and wiphy_locked_debugfs_read(9) / wiphy_locked_debugfs_write(9) are the twins who only ever show up as a pair. 🫢


okay that's the whole page!! πŸŽ€ This one lives in ./include/net, it's dated October 2026, and it answers to the name struct vif_params(9). Go forth and vif, queen. πŸ‘‘πŸ’–πŸ¦‹

πŸ“¦ where this page comes from