ENUM IEEE80211_KEY_FLAGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so bestie, this is the manual page for enum ieee80211_key_flags β€” literally key flags β€” and we're reading it from the Kernel API Manual. This is part 1, so get comfy, we're going through every single flag. πŸŽ€βœ¨


πŸ¦‹ SYNOPSIS πŸ¦‹

enum ieee80211_key_flags {
    IEEE80211_KEY_FLAG_GENERATE_IV_MGMT ,
    IEEE80211_KEY_FLAG_GENERATE_IV ,
    IEEE80211_KEY_FLAG_GENERATE_MMIC ,
    IEEE80211_KEY_FLAG_PAIRWISE ,
    IEEE80211_KEY_FLAG_SW_MGMT_TX ,
    IEEE80211_KEY_FLAG_PUT_IV_SPACE ,
    IEEE80211_KEY_FLAG_RX_MGMT ,
    IEEE80211_KEY_FLAG_RESERVE_TAILROOM ,
    IEEE80211_KEY_FLAG_PUT_MIC_SPACE ,
    IEEE80211_KEY_FLAG_NO_AUTO_TX ,
    IEEE80211_KEY_FLAG_GENERATE_MMIE ,
    IEEE80211_KEY_FLAG_SPP_AMSDU

};

πŸ’… Constants πŸ’…

bestie, here are the constants in order β€” no skips, no β€œoops I forgot one”, we are doing all of them. ✨

  • IEEE80211_KEY_FLAG_GENERATE_IV_MGMT β€” the driver should set this for a CCMP/GCMP key when it needs IV generation only for management frames (MFP). πŸ’–
  • IEEE80211_KEY_FLAG_GENERATE_IV β€” the driver should set this to say it needs IV generation for this particular key. lowkey important: setting this flag does not necessarily mean the SKBs will have sufficient tailroom for ICV or MIC. 🫢
  • IEEE80211_KEY_FLAG_GENERATE_MMIC β€” the driver should set this for a TKIP key if it needs Michael MIC generation done in software. 🧚
  • IEEE80211_KEY_FLAG_PAIRWISE β€” set by mac80211, this one means the key is pairwise rather than a shared key. πŸ’«
  • IEEE80211_KEY_FLAG_SW_MGMT_TX β€” the driver should set this for a CCMP/GCMP key if it needs CCMP/GCMP encryption of management frames (MFP) to happen in software. πŸ’…
  • IEEE80211_KEY_FLAG_PUT_IV_SPACE β€” the driver should set this if space should be prepared for the IV, but the IV itself should not be generated. ⚠️ Do not set this together with IEEE80211_KEY_FLAG_GENERATE_IV on the same key. Also, setting this flag does not necessarily mean the SKBs will have sufficient tailroom for ICV or MIC. 🌸
  • IEEE80211_KEY_FLAG_RX_MGMT β€” this key will be used to decrypt received management frames. The flag can help drivers that have a hardware crypto implementation that doesn't deal with management frames properly, by letting them not upload the keys to hardware and fall back to software crypto. note note note: this flag deals only with RX β€” if your crypto engine can't deal with TX, you can also set the IEEE80211_KEY_FLAG_SW_MGMT_TX flag to encrypt such frames in SW. πŸ¦‹
  • IEEE80211_KEY_FLAG_RESERVE_TAILROOM β€” the driver should set this for a key to indicate that sufficient tailroom must always be reserved for ICV or MIC, even when HW encryption is enabled. πŸ‘‘
  • IEEE80211_KEY_FLAG_PUT_MIC_SPACE β€” the driver should set this for a TKIP key if it only requires MIC space. ⚠️ Do not set this together with IEEE80211_KEY_FLAG_GENERATE_MMIC on the same key. πŸ“
  • IEEE80211_KEY_FLAG_NO_AUTO_TX β€” key needs explicit Tx activation. periodt. πŸ’€
  • IEEE80211_KEY_FLAG_GENERATE_MMIE β€” the driver should set this for an AES_CMAC or an AES_GMAC key to indicate that it requires sequence number generation only. 🌈
  • IEEE80211_KEY_FLAG_SPP_AMSDU β€” SPP A-MSDUs can be used with this key (set by mac80211 from the sta->spp_amsdu flag). πŸ’œ

🌟 Description 🌟

These flags are used for communication about keys between the driver and mac80211, with the flags parameter of struct ieee80211_key_conf. 🫢✨

πŸ’… SEE ALSO πŸ’…

okay bestie, buckle up β€” this is the iconic link dump, the whole mac80211 extended universe in one place. Every single one of these is a (9) manpage, so format them however your man setup likes. Not me listing all 274 of them, but here we are, slaying πŸŽ€

  • Kernel file ./include/net/mac80211.h
  • Introduction(9)
  • Calling mac80211 from interrupts(9)
  • Warning(9)
  • Frame format(9)
  • mac80211 workqueue(9)
  • mac80211 software tx queueing(9)
  • HW timestamping(9)
  • enum ieee80211_max_queues(9)
  • enum ieee80211_ac_numbers(9)
  • struct ieee80211_tx_queue_params(9)
  • enum ieee80211_chanctx_change(9)
  • struct ieee80211_chan_req(9)
  • struct ieee80211_chanctx_conf(9)
  • enum ieee80211_chanctx_switch_mode(9)
  • struct ieee80211_vif_chanctx_switch(9)
  • enum ieee80211_bss_change(9)
  • enum ieee80211_event_type(9)
  • enum ieee80211_rssi_event_data(9)
  • struct ieee80211_rssi_event(9)
  • enum ieee80211_mlme_event_data(9)
  • enum ieee80211_mlme_event_status(9)
  • struct ieee80211_mlme_event(9)
  • struct ieee80211_ba_event(9)
  • struct ieee80211_event(9)
  • struct ieee80211_mu_group_data(9)
  • struct ieee80211_ftm_responder_params(9)
  • struct ieee80211_fils_discovery(9)
  • struct ieee80211_parsed_tpe(9)
  • struct ieee80211_bss_npca_params(9)
  • struct ieee80211_bss_conf(9)

the bss/event-adjacent girlies, we love them πŸ’–

  • struct ieee80211_nan_channel(9)
  • struct ieee80211_nan_peer_map(9)
  • struct ieee80211_nan_peer_sched(9)
  • enum mac80211_tx_info_flags(9)
  • enum mac80211_tx_control_flags(9)
  • enum mac80211_tx_status_flags(9)
  • enum mac80211_rate_control_flags(9)
  • struct ieee80211_tx_rate(9)
  • struct ieee80211_tx_info(9)
  • struct ieee80211_tx_status(9)
  • struct ieee80211_scan_ies(9)
  • ieee80211_tx_info_clear_status(9)
  • enum mac80211_rx_flags(9)
  • enum mac80211_rx_encoding_flags(9)
  • struct ieee80211_rx_status(9)
  • enum ieee80211_conf_flags(9)
  • enum ieee80211_conf_changed(9)
  • enum ieee80211_smps_mode(9)
  • struct ieee80211_conf(9)
  • struct ieee80211_channel_switch(9)
  • enum ieee80211_vif_flags(9)
  • enum ieee80211_offload_flags(9)
  • struct ieee80211_eml_params(9)
  • struct ieee80211_nan_sched_cfg(9)
  • struct ieee80211_vif_cfg(9)
  • struct ieee80211_neg_ttlm(9)
  • enum ieee80211_neg_ttlm_res(9)
  • struct ieee80211_vif(9)
  • ieee80211_vif_usable_links(9)
  • ieee80211_vif_is_mld(9)
  • ieee80211_vif_link_active(9)
  • wdev_to_ieee80211_vif(9)
  • ieee80211_vif_to_wdev(9)

the vif-to-wdev pipeline is lowkey underrated, iykyk πŸ¦‹

  • struct ieee80211_key_conf(9)
  • struct ieee80211_key_seq(9)
  • enum set_key_cmd(9)
  • enum ieee80211_sta_state(9)
  • enum ieee80211_sta_rx_bandwidth(9)
  • struct ieee80211_sta_rates(9)
  • struct ieee80211_sta_txpwr(9)
  • struct ieee80211_sta_aggregates(9)
  • struct ieee80211_link_sta(9)
  • struct ieee80211_sta(9)
  • enum sta_notify_cmd(9)
  • struct ieee80211_tx_control(9)
  • struct ieee80211_txq(9)
  • enum ieee80211_hw_flags(9)
  • struct ieee80211_hw(9)
  • struct ieee80211_scan_request(9)
  • struct ieee80211_tdls_ch_sw_params(9)
  • wiphy_to_ieee80211_hw(9)
  • SET_IEEE80211_DEV(9)
  • SET_IEEE80211_PERM_ADDR(9)
  • ieee80211_free_txskb(9)
  • ieee80211_purge_tx_queue(9)
  • Hardware crypto acceleration(9)
  • Powersave support(9)
  • Beacon filter support(9)
  • Spatial multiplexing power save(9)
  • Frame filtering(9)
  • AP support for powersaving clients(9)
  • HW queue control(9)
  • enum ieee80211_filter_flags(9)
  • enum ieee80211_ampdu_mlme_action(9)
  • struct ieee80211_ampdu_params(9)
  • enum ieee80211_frame_release_type(9)
  • enum ieee80211_rate_control_changed(9)
  • enum ieee80211_roc_type(9)
  • enum ieee80211_reconfig_type(9)
  • struct ieee80211_prep_tx_info(9)
  • struct ieee80211_ops(9)

struct ieee80211_ops(9) is literally the main character of driver land, no cap πŸ‘‘

beacon + frame-building girlies, y'all ate that whole section fr fr πŸ”₯

the iterator + aggregation block, we stan a lock-annotated queen πŸ’… (atomic, mtx, irqsafe β€” pick your fighter)

capability getters going HE β†’ EHT β†’ UHR, we love a glow-up arc ✨

and that's the whole list, bestie β€” ieee80211_encrypt_tx_skb(9) closing it out like the final chorus of a banger 🎀


ngl if you read all 274 of those you're not a regular reader, you're the reader. vibe check: passed, with honors 🌈

πŸ’– that's the entire page!! footer time: this beauty lives in ./include/net, and it's dated October 2026. go forth and man responsibly, bestie β€” mwah πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from