ENUM NL80211_ATTRS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

enum nl80211_attrs β€” the netlink attributes for nl80211, bestie πŸ’…

okay so real quick before we dive in: this is page enum nl80211_attrs(9) out of the Kernel API Manual (section 9, the kernel-interface girlies 🧚). We're talking about enum nl80211_attrs, which is literally just the enum holding all the nl80211 netlink attributes. That's the whole vibe of this section β€” no cap, that's what it is. ✨

Think of it as the master list of attribute names you'll be passing around when you're doing nl80211 netlink stuff. Every one of those attributes is a member of this enum, and the pages coming up are gonna walk through them one by one. πŸŽ€

lowkey important: an enum means these are named constants β€” the actual attribute values are the enum members, so you reference them by name, not by vibing out a number yourself πŸ™ˆ

Hang tight, there's way more coming β€” this was just the intro, the rest of the parts are where it gets juicy πŸ”₯

✨ SYNOPSIS ✨

okay so bestie, this is the big one πŸ’… the synopsis here is literally just the whole enum nl80211_attrs β€” every attribute ID, in order, no cap. it's a lot. like, scrolling-for-a-while a lot. but we're gonna get through it together, chunk by chunk, and nothing gets skipped. 🫢

here's how it opens:

enum nl80211_attrs {
    NL80211_ATTR_UNSPEC ,
    NL80211_ATTR_WIPHY ,
    NL80211_ATTR_WIPHY_NAME ,
    NL80211_ATTR_IFINDEX ,
    NL80211_ATTR_IFNAME ,
    NL80211_ATTR_IFTYPE ,
    NL80211_ATTR_MAC ,
    NL80211_ATTR_KEY_DATA ,
    NL80211_ATTR_KEY_IDX ,
    NL80211_ATTR_KEY_CIPHER ,
    NL80211_ATTR_KEY_SEQ ,
    NL80211_ATTR_KEY_DEFAULT ,
    NL80211_ATTR_BEACON_INTERVAL ,
    NL80211_ATTR_DTIM_PERIOD ,
    NL80211_ATTR_BEACON_HEAD ,
    NL80211_ATTR_BEACON_TAIL ,
    NL80211_ATTR_STA_AID ,
    NL80211_ATTR_STA_FLAGS ,
    NL80211_ATTR_STA_LISTEN_INTERVAL ,
    NL80211_ATTR_STA_SUPPORTED_RATES ,
    NL80211_ATTR_STA_VLAN ,
    NL80211_ATTR_STA_INFO ,
    NL80211_ATTR_WIPHY_BANDS ,
    NL80211_ATTR_MNTR_FLAGS ,

see how it starts with NL80211_ATTR_UNSPEC? iconic behavior honestly, everyone needs a placeholder. then it's straight into WIPHY territory, a whole little key cluster, and the beacon/STA crew. we love a structured opening. ✨


next up, the mesh + BSS + regulatory era, and it rolls right into scan stuff:

    NL80211_ATTR_MESH_ID ,
    NL80211_ATTR_STA_PLINK_ACTION ,
    NL80211_ATTR_MPATH_NEXT_HOP ,
    NL80211_ATTR_MPATH_INFO ,
    NL80211_ATTR_BSS_CTS_PROT ,
    NL80211_ATTR_BSS_SHORT_PREAMBLE ,
    NL80211_ATTR_BSS_SHORT_SLOT_TIME ,
    NL80211_ATTR_HT_CAPABILITY ,
    NL80211_ATTR_SUPPORTED_IFTYPES ,
    NL80211_ATTR_REG_ALPHA2 ,
    NL80211_ATTR_REG_RULES ,
    NL80211_ATTR_MESH_CONFIG ,
    NL80211_ATTR_BSS_BASIC_RATES ,
    NL80211_ATTR_WIPHY_TXQ_PARAMS ,
    NL80211_ATTR_WIPHY_FREQ ,
    NL80211_ATTR_WIPHY_CHANNEL_TYPE ,
    NL80211_ATTR_KEY_DEFAULT_MGMT ,
    NL80211_ATTR_MGMT_SUBTYPE ,
    NL80211_ATTR_IE ,
    NL80211_ATTR_MAX_NUM_SCAN_SSIDS ,
    NL80211_ATTR_SCAN_FREQUENCIES ,
    NL80211_ATTR_SCAN_SSIDS ,
    NL80211_ATTR_GENERATION ,
    NL80211_ATTR_BSS ,
    NL80211_ATTR_REG_INITIATOR ,
    NL80211_ATTR_REG_TYPE ,
    NL80211_ATTR_SUPPORTED_COMMANDS ,

lowkey obsessed with how NL80211_ATTR_BSS shows up as its own thing right after all the BSS_* variants. queen of being both a category and an attribute. πŸ‘‘


and then the frames/auth/cipher suite section, which is giving "I know what a 4-way handshake is" energy:

    NL80211_ATTR_FRAME ,
    NL80211_ATTR_SSID ,
    NL80211_ATTR_AUTH_TYPE ,
    NL80211_ATTR_REASON_CODE ,
    NL80211_ATTR_KEY_TYPE ,
    NL80211_ATTR_MAX_SCAN_IE_LEN ,
    NL80211_ATTR_CIPHER_SUITES ,
    NL80211_ATTR_FREQ_BEFORE ,
    NL80211_ATTR_FREQ_AFTER ,
    NL80211_ATTR_FREQ_FIXED ,
    NL80211_ATTR_WIPHY_RETRY_SHORT ,
    NL80211_ATTR_WIPHY_RETRY_LONG ,
    NL80211_ATTR_WIPHY_FRAG_THRESHOLD ,
    NL80211_ATTR_WIPHY_RTS_THRESHOLD ,
    NL80211_ATTR_TIMED_OUT ,
    NL80211_ATTR_USE_MFP ,
    NL80211_ATTR_STA_FLAGS2 ,

NL80211_ATTR_STA_FLAGS2 β€” the sequel nobody asked for but everybody needed 😭 we respect a second revision.


okay, deep breath, this next chunk is a long one. control ports, test data, WPA versions, AKM suites, keys, PMKIDs, survey info… it's a lot, and yes, every single one is here:

    NL80211_ATTR_CONTROL_PORT ,
    NL80211_ATTR_TESTDATA ,
    NL80211_ATTR_PRIVACY ,
    NL80211_ATTR_DISCONNECTED_BY_AP ,
    NL80211_ATTR_STATUS_CODE ,
    NL80211_ATTR_CIPHER_SUITES_PAIRWISE ,
    NL80211_ATTR_CIPHER_SUITE_GROUP ,
    NL80211_ATTR_WPA_VERSIONS ,
    NL80211_ATTR_AKM_SUITES ,
    NL80211_ATTR_REQ_IE ,
    NL80211_ATTR_RESP_IE ,
    NL80211_ATTR_PREV_BSSID ,
    NL80211_ATTR_KEY ,
    NL80211_ATTR_KEYS ,
    NL80211_ATTR_PID ,
    NL80211_ATTR_4ADDR ,
    NL80211_ATTR_SURVEY_INFO ,
    NL80211_ATTR_PMKID ,
    NL80211_ATTR_MAX_NUM_PMKIDS ,
    NL80211_ATTR_DURATION ,
    NL80211_ATTR_COOKIE ,
    NL80211_ATTR_WIPHY_COVERAGE_CLASS ,
    NL80211_ATTR_TX_RATES ,

NL80211_ATTR_KEY and NL80211_ATTR_KEYS sitting next to each other… plural rights πŸ’€ also NL80211_ATTR_4ADDR starting with a digit is such a flex, C lets you do it in the middle of an identifier and it's fine, periodt.


now the monitor/state-change corner of the enum, including power settings, antenna things and mesh auth:

    NL80211_ATTR_FRAME_MATCH ,
    NL80211_ATTR_ACK ,
    NL80211_ATTR_PS_STATE ,
    NL80211_ATTR_CQM ,
    NL80211_ATTR_LOCAL_STATE_CHANGE ,
    NL80211_ATTR_AP_ISOLATE ,
    NL80211_ATTR_WIPHY_TX_POWER_SETTING ,
    NL80211_ATTR_WIPHY_TX_POWER_LEVEL ,
    NL80211_ATTR_TX_FRAME_TYPES ,
    NL80211_ATTR_RX_FRAME_TYPES ,
    NL80211_ATTR_FRAME_TYPE ,
    NL80211_ATTR_CONTROL_PORT_ETHERTYPE ,
    NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT ,
    NL80211_ATTR_SUPPORT_IBSS_RSN ,
    NL80211_ATTR_WIPHY_ANTENNA_TX ,
    NL80211_ATTR_WIPHY_ANTENNA_RX ,
    NL80211_ATTR_MCAST_RATE ,
    NL80211_ATTR_OFFCHANNEL_TX_OK ,
    NL80211_ATTR_BSS_HT_OPMODE ,
    NL80211_ATTR_KEY_DEFAULT_TYPES ,
    NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION ,
    NL80211_ATTR_MESH_SETUP ,
    NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX ,
    NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX ,
    NL80211_ATTR_SUPPORT_MESH_AUTH ,
    NL80211_ATTR_STA_PLINK_STATE ,

notice how we got WIPHY_ANTENNA_TX / WIPHY_ANTENNA_RX and then the _AVAIL_ twins a bit later? matching set, we love coherence 🌸


wowlan triggers, sched scan, the whole interface-combination family:

    NL80211_ATTR_WOWLAN_TRIGGERS ,
    NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED ,
    NL80211_ATTR_SCHED_SCAN_INTERVAL ,
    NL80211_ATTR_INTERFACE_COMBINATIONS ,
    NL80211_ATTR_SOFTWARE_IFTYPES ,
    NL80211_ATTR_REKEY_DATA ,
    NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS ,
    NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN ,
    NL80211_ATTR_SCAN_SUPP_RATES ,
    NL80211_ATTR_HIDDEN_SSID ,
    NL80211_ATTR_IE_PROBE_RESP ,
    NL80211_ATTR_IE_ASSOC_RESP ,
    NL80211_ATTR_STA_WME ,
    NL80211_ATTR_SUPPORT_AP_UAPSD ,
    NL80211_ATTR_ROAM_SUPPORT ,
    NL80211_ATTR_SCHED_SCAN_MATCH ,
    NL80211_ATTR_MAX_MATCH_SETS ,
    NL80211_ATTR_PMKSA_CANDIDATE ,
    NL80211_ATTR_TX_NO_CCK_RATE ,
    NL80211_ATTR_TDLS_ACTION ,
    NL80211_ATTR_TDLS_DIALOG_TOKEN ,
    NL80211_ATTR_TDLS_OPERATION ,
    NL80211_ATTR_TDLS_SUPPORT ,
    NL80211_ATTR_TDLS_EXTERNAL_SETUP ,

the TDLS block ate, ngl. five in a row, all TDLS_-prefixed, zero notes. πŸ’…


feature flags, probe response, HT/VHT, channel width, center freqs:

    NL80211_ATTR_DEVICE_AP_SME ,
    NL80211_ATTR_DONT_WAIT_FOR_ACK ,
    NL80211_ATTR_FEATURE_FLAGS ,
    NL80211_ATTR_PROBE_RESP_OFFLOAD ,
    NL80211_ATTR_PROBE_RESP ,
    NL80211_ATTR_DFS_REGION ,
    NL80211_ATTR_DISABLE_HT ,
    NL80211_ATTR_HT_CAPABILITY_MASK ,
    NL80211_ATTR_NOACK_MAP ,
    NL80211_ATTR_INACTIVITY_TIMEOUT ,
    NL80211_ATTR_RX_SIGNAL_DBM ,
    NL80211_ATTR_BG_SCAN_PERIOD ,
    NL80211_ATTR_WDEV ,
    NL80211_ATTR_USER_REG_HINT_TYPE ,
    NL80211_ATTR_CONN_FAILED_REASON ,
    NL80211_ATTR_AUTH_DATA ,
    NL80211_ATTR_VHT_CAPABILITY ,
    NL80211_ATTR_SCAN_FLAGS ,
    NL80211_ATTR_CHANNEL_WIDTH ,
    NL80211_ATTR_CENTER_FREQ1 ,
    NL80211_ATTR_CENTER_FREQ2 ,

CENTER_FREQ1 and CENTER_FREQ2… the numbered duo is back and we're seated for it πŸŽ€


P2P, ACLs, radar, ext capa, the protocol/features dump flags:

    NL80211_ATTR_P2P_CTWINDOW ,
    NL80211_ATTR_P2P_OPPPS ,
    NL80211_ATTR_LOCAL_MESH_POWER_MODE ,
    NL80211_ATTR_ACL_POLICY ,
    NL80211_ATTR_MAC_ADDRS ,
    NL80211_ATTR_MAC_ACL_MAX ,
    NL80211_ATTR_RADAR_EVENT ,
    NL80211_ATTR_EXT_CAPA ,
    NL80211_ATTR_EXT_CAPA_MASK ,
    NL80211_ATTR_STA_CAPABILITY ,
    NL80211_ATTR_STA_EXT_CAPABILITY ,
    NL80211_ATTR_PROTOCOL_FEATURES ,
    NL80211_ATTR_SPLIT_WIPHY_DUMP ,
    NL80211_ATTR_DISABLE_VHT ,
    NL80211_ATTR_VHT_CAPABILITY_MASK ,

SPLIT_WIPHY_DUMP is such a specific vibe and I respect that someone sat down and named it that 🫢


MIDs, RIC IEs, crit prot, peer AID, channel switch + CSA announcement material:

    NL80211_ATTR_MDID ,
    NL80211_ATTR_IE_RIC ,
    NL80211_ATTR_CRIT_PROT_ID ,
    NL80211_ATTR_MAX_CRIT_PROT_DURATION ,
    NL80211_ATTR_PEER_AID ,
    NL80211_ATTR_COALESCE_RULE ,
    NL80211_ATTR_CH_SWITCH_COUNT ,
    NL80211_ATTR_CH_SWITCH_BLOCK_TX ,
    NL80211_ATTR_CSA_IES ,
    NL80211_ATTR_CNTDWN_OFFS_BEACON ,
    NL80211_ATTR_CNTDWN_OFFS_PRESP ,
    NL80211_ATTR_RXMGMT_FLAGS ,
    NL80211_ATTR_STA_SUPPORTED_CHANNELS ,
    NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES ,

CNTDWN_OFFS_BEACON and CNTDWN_OFFS_PRESP β€” the abbreviation squad, together again 😭


DFS, 5/10 MHz, vendor passthrough, QoS map, MAC hints, socket owner:

    NL80211_ATTR_HANDLE_DFS ,
    NL80211_ATTR_SUPPORT_5_MHZ ,
    NL80211_ATTR_SUPPORT_10_MHZ ,
    NL80211_ATTR_OPMODE_NOTIF ,
    NL80211_ATTR_VENDOR_ID ,
    NL80211_ATTR_VENDOR_SUBCMD ,
    NL80211_ATTR_VENDOR_DATA ,
    NL80211_ATTR_VENDOR_EVENTS ,
    NL80211_ATTR_QOS_MAP ,
    NL80211_ATTR_MAC_HINT ,
    NL80211_ATTR_WIPHY_FREQ_HINT ,
    NL80211_ATTR_MAX_AP_ASSOC_STA ,
    NL80211_ATTR_TDLS_PEER_CAPABILITY ,
    NL80211_ATTR_SOCKET_OWNER ,
    NL80211_ATTR_CSA_C_OFFSETS_TX ,
    NL80211_ATTR_MAX_CSA_COUNTERS ,
    NL80211_ATTR_TDLS_INITIATOR ,

the four VENDOR_ ones in a tidy little block, plus the hints right after each other. neat. 🌈


RRM, dynamic ACK, TSID/user prio, SMPS, operating class, MAC mask, self-managed reg, ext features, radio stats, netns, sched scan delay, indoor:

    NL80211_ATTR_USE_RRM ,
    NL80211_ATTR_WIPHY_DYN_ACK ,
    NL80211_ATTR_TSID ,
    NL80211_ATTR_USER_PRIO ,
    NL80211_ATTR_ADMITTED_TIME ,
    NL80211_ATTR_SMPS_MODE ,
    NL80211_ATTR_OPER_CLASS ,
    NL80211_ATTR_MAC_MASK ,
    NL80211_ATTR_WIPHY_SELF_MANAGED_REG ,
    NL80211_ATTR_EXT_FEATURES ,
    NL80211_ATTR_SURVEY_RADIO_STATS ,
    NL80211_ATTR_NETNS_FD ,
    NL80211_ATTR_SCHED_SCAN_DELAY ,
    NL80211_ATTR_REG_INDOOR ,

okay NL80211_ATTR_NETNS_FD bestie… network namespace fd, love that for you 🌸


sched scan plans, PBSS, BSS select, P2P PS, PAD (yes really), MU-MIMO, TSF timestamps, measurement duration, mesh peer AID, NAN, bands:

    NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS ,
    NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL ,
    NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS ,
    NL80211_ATTR_SCHED_SCAN_PLANS ,
    NL80211_ATTR_PBSS ,
    NL80211_ATTR_BSS_SELECT ,
    NL80211_ATTR_STA_SUPPORT_P2P_PS ,
    NL80211_ATTR_PAD ,
    NL80211_ATTR_IFTYPE_EXT_CAPA ,
    NL80211_ATTR_MU_MIMO_GROUP_DATA ,
    NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR ,
    NL80211_ATTR_SCAN_START_TIME_TSF ,
    NL80211_ATTR_SCAN_START_TIME_TSF_BSSID ,
    NL80211_ATTR_MEASUREMENT_DURATION ,
    NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY ,
    NL80211_ATTR_MESH_PEER_AID ,
    NL80211_ATTR_NAN_MASTER_PREF ,
    NL80211_ATTR_BANDS ,
    NL80211_ATTR_NAN_FUNC ,
    NL80211_ATTR_NAN_MATCH ,

shoutout to NL80211_ATTR_PAD, just vibing in the middle of the list doing nothing dramatic 😌 and NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY is the longest-girl dinner in this chunk, we stan.


FILS era (KEK, nonces, ERP everything, cache id), PMK, sched scan multi/max reqs:

    NL80211_ATTR_FILS_KEK ,
    NL80211_ATTR_FILS_NONCES ,
    NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED ,
    NL80211_ATTR_BSSID ,
    NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI ,
    NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST ,
    NL80211_ATTR_TIMEOUT_REASON ,
    NL80211_ATTR_FILS_ERP_USERNAME ,
    NL80211_ATTR_FILS_ERP_REALM ,
    NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM ,
    NL80211_ATTR_FILS_ERP_RRK ,
    NL80211_ATTR_FILS_CACHE_ID ,
    NL80211_ATTR_PMK ,
    NL80211_ATTR_SCHED_SCAN_MULTI ,
    NL80211_ATTR_SCHED_SCAN_MAX_REQS ,

the FILS_ERP run is giving "we documented the whole realm" and honestly? needed. ✨


port auth, external auth actions, NSS, TXQ knobs:

    NL80211_ATTR_WANT_1X_4WAY_HS ,
    NL80211_ATTR_PMKR0_NAME ,
    NL80211_ATTR_PORT_AUTHORIZED ,
    NL80211_ATTR_EXTERNAL_AUTH_ACTION ,
    NL80211_ATTR_EXTERNAL_AUTH_SUPPORT ,
    NL80211_ATTR_NSS ,
    NL80211_ATTR_ACK_SIGNAL ,
    NL80211_ATTR_CONTROL_PORT_OVER_NL80211 ,
    NL80211_ATTR_TXQ_STATS ,
    NL80211_ATTR_TXQ_LIMIT ,
    NL80211_ATTR_TXQ_MEMORY_LIMIT ,
    NL80211_ATTR_TXQ_QUANTUM ,

WANT_1X_4WAY_HS β€” starting an attribute with WANT_ is such main character energy, it's basically a mood not a flag πŸ’…


HE + FTM + power + SAE + TWT + EDMG:

    NL80211_ATTR_HE_CAPABILITY ,
    NL80211_ATTR_FTM_RESPONDER ,
    NL80211_ATTR_FTM_RESPONDER_STATS ,
    NL80211_ATTR_TIMEOUT ,
    NL80211_ATTR_PEER_MEASUREMENTS ,
    NL80211_ATTR_AIRTIME_WEIGHT ,
    NL80211_ATTR_STA_TX_POWER_SETTING ,
    NL80211_ATTR_STA_TX_POWER ,
    NL80211_ATTR_SAE_PASSWORD ,
    NL80211_ATTR_TWT_RESPONDER ,
    NL80211_ATTR_HE_OBSS_PD ,
    NL80211_ATTR_WIPHY_EDMG_CHANNELS ,
    NL80211_ATTR_WIPHY_EDMG_BW_CONFIG ,

STA_TX_POWER_SETTING then STA_TX_POWER β€” setting, then the value. the pipeline is pipelining. πŸ‘‘


and the tail of this part β€” 6 GHz, FILS discovery, unsolicited broadcast probe response, S1G:

    NL80211_ATTR_VLAN_ID ,
    NL80211_ATTR_HE_BSS_COLOR ,
    NL80211_ATTR_IFTYPE_AKM_SUITES ,
    NL80211_ATTR_TID_CONFIG ,
    NL80211_ATTR_CONTROL_PORT_NO_PREAUTH ,
    NL80211_ATTR_PMK_LIFETIME ,
    NL80211_ATTR_PMK_REAUTH_THRESHOLD ,
    NL80211_ATTR_RECEIVE_MULTICAST ,
    NL80211_ATTR_WIPHY_FREQ_OFFSET ,
    NL80211_ATTR_CENTER_FREQ1_OFFSET ,
    NL80211_ATTR_SCAN_FREQ_KHZ ,
    NL80211_ATTR_HE_6GHZ_CAPABILITY ,
    NL80211_ATTR_FILS_DISCOVERY ,
    NL80211_ATTR_UNSOL_BCAST_PROBE_RESP ,
    NL80211_ATTR_S1G_CAPABILITY ,

and that's where this part of the list lands β€” on NL80211_ATTR_S1G_CAPABILITY. no closing brace yet bestie, we're not done, there's more coming πŸ˜­πŸ’–

fr fr: the vibe is cute but the deal is serious β€” these identifiers are literal, exact, and case-sensitive. don't go retyping them from memory, copy them straight from the header. πŸŽ€

...and the enum literally does not stop, bestie. Here's the rest of the list, still inside the same enum declaration 🫢

           NL80211_ATTR_S1G_CAPABILITY_MASK ,
           NL80211_ATTR_SAE_PWE ,
           NL80211_ATTR_RECONNECT_REQUESTED ,
           NL80211_ATTR_SAR_SPEC ,
           NL80211_ATTR_DISABLE_HE ,
           NL80211_ATTR_OBSS_COLOR_BITMAP ,
           NL80211_ATTR_COLOR_CHANGE_COUNT ,
           NL80211_ATTR_COLOR_CHANGE_COLOR ,
           NL80211_ATTR_COLOR_CHANGE_ELEMS ,
           NL80211_ATTR_MBSSID_CONFIG ,
           NL80211_ATTR_MBSSID_ELEMS ,
           NL80211_ATTR_RADAR_BACKGROUND ,
           NL80211_ATTR_AP_SETTINGS_FLAGS ,
           NL80211_ATTR_EHT_CAPABILITY ,
           NL80211_ATTR_DISABLE_EHT ,
           NL80211_ATTR_MLO_LINKS ,
           NL80211_ATTR_MLO_LINK_ID ,
           NL80211_ATTR_MLD_ADDR ,
           NL80211_ATTR_MLO_SUPPORT ,
           NL80211_ATTR_MAX_NUM_AKM_SUITES ,
           NL80211_ATTR_EML_CAPABILITY ,
           NL80211_ATTR_MLD_CAPA_AND_OPS ,
           NL80211_ATTR_TX_HW_TIMESTAMP ,
           NL80211_ATTR_RX_HW_TIMESTAMP ,
           NL80211_ATTR_TD_BITMAP ,
           NL80211_ATTR_PUNCT_BITMAP ,
           NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS ,
           NL80211_ATTR_HW_TIMESTAMP_ENABLED ,
           NL80211_ATTR_EMA_RNR_ELEMS ,
           NL80211_ATTR_MLO_LINK_DISABLED ,
           NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA ,
           NL80211_ATTR_MLO_TTLM_DLINK ,
           NL80211_ATTR_MLO_TTLM_ULINK ,
           NL80211_ATTR_ASSOC_SPP_AMSDU ,
           NL80211_ATTR_WIPHY_RADIOS ,
           NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS ,
           NL80211_ATTR_VIF_RADIO_MASK ,
           NL80211_ATTR_SUPPORTED_SELECTORS ,
           NL80211_ATTR_MLO_RECONF_REM_LINKS ,
           NL80211_ATTR_EPCS ,
           NL80211_ATTR_EXT_MLD_CAPA_AND_OPS ,
           NL80211_ATTR_WIPHY_RADIO_INDEX ,
           NL80211_ATTR_S1G_LONG_BEACON_PERIOD ,
           NL80211_ATTR_S1G_SHORT_BEACON ,
           NL80211_ATTR_BSS_PARAM ,
           NL80211_ATTR_NAN_CONFIG ,
           NL80211_ATTR_NAN_NEW_CLUSTER ,
           NL80211_ATTR_NAN_CAPABILITIES ,
           NL80211_ATTR_S1G_PRIMARY_2MHZ ,
           NL80211_ATTR_EPP_PEER ,
           NL80211_ATTR_UHR_CAPABILITY ,
           NL80211_ATTR_DISABLE_UHR ,
           NL80211_ATTR_INCUMBENT_SIGNAL_INTERFERENCE_BITMAP ,
           NL80211_ATTR_UHR_OPERATION ,
           NL80211_ATTR_NAN_CHANNEL ,
           NL80211_ATTR_NAN_CHANNEL_ENTRY ,
           NL80211_ATTR_NAN_TIME_SLOTS ,
           NL80211_ATTR_NAN_RX_NSS ,
           NL80211_ATTR_NAN_AVAIL_BLOB ,
           NL80211_ATTR_NAN_SCHED_DEFERRED ,
           NL80211_ATTR_NAN_SCHED_UPDATE_SUCCESS ,
           NL80211_ATTR_NAN_NMI_MAC ,
           NL80211_ATTR_NAN_ULW ,
           NL80211_ATTR_NAN_COMMITTED_DW ,
           NL80211_ATTR_NAN_SEQ_ID ,
           NL80211_ATTR_NAN_MAX_CHAN_SWITCH_TIME ,
           NL80211_ATTR_NAN_PEER_MAPS ,
           NL80211_ATTR_ASSOC_ENCRYPTED ,
           NL80211_ATTR_NPCA_PRIMARY_FREQ ,
           NL80211_ATTR_NPCA_PUNCT_BITMAP ,
           NL80211_ATTR_STA_DUMP_LINK_STATS ,
           __NL80211_ATTR_AFTER_LAST ,
           NUM_NL80211_ATTR ,
           NL80211_ATTR_MAX

       };

πŸŽ€ CONSTANTS πŸŽ€

okay so NOW we get to the good part β€” the actual meanings, bestie. Every single one, no skips, lowkey an entire syllabus:

  • NL80211_ATTR_UNSPEC β€” the "unspecified" attribute, and its whole job is catching errors. it's giving placeholder energy πŸ’…
  • NL80211_ATTR_WIPHY β€” index of the wiphy you're operating on, cf. /sys/class/ieee80211/<phyname>/index
  • NL80211_ATTR_WIPHY_NAME β€” the wiphy name (used for renaming, so yeah, this one's a little identity-crisis coded ✨)
  • NL80211_ATTR_IFINDEX β€” network interface index of the device you're operating on
  • NL80211_ATTR_IFNAME β€” network interface name
  • NL80211_ATTR_IFTYPE β€” type of virtual interface, see enum nl80211_iftype
  • NL80211_ATTR_MAC β€” a MAC address (various uses, it's a multitasker 🫢)
  • NL80211_ATTR_KEY_DATA β€” (temporal) key data; for TKIP this is literally 16 bytes of encryption key followed by 8 bytes each for the TX and RX MIC keys
  • NL80211_ATTR_KEY_IDX β€” key ID (u8, 0-3)
  • NL80211_ATTR_KEY_CIPHER β€” key cipher suite (u32, as defined by IEEE 802.11 section 7.3.2.25.1, e.g. 0x000FAC04)
  • NL80211_ATTR_KEY_SEQ β€” transmit key sequence number (IV/PN) for TKIP and CCMP keys, each six bytes in little endian
  • NL80211_ATTR_KEY_DEFAULT β€” flag attribute saying "yep, this is the default key" πŸ‘‘
  • NL80211_ATTR_BEACON_INTERVAL β€” beacon interval in TU
  • NL80211_ATTR_DTIM_PERIOD β€” DTIM period for beaconing
  • NL80211_ATTR_BEACON_HEAD β€” the portion of the beacon before the TIM IE
  • NL80211_ATTR_BEACON_TAIL β€” the portion of the beacon after the TIM IE (they're a matching set, so cute πŸŽ€)
  • NL80211_ATTR_STA_AID β€” Association ID for the station (u16)
  • NL80211_ATTR_STA_FLAGS β€” flags, a nested element with NLA_FLAG attributes of enum nl80211_sta_flags. deprecated, use NL80211_ATTR_STA_FLAGS2 (she's retired, respect her journey πŸ’€)
  • NL80211_ATTR_STA_LISTEN_INTERVAL β€” listen interval as defined by IEEE 802.11 7.3.1.6 (u16).
  • NL80211_ATTR_STA_SUPPORTED_RATES β€” supported rates, an array of supported rates as defined by IEEE 802.11 7.3.2.2 but without the length restriction (at most NL80211_MAX_SUPP_RATES).
  • NL80211_ATTR_STA_VLAN β€” interface index of the VLAN interface to move the station to, or the AP interface the station was originally added to.
  • NL80211_ATTR_STA_INFO β€” information about a station, part of the station info given for NL80211_CMD_GET_STATION, a nested attribute containing info as possible, see enum nl80211_sta_info.
  • NL80211_ATTR_WIPHY_BANDS β€” Information about an operating bands, consisting of a nested array. (yes the grammar is like that, we're not fixing it, it's iconic πŸ™ˆ)
  • NL80211_ATTR_MNTR_FLAGS β€” flags, a nested element with NLA_FLAG attributes of enum nl80211_mntr_flags.
  • NL80211_ATTR_MESH_ID β€” mesh id (1-32 bytes).
  • NL80211_ATTR_STA_PLINK_ACTION β€” action to perform on the mesh peer link (see enum nl80211_plink_action).
  • NL80211_ATTR_MPATH_NEXT_HOP β€” MAC address of the next hop for a mesh path.
  • NL80211_ATTR_MPATH_INFO β€” information about a mesh_path, part of the mesh path info given for NL80211_CMD_GET_MPATH, nested attribute described at enum nl80211_mpath_info.
  • NL80211_ATTR_BSS_CTS_PROT β€” whether CTS protection is enabled (u8, 0 or 1)
  • NL80211_ATTR_BSS_SHORT_PREAMBLE β€” whether short preamble is enabled (u8, 0 or 1)
  • NL80211_ATTR_BSS_SHORT_SLOT_TIME β€” whether short slot time is enabled (u8, 0 or 1)
  • NL80211_ATTR_HT_CAPABILITY β€” HT Capability information element (from the association request when used with NL80211_CMD_NEW_STATION)
  • NL80211_ATTR_SUPPORTED_IFTYPES β€” a nested attribute containing all the supported interface types, each one a flag attribute with the number of the interface mode. a whole lil roster ✨
  • NL80211_ATTR_REG_ALPHA2 β€” an ISO-3166-alpha2 country code for which the current regulatory domain should be set to, or already is set to. For example, 'CR', for Costa Rica. This attribute is used by the kernel to query the CRDA to retrieve one regulatory domain. This attribute can also be used by userspace to query the kernel for the currently set regulatory domain. We chose an alpha2 as that is also used by the IEEE-802.11 country information element to identify a country. Users can also simply ask the wireless core to set the regulatory domain to a specific alpha2. (she said "we", she's on the design team, main character energy fr fr πŸ‘‘)
  • NL80211_ATTR_REG_RULES β€” a nested array of regulatory domain regulatory rules.
  • NL80211_ATTR_MESH_CONFIG β€” Mesh configuration parameters, a nested attribute containing attributes from enum nl80211_meshconf_params.
  • NL80211_ATTR_BSS_BASIC_RATES β€” basic rates, an array of basic rates in the format defined by IEEE 802.11 7.3.2.2 but without the length restriction (at most NL80211_MAX_SUPP_RATES).
  • NL80211_ATTR_WIPHY_TXQ_PARAMS β€” a nested array of TX queue parameters
  • NL80211_ATTR_WIPHY_FREQ β€” frequency of the selected channel in MHz, and it defines the channel together with the (deprecated) NL80211_ATTR_WIPHY_CHANNEL_TYPE attribute, or the attributes NL80211_ATTR_CHANNEL_WIDTH and, if needed, NL80211_ATTR_CENTER_FREQ1 and NL80211_ATTR_CENTER_FREQ2. like, pick a lane bestie 😭
  • NL80211_ATTR_WIPHY_CHANNEL_TYPE β€” included with NL80211_ATTR_WIPHY_FREQ if HT20 or HT40 are to be used (i.e., HT disabled if not included):
    • NL80211_CHAN_NO_HT = HT not allowed (i.e., same as not including this attribute)
    • NL80211_CHAN_HT20 = HT20 only
    • NL80211_CHAN_HT40MINUS = secondary channel is below the primary channel
    • NL80211_CHAN_HT40PLUS = secondary channel is above the primary channel
🚨 This attribute is now deprecated. she's a legacy icon, don't build new stuff on her.
  • NL80211_ATTR_KEY_DEFAULT_MGMT β€” flag attribute indicating the key is the default management key
  • NL80211_ATTR_MGMT_SUBTYPE β€” Management frame subtype for NL80211_CMD_SET_MGMT_EXTRA_IE.
  • NL80211_ATTR_IE β€” Information element(s) data (used, e.g., with NL80211_CMD_SET_MGMT_EXTRA_IE).
  • NL80211_ATTR_MAX_NUM_SCAN_SSIDS β€” number of SSIDs you can scan with a single scan request, a wiphy attribute.
  • NL80211_ATTR_SCAN_FREQUENCIES β€” nested attribute with frequencies (in MHz)
  • NL80211_ATTR_SCAN_SSIDS β€” nested attribute with SSIDs; leave it out for passive scanning, and include a zero-length SSID (wildcard) for a wildcard scan πŸ¦‹
  • NL80211_ATTR_GENERATION β€” Used to indicate consistent snapshots for dumps. This number increases whenever the object list being dumped changes, and as such userspace can verify that it has obtained a complete and consistent snapshot by verifying that all dump messages contain the same generation number. If it changed then the list changed and the dump should be repeated completely from scratch. (translation: the vibe check for your dump, if the number moved, start over πŸ’…)
  • NL80211_ATTR_BSS β€” scan result BSS
  • NL80211_ATTR_REG_INITIATOR β€” indicates who requested the regulatory domain currently in effect. This could be any of the NL80211_REGDOM_SET_BY_*
  • NL80211_ATTR_REG_TYPE β€” indicates the type of the regulatory domain currently set. This can be one of the nl80211_reg_type (NL80211_REGDOM_TYPE_*)
  • NL80211_ATTR_SUPPORTED_COMMANDS β€” a wiphy attribute that specifies an array of command numbers (i.e. a mapping index to command number) that the driver for the given wiphy supports.
  • NL80211_ATTR_FRAME β€” frame data (binary attribute), including the frame header and body, but not the FCS; used, e.g., with NL80211_CMD_AUTHENTICATE and NL80211_CMD_ASSOCIATE events

and yeah there's still more coming, don't go anywhere 🌈

NL80211_ATTR_SSID

the SSID itself, bestie πŸ’– it's a binary attribute and it holds 0..32 octets, so no, you can't just shove a whole novel in there.

NL80211_ATTR_AUTH_TYPE

the AuthenticationType ✨ peek at enum nl80211_auth_type for the actual values, and it rides in as a u32.

NL80211_ATTR_REASON_CODE

the ReasonCode πŸ’… for NL80211_CMD_DEAUTHENTICATE and NL80211_CMD_DISASSOCIATE β€” and it's a u16, not a u32, don't get it twisted.

NL80211_ATTR_KEY_TYPE

the Key Type πŸ”‘ check enum nl80211_key_type, represented as a u32.

NL80211_ATTR_MAX_SCAN_IE_LEN

the maximum length of information elements that can be added to a scan request πŸ¦‹ β€” that's the whole vibe of it.

NL80211_ATTR_CIPHER_SUITES

a set of u32 values indicating the supported cipher suites πŸ”₯ iconic little array energy.

NL80211_ATTR_FREQ_BEFORE

a channel which has suffered a regulatory change due to considerations from a beacon hint 🌸 this attribute reflects the state of the channel _before_ the beacon hint processing. It consists of a nested attribute containing NL80211_FREQUENCY_ATTR_* β€” note the underscores around "before", the kernel is being dramatic on purpose.

NL80211_ATTR_FREQ_AFTER

same deal, opposite side πŸŽ€ a channel which has suffered a regulatory change due to considerations from a beacon hint, and this attribute reflects the state of the channel _after_ the beacon hint processing. Also a nested attribute containing NL80211_FREQUENCY_ATTR_*.

ok so FREQ_BEFORE and FREQ_AFTER are literally the before-and-after glow-up pics of the same channel πŸ’€

NL80211_ATTR_FREQ_FIXED

a flag πŸ‘‘ indicating the IBSS should not try to look for other networks on different channels β€” stay in your lane, babe.

NL80211_ATTR_WIPHY_RETRY_SHORT

TX retry limit for frames whose length is less than or equal to the RTS threshold ✨ allowed range: 1..255; dot11ShortRetryLimit; u8.

NL80211_ATTR_WIPHY_RETRY_LONG

TX retry limit for frames whose length is greater than the RTS threshold πŸ’œ allowed range: 1..255; dot11ShortLongLimit; u8. (yes that's literally the name in the original, no cap β€” I'm not touching it.)

NL80211_ATTR_WIPHY_FRAG_THRESHOLD

the fragmentation threshold, i.e., maximum length in octets for frames πŸ¦‹ allowed range: 256..8000, and you disable fragmentation with (u32)-1; dot11FragmentationThreshold; u32. so if tiny fragmented frames are your villain origin story, this is the knob.

NL80211_ATTR_WIPHY_RTS_THRESHOLD

the RTS threshold β€” TX frames with length larger than or equal to this use the RTS/CTS handshake 🌈 allowed range: 0..65536, disable with (u32)-1; dot11RTSThreshold; u32.

lowkey note that the frag threshold's "off" switch and the RTS threshold's "off" switch are the same (u32)-1 move πŸ’…

NL80211_ATTR_TIMED_OUT

a flag indicating that an operation timed out 😭 used, e.g., with the NL80211_CMD_AUTHENTICATE event. it's giving "we waited, they ghosted".

NL80211_ATTR_USE_MFP

whether management frame protection (IEEE 802.11w) is used for the association πŸ” it's enum nl80211_mfp, represented as a u32. This attribute can be used with NL80211_CMD_ASSOCIATE and NL80211_CMD_CONNECT requests.

and here's the important part, so read it with me πŸ“– NL80211_MFP_OPTIONAL is not allowed for NL80211_CMD_ASSOCIATE since user space SME is expected and hence, it must have decided whether to use management frame protection or not. Setting NL80211_MFP_OPTIONAL with a NL80211_CMD_CONNECT request will let the driver (or the firmware) decide whether to use MFP or not.

NL80211_ATTR_STA_FLAGS2

attribute containing a struct nl80211_sta_flag_update πŸŽ€ that's it, that's the whole thing, but it's a struct so treat it with respect.

NL80211_ATTR_CONTROL_PORT

a flag indicating whether user space controls the IEEE 802.1X port ✨ i.e., sets/clears NL80211_STA_FLAG_AUTHORIZED, in station mode. If the flag is included in a NL80211_CMD_ASSOCIATE request, the driver will assume that the port is unauthorized until it's authorized by user space. Otherwise, the port is marked authorized by default in station mode. so: opt in or the driver assumes you're chill with it πŸ’…

NL80211_ATTR_TESTDATA

testmode data blob, passed through to the driver πŸ§ͺ and the recommendation is to use nested, driver-specific attributes within this β€” like, put your little custom attrs inside, don't just raw-dog a blob.

NL80211_ATTR_PRIVACY

flag attribute, used with connect πŸ›‘οΈ indicating that protected APs should be used. This is also used with NEW_BEACON to indicate that the BSS is to use protection.

NL80211_ATTR_DISCONNECTED_BY_AP

a flag indicating that the DISCONNECT event was due to the AP disconnecting the station, and not due to a local disconnect request 😭 it's the "they broke up with me" vs "I broke up with them" distinction and the kernel is being so real for tracking it.

NL80211_ATTR_STATUS_CODE

the StatusCode for the NL80211_CMD_CONNECT event (u16) 🌸

NL80211_ATTR_CIPHER_SUITES_PAIRWISE

for crypto settings for connect or other commands, indicates which pairwise cipher suites are used πŸ’–

NL80211_ATTR_CIPHER_SUITE_GROUP

for crypto settings for connect or other commands, indicates which group cipher suite is used β€” singular group, that's the whole point πŸ”‘

NL80211_ATTR_WPA_VERSIONS

used with CONNECT, ASSOCIATE, and NEW_BEACON to indicate which WPA version(s) the AP we want to associate with is using πŸ¦‹ it's a u32 with flags from enum nl80211_wpa_versions.

NL80211_ATTR_AKM_SUITES

used with CONNECT, ASSOCIATE, and NEW_BEACON to indicate which key management algorithm(s) to use β€” an array of u32 ✨

this attribute is also sent in response to NL80211_CMD_GET_WIPHY, indicating the supported AKM suites, intended for specific drivers which implement SME and have constraints on which AKMs are supported and also the cases where an AKM support is offloaded to the driver/firmware. If there is no such notification from the driver, user space should assume the driver supports all the AKM suites πŸ‘‘

so: silence from the driver = assume everything works. bold assumption but ok, main character energy fr.

NL80211_ATTR_REQ_IE

(Re)association request information elements as sent out by the card, for ROAM and successful CONNECT events πŸŽ€

NL80211_ATTR_RESP_IE

(Re)association response information elements as sent by the peer, for ROAM and successful CONNECT events β€” notice it's the response and it comes from the peer, don't mix these two up bestie πŸ’œ

NL80211_ATTR_PREV_BSSID

previous BSSID πŸ¦‹ to be used in ASSOCIATE and CONNECT commands to specify a request to reassociate within an ESS, i.e., to use a Reassociate Request frame (with the value of this attribute in the Current AP address field) instead of an Association Request frame which is used for the initial association to an ESS. so it's literally "we've met before, use the shorter form".

NL80211_ATTR_KEY

key information in a nested attribute with NL80211_KEY_* sub-attributes πŸ”‘πŸ’–

NL80211_ATTR_KEYS

an array of keys for static WEP keys for connect and join_ibss 🌈 key information is in a nested attribute each with NL80211_KEY_* sub-attributes. plural KEYS, plural nested attrs β€” it's a whole little collection.

NL80211_ATTR_PID

process ID of a network namespace πŸŽ€ (and it is a network namespace, not just any old namespace β€” the original is specific, so I'm being specific).

NL80211_ATTR_4ADDR

use 4-address frames on a virtual interface πŸ”₯ yes the attribute name starts with a digit, yes that's allowed, and yes it's iconic.

NL80211_ATTR_SURVEY_INFO

survey information about a channel 🌸 part of the survey response for NL80211_CMD_GET_SURVEY, a nested attribute containing info as possible, see enum survey_info. ("as possible" is doing a lot of heavy lifting there but that's what it says!)

NL80211_ATTR_PMKID

PMK material for PMKSA caching πŸ”

NL80211_ATTR_MAX_NUM_PMKIDS

maximum number of PMKIDs a firmware can cache πŸ’… a wiphy attribute.

NL80211_ATTR_DURATION

duration of an operation in milliseconds, u32 ⏱️

generic 64-bit cookie to identify objects πŸͺ sixty-four bits of pure "this is that thing" energy.

NL80211_ATTR_WIPHY_COVERAGE_CLASS

Coverage Class as defined by IEEE 802.11 section 7.3.2.9 🌈 dot11CoverageClass; u8. yes, they cite the section number, we love a receipts-having king.

NL80211_ATTR_TX_RATES

a nested set of attributes (enum nl80211_tx_rate_attributes) describing TX rates per band πŸ¦‹ the enum nl80211_band value is used as the index (nla_type of the nested data). If a band is not included, it will be configured to allow all rates based on negotiated supported rates information.

this attribute is used with NL80211_CMD_SET_TX_BITRATE_MASK and with starting AP, and joining mesh networks (not IBSS yet ⚠️). In the latter case, it must specify just a single bitrate, which is to be used for the beacon πŸŽ€

the driver must also specify support for this with the extended features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY, NL80211_EXT_FEATURE_BEACON_RATE_HT, NL80211_EXT_FEATURE_BEACON_RATE_VHT, NL80211_EXT_FEATURE_BEACON_RATE_HE and NL80211_EXT_FEATURE_BEACON_RATE_EHT ✨ (that's the whole alphabet of beacon rates, we stan a complete set.)

NL80211_ATTR_FRAME_MATCH

a binary attribute which typically must contain at least one byte πŸ’€ currently used with NL80211_CMD_REGISTER_FRAME. "at least one byte" β€” the bare minimum, literally.

NL80211_ATTR_ACK

flag attribute indicating that the frame was acknowledged by the recipient βœ…πŸ«Ά

NL80211_ATTR_PS_STATE

powersave state, using enum nl80211_ps_state values πŸ˜΄πŸ’€

NL80211_ATTR_CQM

connection quality monitor configuration in a nested attribute with NL80211_ATTR_CQM_* sub-attributes πŸ“Ά it's giving "keep an eye on the vibes of this connection".

NL80211_ATTR_LOCAL_STATE_CHANGE

flag attribute to indicate that a command is requesting a local authentication/association state change without invoking an actual management frame exchange πŸ”₯ this can be used with NL80211_CMD_AUTHENTICATE, NL80211_CMD_DEAUTHENTICATE, NL80211_CMD_DISASSOCIATE. it's the "act like it happened" flag, fr.

NL80211_ATTR_AP_ISOLATE

(AP mode) do not forward traffic between stations connected to this BSS πŸ™ˆ everyone stays in their own lane, no gossip between clients.

NL80211_ATTR_WIPHY_TX_POWER_SETTING

transmit power setting type ✨ see enum nl80211_tx_power_setting for possible values.

NL80211_ATTR_WIPHY_TX_POWER_LEVEL

transmit power level in signed mBm units πŸ“Ά this is used in association with NL80211_ATTR_WIPHY_TX_POWER_SETTING for non-automatic settings. so it's the sidekick to the setting type, not a standalone girly.

NL80211_ATTR_TX_FRAME_TYPES

wiphy capability attribute πŸ¦‹ which is a nested attribute of NL80211_ATTR_FRAME_TYPE attributes, containing information about which frame types can be transmitted with NL80211_CMD_FRAME.

NL80211_ATTR_RX_FRAME_TYPES

wiphy capability attribute πŸ’œ also a nested attribute of NL80211_ATTR_FRAME_TYPE attributes, containing information about which frame types can be registered for RX. (TX_FRAME_TYPES = what you can send, RX_FRAME_TYPES = what you can subscribe to, iykyk.)

NL80211_ATTR_FRAME_TYPE

a u16 indicating the frame type/subtype for the NL80211_CMD_REGISTER_FRAME command πŸŽ€ the little leaf node that the two frame-types attrs are made of.

  • NL80211_ATTR_CONTROL_PORT_ETHERTYPE β€” a 16-bit value that tells everyone which ethertype is gonna be used for key negotiation πŸ’… you can pass it with the associate and connect commands, and if you don't say anything it defaults to 0x888E (PAE, 802.1X), iconic behavior honestly. This attribute also doubles as a flag in the wiphy information to show that protocols other than PAE are supported ✨
  • NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT β€” when you include this alongside NL80211_ATTR_CONTROL_PORT_ETHERTYPE, it says the custom ethertype frames used for key negotiation must not be encrypted 🫢 that's the whole vibe.
  • NL80211_ATTR_SUPPORT_IBSS_RSN β€” the device supports IBSS RSN, which lowkey mostly means support for per-station GTKs πŸ”₯
  • NL80211_ATTR_WIPHY_ANTENNA_TX β€” bitmap of the antennas that are allowed to transmit πŸ“‘ you can use it to mask out antennas that aren't attached or that genuinely should not be used for transmitting. If an antenna isn't selected in this bitmap, the hardware is not allowed to transmit on it, periodt.
  • NL80211_ATTR_WIPHY_ANTENNA_RX β€” bitmap of the antennas allowed to receive 🌸 same masking energy: antennas not attached or that shouldn't be used for receiving get masked out, and if an antenna isn't selected in this bitmap the hardware should not be configured to receive on it. For a more detailed description see NL80211_ATTR_WIPHY_ANTENNA_TX ✨
  • NL80211_ATTR_MCAST_RATE β€” multicast tx rate (in 100 kbps) for IBSS πŸ¦‹
  • NL80211_ATTR_OFFCHANNEL_TX_OK β€” for management frame TX, the frame may be transmitted on another channel when the channel you gave doesn't match the current channel πŸ‘€ if the current channel doesn't match and this flag isn't set, the frame gets rejected, no cap. This is also used as an nl80211 capability flag πŸ’…
  • NL80211_ATTR_BSS_HT_OPMODE β€” HT operation mode (u16) ⭐
  • NL80211_ATTR_KEY_DEFAULT_TYPES β€” a nested attribute holding flags attributes that specify what a key should be set as default as πŸŽ€ see enum nl80211_key_default_types.
  • NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION β€” device attribute that specifies the max duration you can request with the remain-on-channel operation, in milliseconds, u32 ⏱️
  • NL80211_ATTR_MESH_SETUP β€” optional mesh setup parameters πŸ™ˆ these cannot be changed once the mesh is active, so get it right the first time bestie.
  • NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX β€” bitmap of antennas that are available for configuration as TX antennas via the parameters above πŸ“‘
  • NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX β€” bitmap of antennas that are available for configuration as RX antennas via the parameters above 🌸
  • NL80211_ATTR_SUPPORT_MESH_AUTH β€” right now this means the underlying driver allows auth frames in a mesh to be passed to userspace for processing via the NL80211_MESH_SETUP_USERSPACE_AUTH flag 🫢
  • NL80211_ATTR_STA_PLINK_STATE β€” the state of a mesh peer link as defined in enum nl80211_plink_state πŸ’« used when userspace is driving the peer link management state machine, and NL80211_MESH_SETUP_USERSPACE_AMPE or NL80211_MESH_SETUP_USERSPACE_MPM must be enabled.
  • NL80211_ATTR_WOWLAN_TRIGGERS β€” used by NL80211_CMD_SET_WOWLAN to indicate which WoW triggers should be enabled 😴 this is also used by NL80211_CMD_GET_WOWLAN to get the currently enabled WoWLAN triggers, so it's a whole two-way situation.
  • NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED β€” indicates, as part of the wiphy capabilities, the supported WoWLAN triggers ✨
  • NL80211_ATTR_SCHED_SCAN_INTERVAL β€” interval between scheduled scan cycles, in msecs ⏰
  • NL80211_ATTR_INTERFACE_COMBINATIONS β€” nested attribute listing the supported interface combinations πŸŽ€ in each nested item it contains attributes defined in enum nl80211_if_combination_attrs. If the wiphy uses multiple radios (NL80211_ATTR_WIPHY_RADIOS is set), this attribute contains the interface combinations of the first radio πŸ‘‘ see NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS for the global wiphy combinations for the sum of all radios.
  • NL80211_ATTR_SOFTWARE_IFTYPES β€” nested attribute (just like NL80211_ATTR_SUPPORTED_IFTYPES) containing the interface types that are managed in software 🧚 interfaces of these types aren't subject to any restrictions in their number or combinations β€” free real estate.
  • NL80211_ATTR_REKEY_DATA β€” nested attribute containing the info necessary for GTK rekeying in the device, see enum nl80211_rekey_data πŸ”‘
  • NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS β€” number of SSIDs you can scan with a single scheduled scan request, a wiphy attribute πŸ’…
  • NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN β€” maximum length of information elements that can be added to a scheduled scan request πŸ“
  • NL80211_ATTR_SCAN_SUPP_RATES β€” rates per to be advertised as supported in scan, a nested array attribute containing an entry for each band, with the entry being a list of supported rates as defined by IEEE 802.11 7.3.2.2 but without the length restriction (at most NL80211_MAX_SUPP_RATES) ⭐
  • NL80211_ATTR_HIDDEN_SSID β€” indicates whether the SSID is to be hidden from Beacon and Probe Response (when it's a response to a wildcard Probe Request) πŸ™ˆ see enum nl80211_hidden_ssid, represented as a u32.
  • NL80211_ATTR_IE_PROBE_RESP β€” information element(s) for the Probe Response frame πŸ¦‹ this is used with NL80211_CMD_NEW_BEACON and NL80211_CMD_SET_BEACON to provide extra IEs (e.g., WPS/P2P IE) into Probe Response frames when the driver (or firmware) replies to Probe Request frames.
  • NL80211_ATTR_IE_ASSOC_RESP β€” information element(s) for (Re)Association Response frames 🌸 this is used with NL80211_CMD_NEW_BEACON and NL80211_CMD_SET_BEACON to provide extra IEs (e.g., WPS/P2P IE) into (Re)Association Response frames when the driver (or firmware) replies to (Re)Association Request frames.
  • NL80211_ATTR_STA_WME β€” nested attribute containing the wme configuration of the station, see enum nl80211_sta_wme_attr πŸŽ€
  • NL80211_ATTR_SUPPORT_AP_UAPSD β€” the device supports uapsd when working as AP ✨
  • NL80211_ATTR_ROAM_SUPPORT β€” indicates whether the firmware is capable of roaming to another AP in the same ESS if the signal level is low πŸ‘€
  • NL80211_ATTR_SCHED_SCAN_MATCH β€” nested attribute with one or more sets of attributes to match during scheduled scans πŸ” only BSSs that match any of the sets will be reported. These are pass-thru filter rules, and for a match to succeed the BSS must match all attributes of a set 🫢 since not every hardware supports matching all types of attributes, there's no guarantee that the reported BSSs fully comply with the match sets, and userspace needs to be able to ignore them by itself 😭 so like, the implementation is somewhat hardware-dependent, but this is only an optimization and the userspace application needs to handle all the non-filtered results anyway. If the match attributes don't make sense when combined with the values passed in NL80211_ATTR_SCAN_SSIDS (eg. if an SSID is included in the probe request but the match attributes will never let it go through), -EINVAL may be returned πŸ’€ if omitted, no filtering is done.
  • NL80211_ATTR_MAX_MATCH_SETS β€” maximum number of sets that can be used with NL80211_ATTR_SCHED_SCAN_MATCH, a wiphy attribute πŸ’…
  • NL80211_ATTR_PMKSA_CANDIDATE β€” nested attribute containing the PMKSA caching candidate information, see enum nl80211_pmksa_candidate_attr 🌈
  • NL80211_ATTR_TX_NO_CCK_RATE β€” indicates whether to use CCK rate or not for management frames transmission πŸ“Ά to avoid p2p probe/action frames being transmitted at CCK rate in the 2GHz band, the user space applications use this attribute. It's used with NL80211_CMD_TRIGGER_SCAN and NL80211_CMD_FRAME commands ✨
  • NL80211_ATTR_TDLS_ACTION β€” low level TDLS action code (e.g. link setup request, link setup confirm, link teardown, etc.) 😀 values are described in the TDLS (802.11z) specification.
  • NL80211_ATTR_TDLS_DIALOG_TOKEN β€” a non-zero token for uniquely identifying a TDLS conversation between two devices πŸ”‘ so don't go passing zero, that's not the move.
  • NL80211_ATTR_TDLS_OPERATION β€” high level TDLS operation πŸŽ€ see enum nl80211_tdls_operation, represented as a u8.
  • NL80211_ATTR_TDLS_SUPPORT β€” a flag indicating the device can operate as a TDLS peer sta πŸ’…
  • NL80211_ATTR_TDLS_EXTERNAL_SETUP β€” the TDLS discovery/setup and teardown procedures should be performed by sending TDLS packets via NL80211_CMD_TDLS_MGMT 🫢 otherwise NL80211_CMD_TDLS_OPER should be used for asking the driver to perform a TDLS operation.
  • NL80211_ATTR_DEVICE_AP_SME β€” this u32 attribute may be listed for devices that have AP support, to indicate that they have the AP SME integrated with support for the features listed in this attribute πŸ‘‘ see enum nl80211_ap_sme_features.
  • NL80211_ATTR_DONT_WAIT_FOR_ACK β€” used with NL80211_CMD_FRAME, this tells the driver to not wait for an acknowledgement πŸ™ˆ note that because of this, it will also not give a status callback nor return a cookie. It's mostly useful for probe responses to save airtime, slay.
  • NL80211_ATTR_FEATURE_FLAGS β€” this u32 attribute contains flags from enum nl80211_feature_flags and is advertised in wiphy information ⭐
  • NL80211_ATTR_PROBE_RESP_OFFLOAD β€” tells you the hardware itself answers probe requests while it's chillin' in AP-mode. The value is a bitmap of which protocols are supported for offloading β€” check enum nl80211_probe_resp_offload_support_attr for the deets. πŸŽ€
  • NL80211_ATTR_PROBE_RESP β€” the Probe Response template data, like the whole entire probe-response frame. Heads up tho: the DA field in the 802.11 header is zero-ed out, because the FW fills it in later. ✨
  • NL80211_ATTR_DFS_REGION β€” the region for the regulatory rules your country abides by when it starts radiating on DFS channels. One country maps to exactly one DFS region, periodt.
  • NL80211_ATTR_DISABLE_HT β€” forces HT-capable interfaces to disable that feature during association. It's a flag attribute, and rn it's only supported in mac80211 drivers. πŸ’…
  • NL80211_ATTR_HT_CAPABILITY_MASK β€” says which bits of the ATTR_HT_CAPABILITY we should actually pay attention to. Currently only mac80211 NICs support this feature. The values you can configure are: MCS rates, MAX-AMSDU, HT-20-40 and HT_CAP_SGI_40 AMPDU density and AMPDU factor. All of these are treated as suggestions and the driver may lowkey ignore them as required. Wanna see the actual values? They're in the station debugfs ht_caps file. πŸ‘€
  • NL80211_ATTR_NOACK_MAP β€” this u16 bitmap holds the No Ack Policy of up to 16 TIDs. slay.
  • NL80211_ATTR_INACTIVITY_TIMEOUT β€” a timeout value in seconds. It's for drivers that have MLME in firmware and don't have support for reporting per-station tx/rx activity to free up the station entry from the list. Use this when the driver advertises the capability to timeout the stations, ok? 🫢
  • NL80211_ATTR_RX_SIGNAL_DBM β€” signal strength in dBm (as a 32-bit int). Depending on the driver capabilities, this attribute gets added to received frames indicated with NL80211_CMD_FRAME.
  • NL80211_ATTR_BG_SCAN_PERIOD β€” background scan period in seconds, or 0 to disable background scan entirely. πŸ¦‹
  • NL80211_ATTR_WDEV β€” the wireless device identifier, used for pseudo-devices that don't have a netdev (u64). iykyk.
  • NL80211_ATTR_USER_REG_HINT_TYPE β€” the type of regulatory hint passed from userspace. If unset, it's assumed the hint comes directly from a user. If set, the code could specify exactly what type of source was used to provide the hint. For the different types of allowed user regulatory hints, see nl80211_user_reg_hint_type. 🌸
  • NL80211_ATTR_CONN_FAILED_REASON β€” the reason the AP rejected the connection request from a station. The nl80211_connect_failed_reason enum has all the different reasons of connection failure.
  • NL80211_ATTR_AUTH_DATA β€” fields and elements in Authentication frames. This contains the authentication frame body (non-IE and IE data), excluding the Authentication algorithm number β€” so it starts at the Authentication transaction sequence number field. It's used with authentication algorithms that need special fields to be added into the frames (SAE and FILS). Currently only the SAE cases use the initial two fields (Authentication transaction sequence number and Status code). But those fields are included in the attribute data for all authentication algorithms, to keep the attribute definition consistent. πŸ’œ
  • NL80211_ATTR_VHT_CAPABILITY β€” VHT Capability information element (from the association request when used with NL80211_CMD_NEW_STATION).
  • NL80211_ATTR_SCAN_FLAGS β€” scan request control flags (u32).
  • NL80211_ATTR_CHANNEL_WIDTH β€” a u32 attribute holding one of the values of enum nl80211_chan_width, describing the channel width. See the documentation of that enum for more info. ✨
  • NL80211_ATTR_CENTER_FREQ1 β€” center frequency of the first part of the channel, used for anything that's not 20 MHz bandwidth. In S1G this is the operating channel center frequency.
  • NL80211_ATTR_CENTER_FREQ2 β€” center frequency of the second part of the channel β€” used only for 80+80 MHz bandwidth. no cap.
  • NL80211_ATTR_P2P_CTWINDOW β€” P2P GO Client Traffic Window (u8), used with the START_AP and SET_BSS commands.
  • NL80211_ATTR_P2P_OPPPS β€” P2P GO opportunistic PS (u8), used with the START_AP and SET_BSS commands. It can be 0 or 1; if it's not given in START_AP then 0 is assumed, and if it's not given in SET_BSS then no change is made. πŸ™ˆ
  • NL80211_ATTR_LOCAL_MESH_POWER_MODE β€” local mesh STA link-specific power mode, defined in enum nl80211_mesh_power_mode.
  • NL80211_ATTR_ACL_POLICY β€” the ACL policy, see enum nl80211_acl_policy, carried in a u32 attribute.
  • NL80211_ATTR_MAC_ADDRS β€” array of nested MAC addresses, used for MAC ACL. πŸ’…
  • NL80211_ATTR_MAC_ACL_MAX β€” u32 attribute to advertise the maximum number of MAC addresses a device can support for MAC ACL.
  • NL80211_ATTR_RADAR_EVENT β€” the type of radar event for notification to userspace, containing a value of enum nl80211_radar_event (u32). 🌈
  • NL80211_ATTR_EXT_CAPA β€” the 802.11 extended capabilities that the kernel driver has and handles. Format is the same as the IE contents. See 802.11-2012 8.4.2.29 for more info.
  • NL80211_ATTR_EXT_CAPA_MASK β€” extended capabilities that the kernel driver has set in the NL80211_ATTR_EXT_CAPA value, for multibit fields. ⭐
  • NL80211_ATTR_STA_CAPABILITY β€” station capabilities (u16) are advertised to the driver, e.g. to enable TDLS power save (PU-APSD).
  • NL80211_ATTR_STA_EXT_CAPABILITY β€” station extended capabilities are advertised to the driver, e.g. to enable TDLS off channel operations and PU-APSD.
  • NL80211_ATTR_PROTOCOL_FEATURES β€” global nl80211 feature flags, see enum nl80211_protocol_features; the attribute is a u32. πŸ”₯
  • NL80211_ATTR_SPLIT_WIPHY_DUMP β€” flag attribute: userspace supports receiving the data for a single wiphy split across multiple messages, given with the wiphy dump message.
  • NL80211_ATTR_DISABLE_VHT β€” forces VHT-capable interfaces to disable this feature during association. Flag attribute, and currently only supported in mac80211 drivers. πŸ’€
  • NL80211_ATTR_VHT_CAPABILITY_MASK β€” specifies which bits of the ATTR_VHT_CAPABILITY we should pay attention to. Currently only mac80211 NICs support this feature. All values are treated as suggestions and may be ignored by the driver as required. The actual values live in the station debugfs vht_caps file. πŸ‘‘
  • NL80211_ATTR_MDID β€” Mobility Domain Identifier.
  • NL80211_ATTR_IE_RIC β€” Resource Information Container Information Element.
  • NL80211_ATTR_CRIT_PROT_ID β€” critical protocol identifier requiring increased reliability, see enum nl80211_crit_proto_id (u16). πŸ“
  • NL80211_ATTR_MAX_CRIT_PROT_DURATION β€” duration in milliseconds in which the connection should have increased reliability (u16).
  • NL80211_ATTR_PEER_AID β€” Association ID for the peer TDLS station (u16). It's similar to NL80211_ATTR_STA_AID but with one difference: it's allowed to be used with the first NL80211_CMD_SET_STATION command to update a TDLS peer STA entry. For S1G interfaces, this is limited to 1600 for the current mac80211 implementation. 🧚
  • NL80211_ATTR_COALESCE_RULE β€” Coalesce rule information.
  • NL80211_ATTR_CH_SWITCH_COUNT β€” u32 attribute specifying the number of TBTT's until the channel switch event.
  • NL80211_ATTR_CH_SWITCH_BLOCK_TX β€” flag attribute specifying that transmission must be blocked on the current channel (before the channel switch operation). It's also included in the channel switch started event if quiet was requested by the AP. ✨
  • NL80211_ATTR_CSA_IES β€” nested set of attributes containing the IE information for the time while performing a channel switch.
  • NL80211_ATTR_CNTDWN_OFFS_BEACON β€” an array of offsets (u16) to the channel switch or color change counters in the beacons tail (NL80211_ATTR_BEACON_TAIL).
  • NL80211_ATTR_CNTDWN_OFFS_PRESP β€” an array of offsets (u16) to the channel switch or color change counters in the probe response (NL80211_ATTR_PROBE_RESP). πŸ¦‹
  • NL80211_ATTR_RXMGMT_FLAGS β€” flags for nl80211_send_mgmt, u32. As specified in the enum nl80211_rxmgmt_flags.
  • NL80211_ATTR_STA_SUPPORTED_CHANNELS β€” array of supported channels.
  • NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES β€” array of supported operating classes.
  • NL80211_ATTR_HANDLE_DFS β€” a flag indicating whether user space controls DFS operation in IBSS mode. If the flag is included in the NL80211_CMD_JOIN_IBSS request, the driver will allow use of DFS channels and reports radar events to userspace. Userspace is required to react to radar events β€” e.g. initiate a channel switch or leave the IBSS network. Like, actually required bestie, don't leave it hanging. 😭
  • NL80211_ATTR_SUPPORT_5_MHZ β€” a flag indicating that the device supports 5 MHz channel bandwidth.
  • NL80211_ATTR_SUPPORT_10_MHZ β€” a flag indicating that the device supports 10 MHz channel bandwidth. 🌸
  • NL80211_ATTR_OPMODE_NOTIF β€” operating mode field from the Operating Mode Notification Element, based on the association request when used with NL80211_CMD_NEW_STATION or NL80211_CMD_SET_STATION (only when NL80211_FEATURE_FULL_AP_CLIENT_STATE is supported, or with TDLS); u8 attribute.
  • NL80211_ATTR_VENDOR_ID β€” the vendor ID, either a 24-bit OUI or, if NL80211_VENDOR_ID_IS_LINUX is set, a special Linux ID (not used yet). πŸ’œ
  • NL80211_ATTR_VENDOR_SUBCMD β€” the vendor sub-command πŸ’…
  • NL80211_ATTR_VENDOR_DATA β€” the data for the vendor command, if there is any; this attribute also doubles as the vendor command feature advertisement 🫢
  • NL80211_ATTR_VENDOR_EVENTS β€” used for event list advertising in the wiphy info, and it holds a nested array of the possible events ✨
  • NL80211_ATTR_QOS_MAP β€” IP DSCP mapping for Interworking QoS mapping. The data is in the format defined for the payload of the QoS Map Set element in IEEE Std 802.11-2012, 8.4.2.97. iykyk πŸŽ€
  • NL80211_ATTR_MAC_HINT β€” a MAC address recommendation, as in "bestie start here", for the initial BSS 🌸
  • NL80211_ATTR_WIPHY_FREQ_HINT β€” the frequency of that recommended initial BSS πŸ’«
  • NL80211_ATTR_MAX_AP_ASSOC_STA β€” device attribute telling you how many associated stations are supported in AP mode (including P2P GO); it's a u32. And look, since drivers may not have a fixed limit on that maximum (like, other concurrent operations can affect it, fr), drivers are allowed to advertise values that cannot always be met 😭 in such cases, an attempt to add a new station entry with NL80211_CMD_NEW_STATION may fail. No cap.
  • NL80211_ATTR_TDLS_PEER_CAPABILITY β€” flags for TDLS peer capabilities, a u32. As specified in the enum nl80211_tdls_peer_capability. πŸ¦‹
  • NL80211_ATTR_SOCKET_OWNER β€” flag attribute, and bestie this one has main character energy because it does something different depending on when you set it πŸ‘‘:
    • if set during interface creation, the new interface will be owned by the netlink socket that created it and will be destroyed when the socket is closed.
    • if set during scheduled scan start, the new scan req will be owned by the netlink socket that created it and the scheduled scan will be stopped when the socket is closed.
    • if set during configuration of regulatory indoor operation, the regulatory indoor configuration would be owned by the netlink socket that configured the indoor setting, and the indoor operation would be cleared when the socket is closed.
    • if set during NAN interface creation, the interface will be destroyed if the socket is closed, just like any other interface. Moreover, NAN notifications will be sent in unicast to that socket. Without this attribute, the notifications will be sent to the NL80211_MCGRP_NAN multicast group.
    • if set during NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT, the station will deauthenticate when the socket is closed.
    • if set during NL80211_CMD_JOIN_IBSS, the IBSS will be automatically torn down when the socket is closed.
    • if set during NL80211_CMD_JOIN_MESH, the mesh setup will be automatically torn down when the socket is closed.
    • if set during NL80211_CMD_START_AP, the AP will be automatically disabled when the socket is closed. πŸ’€
  • NL80211_ATTR_CSA_C_OFFSETS_TX β€” an array of csa counter offsets (u16) which should be updated when the frame is transmitted πŸ”₯
  • NL80211_ATTR_MAX_CSA_COUNTERS β€” a u8 attribute used to advertise the maximum supported number of csa counters ⭐
  • NL80211_ATTR_TDLS_INITIATOR β€” flag attribute indicating the current end is the TDLS link initiator πŸ™ˆ
  • NL80211_ATTR_USE_RRM β€” flag for indicating whether the current connection shall support Radio Resource Measurements (11k). This attribute can be used with NL80211_CMD_ASSOCIATE and NL80211_CMD_CONNECT requests. User space applications are expected to use this flag only if the underlying device supports these minimal RRM features: NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES, NL80211_FEATURE_QUIET, or, if global RRM is supported, see: NL80211_EXT_FEATURE_RRM. If this flag is used, driver must add the Power Capabilities IE to the association request. In addition, it must also set the RRM capability flag in the association request's Capability Info field. like, both things, okay? πŸ’œ
  • NL80211_ATTR_WIPHY_DYN_ACK β€” flag attribute used to enable the ACK timeout estimation algorithm (dynack). In order to activate dynack, the NL80211_FEATURE_ACKTO_ESTIMATION feature flag must be set by lower drivers to indicate dynack capability. Dynack is automatically disabled setting a valid value for coverage class 🧚
  • NL80211_ATTR_TSID β€” a TSID value (a u8 attribute) πŸ“
  • NL80211_ATTR_USER_PRIO β€” user priority value (a u8 attribute) 🌈
  • NL80211_ATTR_ADMITTED_TIME β€” admitted time in units of 32 microseconds (per second) (a u16 attribute) ⏱️
  • NL80211_ATTR_SMPS_MODE β€” SMPS mode to use (ap mode). see enum nl80211_smps_mode. πŸ’«
  • NL80211_ATTR_OPER_CLASS β€” operating class πŸŽ€
  • NL80211_ATTR_MAC_MASK β€” MAC address mask πŸ¦‹
  • NL80211_ATTR_WIPHY_SELF_MANAGED_REG β€” flag attribute indicating this device is self-managing its regulatory information, and any regulatory domain obtained from it is coming from the device's wiphy and not the global cfg80211 regdomain πŸ‘‘
  • NL80211_ATTR_EXT_FEATURES β€” extended feature flags contained in a byte array. The feature flags are identified by their bit index (see enum nl80211_ext_feature_index). The bit index is ordered starting at the least-significant bit of the first byte in the array, ie. bit index 0 is located at bit 0 of byte 0. bit index 25 would be located at bit 1 of byte 3 (a u8 array). math girlie hours fr fr πŸ”₯
  • NL80211_ATTR_SURVEY_RADIO_STATS β€” request overall radio statistics to be returned along with other survey data. If set, NL80211_CMD_GET_SURVEY may return a survey entry without a channel, indicating global radio statistics (and only some values are valid and make sense there, ngl). For devices that don't return such an entry even then, the information should be contained in the result as the sum of the respective counters over all channels ✨
  • NL80211_ATTR_NETNS_FD β€” file descriptor of a network namespace 🌸
  • NL80211_ATTR_SCHED_SCAN_DELAY β€” the delay before the first cycle of a scheduled scan is started. Or the delay before a WoWLAN net-detect scan is started, counting from the moment the system is suspended. This value is a u32, in seconds 😴
  • NL80211_ATTR_REG_INDOOR β€” flag attribute; if set it indicates that the device is operating in an indoor environment 🏠
  • NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS β€” maximum number of scan plans for scheduled scan supported by the device (u32), a wiphy attribute πŸ’…
  • NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL β€” maximum interval (in seconds) for a scan plan (u32), a wiphy attribute ⏰
  • NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS β€” maximum number of iterations in a scan plan (u32), a wiphy attribute πŸ”
  • NL80211_ATTR_SCHED_SCAN_PLANS β€” a list of scan plans for scheduled scan. Each scan plan defines the number of scan iterations and the interval between scans. The last scan plan will always run infinitely, so it must not specify the number of iterations β€” only the interval between scans. The scan plans are executed sequentially. Each scan plan is a nested attribute of enum nl80211_sched_scan_plan. lowkey iconic structuring tbh 🫢
  • NL80211_ATTR_PBSS β€” flag attribute. If set it means operate in a PBSS. Specified in NL80211_CMD_CONNECT to request connecting to a PCP, and in NL80211_CMD_START_AP to start a PCP instead of AP. Relevant for DMG networks only ⭐
  • NL80211_ATTR_BSS_SELECT β€” nested attribute for a driver supporting the BSS selection feature. When used with NL80211_CMD_GET_WIPHY it contains attributes according to enum nl80211_bss_select_attr to indicate what BSS selection behaviours are supported. When used with NL80211_CMD_CONNECT it contains the behaviour-specific attribute containing the parameters for BSS selection to be done by driver and/or firmware πŸ¦‹
  • NL80211_ATTR_STA_SUPPORT_P2P_PS β€” whether the P2P PS mechanism is supported or not. u8, one of the values of enum nl80211_sta_p2p_ps_status πŸ’œ
  • NL80211_ATTR_PAD β€” attribute used for padding for 64-bit alignment πŸŽ€
  • NL80211_ATTR_IFTYPE_EXT_CAPA β€” nested attribute of the following attributes: NL80211_ATTR_IFTYPE, NL80211_ATTR_EXT_CAPA, NL80211_ATTR_EXT_CAPA_MASK, to specify the extended capabilities and other interface-type specific capabilities per interface type. For MLO, NL80211_ATTR_EML_CAPABILITY and NL80211_ATTR_MLD_CAPA_AND_OPS are present πŸ‘‘
  • NL80211_ATTR_MU_MIMO_GROUP_DATA β€” an array of 24 bytes that defines a MU-MIMO groupID for monitor mode. The first 8 bytes are a mask that defines the membership in each group (there are 64 groups, group 0 and 63 are reserved), each bit represents a group and is set to 1 for being a member in that group and 0 for not being a member. The remaining 16 bytes define the position in each group: 2 bits for each group. (smaller group numbers represented on most significant bits and bigger group numbers on least significant bits.) This attribute is used only if all interfaces are in monitor mode. Set this attribute in order to monitor packets using the given MU-MIMO groupID data. to turn off that feature, set all the bits of the groupID to zero πŸ™ˆ
  • NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR β€” mac address for the sniffer to follow when using a MU-MIMO air sniffer. to turn that feature off, set an invalid mac address (e.g. FF:FF:FF:FF:FF:FF) πŸ’€
  • NL80211_ATTR_SCAN_START_TIME_TSF β€” the time at which the scan was actually started (u64). The time is the TSF of the BSS the interface that requested the scan is connected to (if available, otherwise this attribute must not be included) ⏱️
  • NL80211_ATTR_SCAN_START_TIME_TSF_BSSID β€” the BSS according to which NL80211_ATTR_SCAN_START_TIME_TSF is set 🌸
  • NL80211_ATTR_MEASUREMENT_DURATION β€” how long the measurement runs, in TUs (u16). If NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY is not set, this is the maximum duration allowed, not a promise πŸ’…. It's used with measurement requests, and it can also ride along with NL80211_CMD_TRIGGER_SCAN when the scan is being used for beacon report radio measurement ✨
  • NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY β€” flag attribute, and it's giving "no take-backs." It says the duration you set with NL80211_ATTR_MEASUREMENT_DURATION is mandatory. If this flag isn't set, that duration is just the max and the actual measurement duration may come in shorter, lowkey flexible πŸ¦‹
  • NL80211_ATTR_MESH_PEER_AID β€” the Association ID for the mesh peer (u16). It's used to pull the stored data for a mesh peer that's in power save state 😴
  • NL80211_ATTR_NAN_MASTER_PREF β€” the master preference, used by NL80211_CMD_START_NAN and optionally with NL80211_CMD_CHANGE_NAN_CONFIG. Type is u8 and it can't be 0. Also, values 1 and 255 are reserved for certification purposes and should not be used during normal device operation β€” so don't touch those, bestie πŸ™ˆ
  • NL80211_ATTR_BANDS β€” your operating bands configuration. It's a u32 bitmask of BIT(NL80211_BAND_*) as described in enum nl80211_band. Like, for NL80211_BAND_2GHZ, bit 0 would be set 🎯. This one's used with NL80211_CMD_START_NAN and NL80211_CMD_CHANGE_NAN_CONFIG, and it's optional. If no bands are set, it means don't-care and the device will decide what to use β€” main character energy, honestly πŸ‘‘
  • NL80211_ATTR_NAN_FUNC β€” a function that can be added to NAN. See enum nl80211_nan_func_attributes for the description of this nested attribute 🧚
  • NL80211_ATTR_NAN_MATCH β€” used to report a match. It's a nested attribute. See enum nl80211_nan_match_attributes ✨
  • NL80211_ATTR_FILS_KEK β€” the KEK for FILS (Re)Association Request/Response frame protection πŸ”
  • NL80211_ATTR_FILS_NONCES β€” the Nonces (part of AAD) for FILS (Re)Association Request/Response frame protection. This attribute contains the 16 octet STA Nonce followed by 16 octets of AP Nonce β€” so, 16 + 16, keep that order, it matters πŸ’–
  • NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED β€” Indicates whether or not multicast packets should be sent out as unicast to all stations (flag attribute). Glow-up for your multicast traffic, fr fr 🌈
  • NL80211_ATTR_BSSID β€” the BSSID of the AP. Small heads-up though: NL80211_ATTR_MAC is also used in various commands/events for specifying the BSSID, so don't get confused by the two of them πŸ‘€
  • NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI β€” the relative RSSI threshold by which other BSSs have to be better or slightly worse than the currently connected BSS so they get reported to user space. Basically it gives userspace a chance to consider connecting to other matching BSSs that have better or slightly worse RSSI than the current connected BSS, by using an offloaded operation so we avoid unnecessary wakeups 😴✨
  • NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST β€” When present, the RSSI level for BSSs in the specified band is to be adjusted before doing the NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI based comparison to figure out better BSSs. The attribute value is a packed structure value as specified by struct nl80211_bss_select_rssi_adjust πŸ“¦
  • NL80211_ATTR_TIMEOUT_REASON β€” the reason an operation timed out 😭. A u32 attribute with an enum nl80211_timeout_reason value. Used, e.g., with the NL80211_CMD_CONNECT event.
  • NL80211_ATTR_FILS_ERP_USERNAME β€” the EAP Re-authentication Protocol (ERP) username part of NAI, used to refer keys rRK and rIK. Used with NL80211_CMD_CONNECT πŸ’–
  • NL80211_ATTR_FILS_ERP_REALM β€” the EAP Re-authentication Protocol (ERP) realm part of NAI, specifying the domain name of the ER server. This is used with NL80211_CMD_CONNECT 🌸
  • NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM β€” Unsigned 16-bit ERP next sequence number to use in ERP messages. It's used in generating the FILS wrapped data for FILS authentication, and it's used with NL80211_CMD_CONNECT πŸ”’
  • NL80211_ATTR_FILS_ERP_RRK β€” the ERP re-authentication Root Key (rRK) for the NAI specified by NL80211_ATTR_FILS_ERP_USERNAME and NL80211_ATTR_FILS_ERP_REALM. This is used for generating rIK and rMSK from successful FILS authentication, and it's used with NL80211_CMD_CONNECT πŸ—οΈ
  • NL80211_ATTR_FILS_CACHE_ID β€” a 2-octet identifier advertised by a FILS AP, identifying the scope of PMKSAs. This is used with NL80211_CMD_SET_PMKSA and NL80211_CMD_DEL_PMKSA πŸŽ€
  • NL80211_ATTR_PMK β€” the attribute for passing PMK key material. It's used with NL80211_CMD_SET_PMKSA for the PMKSA identified by NL80211_ATTR_PMKID. For NL80211_CMD_CONNECT and NL80211_CMD_START_AP it's used to provide the PSK for offloading the 4-way handshake for WPA/WPA2-PSK networks. For 802.1X authentication it's used with NL80211_CMD_SET_PMK. And for offloaded FT support this attribute specifies the PMK-R0 if NL80211_ATTR_PMKR0_NAME is included as well πŸ”₯
  • NL80211_ATTR_SCHED_SCAN_MULTI β€” a flag attribute which user-space shall use to indicate that it supports multiple active scheduled scan requests πŸ‘―β€β™€οΈ
  • NL80211_ATTR_SCHED_SCAN_MAX_REQS β€” indicates the maximum number of scheduled scan requests that may be active for the device (u32) πŸ”’
  • NL80211_ATTR_WANT_1X_4WAY_HS β€” a flag attribute which user-space can include in NL80211_CMD_CONNECT to indicate that for 802.1X authentication it wants to use the supported offload of the 4-way handshake 🀝
  • NL80211_ATTR_PMKR0_NAME β€” the PMK-R0 Name for offloaded FT 🏷️
  • NL80211_ATTR_PORT_AUTHORIZED β€” (reserved) β€” yes, that's literally it, it's just vibing there πŸ’€
  • NL80211_ATTR_EXTERNAL_AUTH_ACTION β€” identifies the requested external authentication operation (a u32 attribute with an enum nl80211_external_auth_action value). This is used with the NL80211_CMD_EXTERNAL_AUTH request event 🎬
  • NL80211_ATTR_EXTERNAL_AUTH_SUPPORT β€” Flag attribute indicating that user space supports external authentication. It shall be used with the NL80211_CMD_CONNECT and NL80211_CMD_START_AP request. The driver may offload authentication processing to user space if this capability is indicated in the respective requests from user space. ⚠️ Heads up: this flag attribute is deprecated for NL80211_CMD_START_AP β€” use NL80211_ATTR_AP_SETTINGS_FLAGS instead, bestie, don't use the old one 🫢
  • NL80211_ATTR_NSS β€” Station's New/updated RX_NSS value, notified using this u8 attribute. Used with NL80211_CMD_STA_OPMODE_CHANGED πŸ“Ά
  • NL80211_ATTR_ACK_SIGNAL β€” Station's ack signal strength (s32) πŸ’ͺ
  • NL80211_ATTR_CONTROL_PORT_OVER_NL80211 β€” A flag indicating whether control port frames (e.g. of type given in NL80211_ATTR_CONTROL_PORT_ETHERTYPE) will be sent directly to the network interface or sent via the NL80211 socket. If this attribute is missing, then the legacy behavior of sending control port frames directly to the network interface is used. If the flag is included, then control port frames are sent over NL80211 instead using CMD_CONTROL_PORT_FRAME. If control port routing over NL80211 is to be used then userspace must also use the NL80211_ATTR_SOCKET_OWNER flag πŸ‘‘. When used with NL80211_ATTR_CONTROL_PORT_NO_PREAUTH, pre-auth frames are not forwarded over the control port πŸ™…β€β™€οΈ
  • NL80211_ATTR_TXQ_STATS β€” TXQ statistics (nested attribute, see enum nl80211_txq_stats) πŸ“Š
  • NL80211_ATTR_TXQ_LIMIT β€” Total packet limit for the TXQ queues for this phy. The smaller of this and the memory limit is enforced βš–οΈ
  • NL80211_ATTR_TXQ_MEMORY_LIMIT β€” Total memory limit (in bytes) for the TXQ queues for this phy. The smaller of this and the packet limit is enforced βš–οΈ
  • NL80211_ATTR_TXQ_QUANTUM β€” TXQ scheduler quantum (bytes). The number of bytes a flow is assigned on each round of the DRR scheduler πŸ”„
  • NL80211_ATTR_HE_CAPABILITY β€” HE Capability information element (from the association request when used with NL80211_CMD_NEW_STATION). Can be set only if NL80211_STA_FLAG_WME is set β€” except for NAN, which uses WME anyway πŸ¦‹
  • NL80211_ATTR_FTM_RESPONDER β€” a nested attribute which user-space can include in NL80211_CMD_START_AP or NL80211_CMD_SET_BEACON for fine timing measurement (FTM) responder functionality, containing parameters as possible. See enum nl80211_ftm_responder_attr ⏱️
  • NL80211_ATTR_FTM_RESPONDER_STATS β€” Nested attribute with FTM responder statistics, see enum nl80211_ftm_responder_stats πŸ“ˆ
  • NL80211_ATTR_TIMEOUT β€” Timeout for the given operation in milliseconds (u32). If the attribute isn't given, no timeout is requested. Note that 0 is an invalid value ⏳
  • NL80211_ATTR_PEER_MEASUREMENTS β€” peer measurements request (and result) data, using nested attributes specified in enum nl80211_peer_measurement_attrs. This is also used for capability advertisement in the wiphy information, with the appropriate sub-attributes πŸ“‘
  • NL80211_ATTR_AIRTIME_WEIGHT β€” Station's weight when scheduled by the airtime scheduler βš–οΈβœ¨
  • NL80211_ATTR_STA_TX_POWER_SETTING β€” Transmit power setting type (u8) for the station associated with the AP. See enum nl80211_tx_power_setting for the possible values 🎚️
  • NL80211_ATTR_STA_TX_POWER β€” Transmit power level (s16) in dBm units. This lets you set Tx power for a station. If this attribute isn't included, the default per-interface tx power setting will be overriding. The driver should be picking up the lowest tx power, either the per-interface one or the per-station one β€” lowest wins, periodt πŸ“‰πŸ’…
  • NL80211_ATTR_SAE_PASSWORD β€” the attribute that carries your SAE password material πŸŽ€. It gets used with NL80211_CMD_CONNECT to hand over the password so SAE authentication can be offloaded for WPA3-Personal networks. Basically: your secret, but offloaded, and no cap it's iconic.
  • NL80211_ATTR_TWT_RESPONDER β€” turns on target wait time responder support ✨.
  • NL80211_ATTR_HE_OBSS_PD β€” a nested attribute for the OBSS Packet Detection functionality πŸ¦‹.
  • NL80211_ATTR_WIPHY_EDMG_CHANNELS β€” a bitmap showing which 2.16 GHz channel(s) are allowed to be used for EDMG transmissions πŸ’…. Defined by IEEE P802.11ay/D4.0 section 9.4.2.251. It's a u8 attribute, periodt.
  • NL80211_ATTR_WIPHY_EDMG_BW_CONFIG β€” the Channel BW Configuration subfield, which encodes the allowed channel bandwidth configurations ✨. It's a u8 attribute, defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
  • NL80211_ATTR_VLAN_ID β€” the VLAN ID (1..4094) for the station and the VLAN group key, and it's a u16 πŸŽ€.
  • NL80211_ATTR_HE_BSS_COLOR β€” nested attribute for BSS Color Settings 🌈.
  • NL80211_ATTR_IFTYPE_AKM_SUITES β€” a nested array attribute where every entry uses attributes from enum nl80211_iftype_akm_attributes 🫢. This one gets sent back in a response to NL80211_CMD_GET_WIPHY, indicating the supported AKM suites capability per interface. And listen: the AKMs advertised in NL80211_ATTR_AKM_SUITES are the default capabilities if no AKM suites are advertised for a specific interface type. iykyk.
  • NL80211_ATTR_TID_CONFIG β€” TID specific configuration, living in a nested attribute with enum nl80211_tid_config_attr sub-attributes πŸ‘‘. On output, like in the wiphy attributes, it contains only the feature sub-attributes. That's it, that's the whole vibe.
  • NL80211_ATTR_CONTROL_PORT_NO_PREAUTH β€” disables preauth frame rx on the control port so they get forwarded/received as ordinary data frames πŸ”₯.
  • NL80211_ATTR_PMK_LIFETIME β€” the maximum lifetime for PMKSA, in seconds (u32, dot11RSNAConfigPMKReauthThreshold; 0 is not a valid value, so don't even try it πŸ™ˆ). This is an optional parameter configured through NL80211_CMD_SET_PMKSA. Drivers that trigger roaming need to know the lifetime of the configured PMKSA so they can pick between full authentication and PMKSA caching based authentication. This timeout is a whole main character for auth methods like SAE, where the PMK only gets updated by going through a full (new SAE) authentication instead of getting updated during an association for EAP authentication. And heads up: no new full authentication within the PMK expiry shall result in a disassociation at the end of the lifetime πŸ’€.
  • NL80211_ATTR_PMK_REAUTH_THRESHOLD β€” the reauthentication threshold time, expressed as a percentage of NL80211_ATTR_PMK_LIFETIME (u8, dot11RSNAConfigPMKReauthThreshold, 1..100) πŸ“. Also an optional parameter, configured through NL80211_CMD_SET_PMKSA. It requests that the driver trigger a full authentication roam (no PMKSA caching, bestie) after the reauthentication threshold time but before the PMK lifetime has expired. The way that timing works. Obsessed.
  • NL80211_ATTR_RECEIVE_MULTICAST β€” the multicast flag for the NL80211_CMD_REGISTER_FRAME command β€” go read the description over there for the tea ⭐.
  • NL80211_ATTR_WIPHY_FREQ_OFFSET β€” an offset of the associated NL80211_ATTR_WIPHY_FREQ, in positive KHz 🌸. Only valid when supplied with an NL80211_ATTR_WIPHY_FREQ_OFFSET. Yes, that's genuinely what it says β€” it references itself, and we are simply reporting the lore fr fr πŸ’€.
  • NL80211_ATTR_CENTER_FREQ1_OFFSET β€” center frequency offset in KHz for the first channel segment specified in NL80211_ATTR_CENTER_FREQ1 πŸŽ€.
  • NL80211_ATTR_SCAN_FREQ_KHZ β€” nested attribute with KHz frequencies ✨.
  • NL80211_ATTR_HE_6GHZ_CAPABILITY β€” the HE 6 GHz Band Capability element (comes from the association request when used with NL80211_CMD_NEW_STATION) πŸ¦‹.
  • NL80211_ATTR_FILS_DISCOVERY β€” an optional parameter to configure FILS discovery πŸ’…. It's a nested attribute β€” peep enum nl80211_fils_discovery_attributes. Userspace should pass an empty nested attribute to disable this feature and delete the templates.
  • NL80211_ATTR_UNSOL_BCAST_PROBE_RESP β€” optional parameter to configure unsolicited broadcast probe response πŸ”₯. Also a nested attribute β€” see enum nl80211_unsol_bcast_probe_resp_attributes. Same deal: userspace should pass an empty nested attribute to disable this feature and delete the templates.
  • NL80211_ATTR_S1G_CAPABILITY β€” the S1G Capability information element (from the association request when used with NL80211_CMD_NEW_STATION) 🌈.
  • NL80211_ATTR_S1G_CAPABILITY_MASK β€” the S1G Capability Information element override mask πŸ‘‘. Used with NL80211_ATTR_S1G_CAPABILITY in NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT.
  • NL80211_ATTR_SAE_PWE β€” indicates the mechanism(s) allowed for SAE PWE derivation in WPA3-Personal networks that are using SAE authentication 🫢. It's a u8 attribute that encapsulates one of the values from enum nl80211_sae_pwe_mechanism.
  • NL80211_ATTR_RECONNECT_REQUESTED β€” a flag attribute, used with deauth and disassoc events to signal that an immediate reconnect to the AP is desired 😭. Go back, bestie.
  • NL80211_ATTR_SAR_SPEC β€” the SAR power limitation specification, used with NL80211_CMD_SET_SAR_SPECS πŸ“. The message contains fields of nl80211_sar_attrs, which specify the sar type and related sar specs. Sar specs contains an array of nl80211_sar_specs_attrs.
  • NL80211_ATTR_DISABLE_HE β€” force HE capable interfaces to disable this feature during association 🧚. It's a flag attribute. Currently only supported in mac80211 drivers.
  • NL80211_ATTR_OBSS_COLOR_BITMAP β€” bitmap of the u64 BSS colors for the NL80211_CMD_OBSS_COLOR_COLLISION event πŸ’œ.
  • NL80211_ATTR_COLOR_CHANGE_COUNT β€” a u8 attribute specifying the number of TBTT's until the color switch event ⭐.
  • NL80211_ATTR_COLOR_CHANGE_COLOR β€” a u8 attribute specifying the color that we are switching to πŸ’….
  • NL80211_ATTR_COLOR_CHANGE_ELEMS β€” a nested set of attributes containing the IE information for the time while performing a color switch πŸŽ€.
  • NL80211_ATTR_MBSSID_CONFIG β€” nested attribute for multiple BSSID advertisements (MBSSID) parameters in AP mode 🌸. The kernel uses this attribute to indicate the driver's support for MBSSID and enhanced multi-BSSID advertisements (EMA AP) to userspace. Userspace should use this attribute to configure per interface MBSSID parameters. See enum nl80211_mbssid_config_attributes for the details.
  • NL80211_ATTR_MBSSID_ELEMS β€” nested parameter to pass multiple BSSID elements πŸ¦‹. It's a mandatory parameter for the transmitting interface to enable MBSSID, and optional for the non-transmitting interfaces.
  • NL80211_ATTR_RADAR_BACKGROUND β€” configure a dedicated offchannel chain available for radar/CAC detection on some hw ✨. This chain can't be used to transmit or receive frames, and it's bounded to a running wdev. Background radar/CAC detection lets you avoid the CAC downtime of switching on a different channel during CAC detection on the selected radar channel. It's giving multitasking icon.
  • NL80211_ATTR_AP_SETTINGS_FLAGS β€” a u32 attribute containing ap settings flags, enumerated in enum nl80211_ap_settings_flags πŸ”₯. This attribute shall be used with NL80211_CMD_START_AP request.
  • NL80211_ATTR_EHT_CAPABILITY β€” the EHT Capability information element (from the association request when used with NL80211_CMD_NEW_STATION) 🫢. Can be set only if NL80211_STA_FLAG_WME is set β€” that's the rule, no exceptions.
  • NL80211_ATTR_DISABLE_EHT β€” force EHT capable interfaces to disable this feature during association πŸ’€. It's a flag attribute. Currently only supported in mac80211 drivers.
  • NL80211_ATTR_MLO_LINKS β€” a nested array of links, each one containing some per-link information and a link ID 🌈.
  • NL80211_ATTR_MLO_LINK_ID β€” a (u8) link ID for use with MLO, to be used with the various commands that need a link ID to operate πŸ‘‘.
  • NL80211_ATTR_MLD_ADDR β€” an MLD address, used with various commands such as authenticate/associate ⭐.
  • NL80211_ATTR_MLO_SUPPORT β€” a flag attribute indicating that user space supports MLO connection πŸŽ€. Used with NL80211_CMD_CONNECT. And listen: if this attribute is not included in NL80211_CMD_CONNECT, drivers must not perform MLO connection. Non-negotiable, bestie.
  • NL80211_ATTR_MAX_NUM_AKM_SUITES β€” a U16 attribute πŸ’œ. It indicates the maximum number of AKM suites allowed for NL80211_CMD_CONNECT, NL80211_CMD_ASSOCIATE and NL80211_CMD_START_AP in the NL80211_CMD_GET_WIPHY response. If this attribute is not present, userspace shall consider the maximum number of AKM suites allowed as NL80211_MAX_NR_AKM_SUITES, which is the legacy maximum number from before this attribute was introduced. Respect the legacy, fr fr.
  • NL80211_ATTR_EML_CAPABILITY β€” EML Capability information (u16) πŸ¦‹.
  • NL80211_ATTR_MLD_CAPA_AND_OPS β€” MLD Capabilities and Operations (u16) ✨.
  • NL80211_ATTR_TX_HW_TIMESTAMP β€” hardware timestamp for TX operation in nanoseconds (u64) πŸ“. This is the device clock timestamp, so it will probably reset when the device is stopped or the firmware is reset β€” lowkey important. When used with NL80211_CMD_FRAME_TX_STATUS, it indicates the frame TX timestamp. When used with NL80211_CMD_FRAME RX notification, it indicates the ack TX timestamp.
  • NL80211_ATTR_RX_HW_TIMESTAMP β€” hardware timestamp for RX operation in nanoseconds (u64) 🌸. Same deal: it's the device clock timestamp, so it will probably reset when the device is stopped or the firmware is reset. When used with NL80211_CMD_FRAME_TX_STATUS, it indicates the ack RX timestamp. When used with NL80211_CMD_FRAME RX notification, it indicates the incoming frame RX timestamp. Twin flame behavior with the TX one, honestly.
  • NL80211_ATTR_TD_BITMAP β€” Transition Disable bitmap, for subsequent (re)associations πŸ”₯.

NL80211_ATTR_PUNCT_BITMAP

bestie this one is a (u32) preamble puncturing bitmap ✨ and the way it works is genuinely so clean β€” the lowest bit lines up with the lowest 20 MHz channel, and every bit you set to 1 means "yeah that sub-channel is punctured, she's out πŸ’…". the higher 16 bits? reserved. don't touch. nada. 🫢

NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS

a (u16) wiphy attribute telling you the max number of peers you can have HW timestamping enabled for at the same time β€” concurrent vibes only 😌. sending 0xffff here is the icon of "all peers supported", meaning you can set it for everyone without specifying an address with NL80211_CMD_SET_HW_TIMESTAMP. no address, no problem, periodt 🌸

NL80211_ATTR_HW_TIMESTAMP_ENABLED

literally just a flag attribute 🚩 β€” tells you whether HW timestamping should be enabled or not. that's it, that's the whole thing, she's simple and she's thriving πŸ’–

NL80211_ATTR_EMA_RNR_ELEMS

an optional nested attribute for reduced neighbor report (RNR) elements πŸ¦‹. plot twist tho: this one can only be used when NL80211_MBSSID_CONFIG_ATTR_EMA is enabled. no exceptions.

also, userspace is the one responsible for splitting the RNR into multiple elements β€” and the split has to be done so each element excludes the non-transmitting profiles already included in the MBSSID element (NL80211_ATTR_MBSSID_ELEMS) at the same index πŸ‘‘. each EMA beacon gets generated by adding MBSSID and RNR elements at the same index. and if userspace sends more RNR elements than the number of MBSSID elements? those extras get added in every EMA beacon. good luck with that one bestie 😭

ma'am this one is unused πŸ’€. it used to indicate that a link is disabled during association, but the AP now sends that info by including a TTLM in the association response instead. retired. legacy. she's living in the past ngl πŸ™ˆ

NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA

include BSS usage data πŸ”₯ β€” which literally means including BSSes that can only be used in restricted scenarios and/or cannot be used at all. yes, the unusable ones, they're invited to the dump too πŸ’…

a binary attribute specifying the downlink TID to link mapping πŸŽ€. the length is 8 * sizeof(u16), no cap. and for each TID, the link mapping is exactly as defined in section 9.4.2.314 (TID-To-Link Mapping element) in Draft P802.11be_D4.0 β€” go read the spec, iykyk πŸ“–

same energy, but uplink this time ⬆️. binary attribute specifying the uplink TID to link mapping, length is 8 * sizeof(u16), and for each TID the link mapping is as defined in section 9.4.2.314 (TID-To-Link Mapping element) in Draft P802.11be_D4.0. twin where have you been 🫢

NL80211_ATTR_ASSOC_SPP_AMSDU

a flag attribute used with NL80211_CMD_ASSOCIATE indicating that SPP A-MSDUs are used on this connection ✨ short king, zero drama.

NL80211_ATTR_WIPHY_RADIOS

nested attribute describing the physical radios belonging to this wiphy πŸ“‘ β€” go check enum nl80211_wiphy_radio_attrs for the deets. she's giving family tree energy 🌈

NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS

nested attribute listing the supported interface combinations for all radios combined πŸ”₯ β€” and inside each nested item you'll find attributes defined in enum nl80211_if_combination_attrs. everything together, one big beautiful combo meal πŸ’…

NL80211_ATTR_VIF_RADIO_MASK

bitmask of allowed radios (u32) πŸŽ€. and the cute part: a value of 0 means all radios. zero equals everything, iconic behaviour honestly.

NL80211_ATTR_SUPPORTED_SELECTORS

the supported BSS Membership Selectors β€” an array of supported selectors as defined by IEEE Std 802.11-2020 9.4.2.3, but without the length restriction (at most NL80211_MAX_SUPP_SELECTORS) πŸ™ˆ. you can use this to hand over a list of selectors that are implemented by the supplicant. and if you don't give it? support for SAE_H2E is assumed by default. assumptions, we love them πŸ’–

(u16) β€” a bitmask of the links that have been requested to be removed from the MLO association βœ‚οΈ. bye links, it's been real πŸ‘‹

NL80211_ATTR_EPCS

flag attribute indicating that EPCS is enabled for a station interface 🚩✨ that's the whole vibe check.

NL80211_ATTR_EXT_MLD_CAPA_AND_OPS

Extended MLD capabilities and operations πŸ‘‘. for association and link reconfiguration this indicates the extra capabilities that userspace implements β€” currently only "BTM MLD Recommendation For Multiple APs Support". for wiphy information it's the additional flags that drivers will set, but heads up: this part is informational only for userspace, so it's not expected that you set these yourself πŸ™…β€β™€οΈ

ngl the split between "you set this" and "the driver sets this, mind your business" is the whole personality of this attribute πŸ’€

NL80211_ATTR_WIPHY_RADIO_INDEX

an (int) integer attribute denoting the index of the radio in interest πŸ“». internally, a value of -1 is used to mean the radio id was not given in user-space β€” and that means all the attributes are applicable to all the radios. if you do provide a radio index in user-space, then the attributes apply to that specific radio only. and if the radio id is greater than the number of radios? error, invalid value, returned straight to sender πŸ’…

NL80211_ATTR_S1G_LONG_BEACON_PERIOD

a (u8) integer attribute representing the number of beacon intervals between each long beacon transmission for an S1G BSS with short beaconing enabled 🌸. this is a required attribute for initialising an S1G short beaconing BSS β€” but when you're updating the short beacon data, it's not required, so breathe 😌. minimum value is 2 (i.e. 2 beacon intervals), don't try anything funny.

NL80211_ATTR_S1G_SHORT_BEACON

nested attribute containing the short beacon head and tail, used to set or update the short beacon templates πŸŽ€. when bringing up a new interface, NL80211_ATTR_S1G_LONG_BEACON_PERIOD is required alongside this attribute β€” they're a package deal fr fr πŸ’–. refer to enum nl80211_s1g_short_beacon_attrs for the attribute definitions.

NL80211_ATTR_BSS_PARAM

nested attribute used with NL80211_CMD_GET_WIPHY which indicates which BSS parameters can be modified ✨. plot twist #2: it can also be used as a flag attribute by user-space in NL80211_CMD_SET_BSS to indicate that it wants strict checking on the BSS parameters to be modified πŸ•΅οΈβ€β™€οΈ. multitasking queen.

NL80211_ATTR_NAN_CONFIG

nested attribute for extended NAN cluster configuration πŸ¦‹ β€” used with NL80211_CMD_START_NAN and NL80211_CMD_CHANGE_NAN_CONFIG. see enum nl80211_nan_conf_attributes for the details. and the best part? this attribute is optional 😌✨

NL80211_ATTR_NAN_NEW_CLUSTER

flag attribute indicating that a new NAN cluster has been created πŸŽ‰πŸ”₯. used with NL80211_CMD_NAN_CLUSTER_JOINED. new cluster, who dis πŸ’…

NL80211_ATTR_NAN_CAPABILITIES

nested attribute for NAN capabilities 🌸 β€” used with NL80211_CMD_GET_WIPHY to indicate the NAN capabilities supported by the driver. see enum nl80211_nan_capabilities for the full menu πŸ“‹βœ¨

NL80211_ATTR_S1G_PRIMARY_2MHZ

flag attribute indicating that the S1G primary channel is 2 MHz wide, and that the control channel designates the 1 MHz primary subchannel within that 2 MHz primary πŸŽ€. nesting doll but make it spectrum πŸ’…

NL80211_ATTR_EPP_PEER

a flag attribute to indicate if the peer is an EPP STA 🚩✨ used with NL80211_CMD_NEW_STA and NL80211_CMD_ADD_LINK_STA. just flagging it bestie 🫢

NL80211_ATTR_UHR_CAPABILITY

UHR Capability information element 🌟 β€” taken from the association request when used with NL80211_CMD_NEW_STATION. important caveat: it can be set only if HE/EHT are also available. no shortcuts, no skipping prerequisites 😀

NL80211_ATTR_DISABLE_UHR

force UHR capable interfaces to disable this feature during association 🚫✨ it's a flag attribute. and rn? currently only supported in mac80211 drivers β€” so if you're not on mac80211, this one's not for you πŸ’€

NL80211_ATTR_INCUMBENT_SIGNAL_INTERFERENCE_BITMAP

a u32 attribute specifying the signal interference bitmap detected on the operating bandwidth for NL80211_CMD_INCUMBENT_SIGNAL_DETECT πŸ“‘πŸ”₯. each bit represents a 20 MHz segment, the lowest bit corresponds to the lowest 20 MHz segment, in the operating bandwidth where the interference is detected.

and here's the detail you can't skip: punctured sub-channels are included in the bitmap structure β€” but since interference detection is not performed on those sub-channels, their corresponding bits are consistently set to zero πŸ™ˆβœ¨ consistent queen.

NL80211_ATTR_UHR_OPERATION

the Full UHR Operation element, exactly as it appears in association response etc. β€” since it's abridged in the beacon 🌸. used for START_AP etc. full version only, we don't do the short one here πŸ’…

NL80211_ATTR_NAN_CHANNEL

okay bestie this one's a whole saga so buckle up 🎒 β€” it's a nested attribute, and there can be multiple attributes of this type, each one representing a channel definition consisting of top-level attributes like NL80211_ATTR_WIPHY_FREQ.

when used with NL80211_CMD_NAN_SET_LOCAL_SCHED, it specifies the channel definitions on which the radio needs to operate during specific time slots ⏰. all of the channel definitions should be mutually incompatible. with this command, NL80211_ATTR_NAN_CHANNEL_ENTRY and NL80211_ATTR_NAN_RX_NSS are mandatory πŸ”’.

when used with NL80211_CMD_NAN_SET_PEER_SCHED, it configures the peer NAN channels 🫢. in that case the channel definitions can be compatible with each other, or even identical β€” just with different RX NSS. and with this command too, NL80211_ATTR_NAN_CHANNEL_ENTRY and NL80211_ATTR_NAN_RX_NSS are mandatory πŸ”’.

the number of channels should fit the current configuration of channels and the possible interface combinations. and if an existing NAN channel is changed but the chandef isn't, then the channel entry must also remain unchanged β€” no sneaky edits πŸ‘€. finally, when used with NL80211_CMD_NAN_CHANNEL_EVAC, this identifies the channels that were evacuated πŸƒβ€β™€οΈπŸ’¨

NL80211_ATTR_NAN_CHANNEL_ENTRY

a byte array of 6 bytes πŸŽ€. it contains the Channel Entry as defined in Wi-Fi Aware (TM) 4.0 specification Table 100 (Channel Entry format for the NAN Availability attribute). six bytes, one table, no notes πŸ“–βœ¨

NL80211_ATTR_NAN_TIME_SLOTS

an array of u8 values and 32 cells 🌈. each value maps a time slot to the chandef on which the radio should operate in that time, and NL80211_NAN_SCHED_NOT_AVAIL_SLOT indicates unscheduled 😴. the chandef is represented using its index β€” where the index is the sequential number of the NL80211_ATTR_NAN_CHANNEL attribute within all the attributes of this type πŸ”’.

each slot spans over 16TUs, hence the entire schedule spans over 512TUs πŸ•°οΈ. and other slot durations and periods? currently not supported πŸ’€ that's the whole menu, bestie.

  • NL80211_ATTR_NAN_RX_NSS β€” (u8) the RX NSS used for a NAN channel. This one's a package deal with NL80211_ATTR_NAN_CHANNEL when you're configuring NAN channels with NL80211_CMD_NAN_SET_LOCAL_SCHED or NL80211_CMD_NAN_SET_PEER_SCHED. 🫢
  • NL80211_ATTR_NAN_AVAIL_BLOB β€” (Binary) the NAN Availability attribute blob, including the attribute header, exactly as defined in the Wi-Fi Aware (TM) 4.0 specification Table 93 (NAN Availability attribute format). Required with NL80211_CMD_NAN_SET_LOCAL_SCHED so you can hand over the raw NAN Availability attribute. The device uses it to publish Schedule Update NAFs. πŸ“‹
  • NL80211_ATTR_NAN_SCHED_DEFERRED β€” flag attribute used with NL80211_CMD_NAN_SET_LOCAL_SCHED. When it's present, the command is a request from the device to perform an announced schedule update. What that means: it needs to send the updated NAN availability to the peers, and do the actual switch on the right time (i.e. at the end of the slot after the slot in which the updated NAN Availability was sent). Since the slots management is done in the device, the update to the peers needs to be sent by the device, so it knows the actual switch time. If the flag is not set, the schedule should be applied immediately. And heads up bestie 🚨: when this flag is set, the total number of NAN channels from both the old and new schedules must not exceed the allowed number of local NAN channels, because with deferred scheduling the old channels cannot be removed before adding the new ones to free up space. No cap, that's just how the slots work.
  • NL80211_ATTR_NAN_SCHED_UPDATE_SUCCESS β€” flag attribute used with NL80211_CMD_NAN_SCHED_UPDATE_DONE to say the deferred schedule update completed successfully. If this flag is not present, the update failed. πŸ’€
  • NL80211_ATTR_NAN_NMI_MAC β€” the address of the NMI station to which this NDI station belongs. Used with NL80211_CMD_NEW_STATION when adding an NDI station. it's giving family tree energy 🌳
  • NL80211_ATTR_NAN_ULW β€” (Binary) the initial ULW(s) as published by the peer, as defined in the Wi-Fi Aware (TM) 4.0 specification Table 109 (Unaligned Schedule attribute format). Used to configure the device with the initial ULW(s) of a peer, before the device starts tracking it. 🧚
  • NL80211_ATTR_NAN_COMMITTED_DW β€” (u16) the committed DW as published by the peer, as defined in the Wi-Fi Aware (TM) 4.0 specification Table 80 (Committed DW Information field format). ✨
  • NL80211_ATTR_NAN_SEQ_ID β€” (u8) the sequence ID of the peer schedule that NL80211_CMD_NAN_SET_PEER_SCHED defines. The device follows the sequence ID in the frames to identify newer schedules. Once a schedule with a higher sequence ID is received, the device may stop communicating with that peer until a new peer schedule with a matching sequence ID is received. lowkey a read receipt for schedules πŸ“¬
  • NL80211_ATTR_NAN_MAX_CHAN_SWITCH_TIME β€” (u16) the maximum channel switch time, in microseconds. ⏱️
  • NL80211_ATTR_NAN_PEER_MAPS β€” nested array of peer schedule maps. Used with NL80211_CMD_NAN_SET_PEER_SCHED. Contains up to 2 entries, each containing nested attributes from enum nl80211_nan_peer_map_attrs. πŸ—ΊοΈ
  • NL80211_ATTR_ASSOC_ENCRYPTED β€” flag attribute, used only with the NL80211_CMD_CONNECT event in SME-in-driver mode. The driver should set this flag to indicate that both the (Re)Association Request frame and the corresponding (Re)Association Response frame are transmitted encrypted over the air. Enhanced Privacy Protection (EPP), as defined in IEEE P802.11bi/D4.0, mandates this encryption. πŸ” iconic security behaviour, honestly
  • NL80211_ATTR_NPCA_PRIMARY_FREQ β€” NPCA primary channel (u32) πŸ“‘
  • NL80211_ATTR_NPCA_PUNCT_BITMAP β€” NPCA puncturing bitmap (u32) πŸ•³οΈ
  • NL80211_ATTR_STA_DUMP_LINK_STATS β€” request flag for NL80211_CMD_GET_STATION (dump mode only). When set on an MLD station, the dump produces two NL80211_CMD_NEW_STATION messages per station per dump call: πŸ‘‡
  • __NL80211_ATTR_AFTER_LAST β€” internal use. nothing to see here, move along πŸ™ˆ
  • NUM_NL80211_ATTR β€” total number of nl80211_attrs available πŸ”’
  • NL80211_ATTR_MAX β€” highest attribute number currently defined πŸ‘‘

Ok and here's the breakdown of what that two-messages situation actually looks like:

  1. An aggregated-stats message whose top-level NL80211_ATTR_STA_INFO contains MLO-combined statistics (same content as a dump without this flag).
  2. For each active link, a per-link message containing NL80211_ATTR_MLO_LINKS with a single link entry. Each entry holds NL80211_ATTR_MLO_LINK_ID, the link-specific NL80211_ATTR_MAC, and NL80211_ATTR_STA_INFO with per-link statistics (see enum nl80211_sta_info).

And the ordering tea β˜•: the aggregated message always precedes the per-link messages for the same station within a dump sequence.


πŸ“– Description πŸ“–

Each bit represents one antenna, starting with antenna 1 at the first bit. Depending on which antennas are selected in the bitmap, 802.11n drivers can derive which chainmasks to use (if all antennas belonging to a particular chain are disabled this chain should be disabled) and if a chain has diversity antennas whether diversity should be used or not. HT capabilities (STBC, TX Beamforming, Antenna selection) can be derived from the available chains after applying the antenna mask. Non-802.11n drivers can derive whether to use diversity or not. Drivers may reject configurations or RX/TX mask combinations they cannot support by returning -EINVAL. fr fr, if the driver says no, that's a hard no πŸ’…

Authentication methods like SAE need to be able to generate a new PMKSA entry without having to force a disconnection after the PMK timeout. If no roaming occurs between the reauth threshold and PMK expiration, disassociation is still forced. 😭 the way the timer does not care about your feelings

πŸ‘€ SEE ALSO πŸ‘€

okay bestie, this is the part where I hand you the whole friend group of docs that hang out with this page πŸ’– like, this is not a short list. this is a list. but every single one of these is somebody you're gonna want to know, so buckle up πŸŽ€

The mothership, first and foremost:

  • ./include/uapi/linux/nl80211.h β€” da kernel file itself, the actual source of truth, the origin story, the blueprint πŸ‘‘

Then the narrative guides β€” the ones with actual sentences in them instead of just endless field names (affectionate):

  • Station handling(9) 🌸
  • Frame transmission/registration support(9)
  • Virtual interface / concurrency capabilities(9) β€” you'll need this one, fr
  • packet coalesce support(9)
  • WPA/WPA2 EAPOL handshake offload(9) πŸ”₯
  • FILS shared key authentication offload(9)
  • SAE authentication offload(9)
  • VLAN offload support for setting group keys and binding STAs to VLANs(9) β€” yes that whole thing is the title, I don't make the rules πŸ’…
  • TID configuration(9)
  • FILS shared key crypto offload(9)
  • Multi-Link Operation(9) β€” very main character energy
  • OWE DH IE handling offload(9)

And now 😭 the big pile. every enum, every struct, in the exact order the page gives them, no skips, no cuts:

  • enum nl80211_commands(9)
  • enum nl80211_iftype(9)
  • enum nl80211_sta_flags(9)
  • enum nl80211_sta_p2p_ps_status(9)
  • struct nl80211_sta_flag_update(9)
  • enum nl80211_he_gi(9)
  • enum nl80211_he_ltf(9)
  • enum nl80211_he_ru_alloc(9)
  • enum nl80211_eht_gi(9)
  • enum nl80211_eht_ltf(9)
  • enum nl80211_eht_ru_alloc(9)
  • enum nl80211_rate_info(9)
  • enum nl80211_sta_bss_param(9)
  • enum nl80211_sta_info(9)
  • enum nl80211_tid_stats(9)
  • enum nl80211_txq_stats(9)
  • enum nl80211_mpath_flags(9)
  • enum nl80211_mpath_info(9)
  • enum nl80211_band_iftype_attr(9)
  • enum nl80211_band_attr(9)
  • enum nl80211_nan_phy_cap_attr(9)
  • enum nl80211_wmm_rule(9)
  • enum nl80211_frequency_attr(9)
  • enum nl80211_bitrate_attr(9)
  • enum nl80211_reg_initiator(9)
  • enum nl80211_reg_type(9)
  • enum nl80211_reg_rule_attr(9)
  • enum nl80211_sched_scan_match_attr(9)
  • enum nl80211_reg_rule_flags(9)
  • enum nl80211_dfs_regions(9)
  • enum nl80211_user_reg_hint_type(9)
  • enum nl80211_survey_info(9)
  • enum nl80211_mntr_flags(9)
  • enum nl80211_mesh_power_mode(9)
  • enum nl80211_meshconf_params(9)
  • enum nl80211_mesh_setup_params(9)
  • enum nl80211_txq_attr(9)
  • enum nl80211_channel_type(9)
  • enum nl80211_key_mode(9)
  • enum nl80211_chan_width(9)
  • enum nl80211_bss_scan_width(9)
  • enum nl80211_bss_use_for(9)
  • enum nl80211_bss_cannot_use_reasons(9)
  • enum nl80211_bss(9)
  • enum nl80211_bss_status(9)
  • enum nl80211_auth_type(9)
  • enum nl80211_key_type(9)
  • enum nl80211_mfp(9)
  • enum nl80211_key_default_types(9)
  • enum nl80211_key_attributes(9)
  • enum nl80211_tx_rate_attributes(9)
  • struct nl80211_txrate_vht(9)
  • struct nl80211_txrate_he(9)
  • struct nl80211_txrate_eht(9)
  • enum nl80211_band(9)
  • enum nl80211_ps_state(9)
  • enum nl80211_attr_cqm(9)
  • enum nl80211_cqm_rssi_threshold_event(9)
  • enum nl80211_tx_power_setting(9)
  • enum nl80211_tid_config(9)
  • enum nl80211_packet_pattern_attr(9)
  • struct nl80211_pattern_support(9)
  • enum nl80211_wowlan_triggers(9)
  • TCP connection wakeup(9)
  • struct nl80211_wowlan_tcp_data_seq(9)
  • struct nl80211_wowlan_tcp_data_token(9)
  • struct nl80211_wowlan_tcp_data_token_feature(9)
  • enum nl80211_wowlan_tcp_attrs(9)
  • struct nl80211_coalesce_rule_support(9)
  • enum nl80211_attr_coalesce_rule(9)
  • enum nl80211_coalesce_condition(9)
  • enum nl80211_iface_limit_attrs(9)
  • enum nl80211_if_combination_attrs(9)
  • enum nl80211_plink_state(9)
  • enum nl80211_plink_action(9)
  • enum nl80211_rekey_data(9)
  • enum nl80211_hidden_ssid(9)
  • enum nl80211_sta_wme_attr(9)
  • enum nl80211_pmksa_candidate_attr(9)
  • enum nl80211_tdls_operation(9)
  • enum nl80211_ap_sme_features(9)
  • enum nl80211_feature_flags(9)
  • enum nl80211_ext_feature_index(9)
  • enum nl80211_probe_resp_offload_support_attr(9)
  • enum nl80211_connect_failed_reason(9)
  • enum nl80211_timeout_reason(9)
  • enum nl80211_scan_flags(9)
  • enum nl80211_acl_policy(9)
  • enum nl80211_smps_mode(9)
  • enum nl80211_radar_event(9)
  • enum nl80211_dfs_state(9)
  • enum nl80211_protocol_features(9)
  • enum nl80211_crit_proto_id(9)
  • enum nl80211_rxmgmt_flags(9)
  • struct nl80211_vendor_cmd_info(9)
  • enum nl80211_tdls_peer_capability(9)
  • enum nl80211_sched_scan_plan(9)
  • struct nl80211_bss_select_rssi_adjust(9)
  • enum nl80211_bss_select_attr(9)
  • enum nl80211_nan_function_type(9)
  • enum nl80211_nan_publish_type(9)
  • enum nl80211_nan_func_term_reason(9)
  • enum nl80211_nan_func_attributes(9)
  • enum nl80211_nan_srf_attributes(9)
  • enum nl80211_nan_match_attributes(9)
  • enum nl80211_nan_band_conf_attributes(9)
  • enum nl80211_nan_conf_attributes(9)
  • enum nl80211_external_auth_action(9)
  • enum nl80211_ftm_responder_attributes(9)
  • enum nl80211_preamble(9)
  • enum nl80211_peer_measurement_type(9)
  • enum nl80211_peer_measurement_status(9)
  • enum nl80211_peer_measurement_req(9)
  • enum nl80211_peer_measurement_resp(9)
  • enum nl80211_peer_measurement_ftm_req_type(9)
  • enum nl80211_peer_measurement_peer_attrs(9)
  • enum nl80211_peer_measurement_attrs(9)
  • enum nl80211_peer_measurement_ftm_capa(9)
  • enum nl80211_peer_measurement_ftm_type_capa(9)
  • enum nl80211_peer_measurement_ftm_req(9)
  • enum nl80211_peer_measurement_ftm_failure_reasons(9)
  • enum nl80211_peer_measurement_ftm_resp(9)
  • enum nl80211_obss_pd_attributes(9)
  • enum nl80211_bss_color_attributes(9)
  • enum nl80211_iftype_akm_attributes(9)
  • enum nl80211_fils_discovery_attributes(9)
  • enum nl80211_unsol_bcast_probe_resp_attributes(9)
  • enum nl80211_sae_pwe_mechanism(9)
  • enum nl80211_sar_type(9)
  • enum nl80211_sar_attrs(9)
  • enum nl80211_sar_specs_attrs(9)
  • enum nl80211_mbssid_config_attributes(9)
  • enum nl80211_ap_settings_flags(9)
  • enum nl80211_wiphy_radio_attrs(9)
  • enum nl80211_wiphy_radio_freq_range(9)
  • enum nl80211_s1g_short_beacon_attrs(9)
  • enum nl80211_nan_capabilities(9)
  • enum nl80211_nan_peer_map_attrs(9)

that's it, that's the whole list 🫢 if a name in here looks unfamiliar, that's not a you problem, that's just how deep the 802.11 rabbit hole goes. tap any of them and the man page gods will provide ✨

and that's a wrap on the whole page, bestie!! πŸŽ€ this little gem lives under ./include/uapi/linux, dated October 2026, and it's literally titled enum nl80211_attrs(9) β€” go forth and slay your netlink attributes, ily, bye πŸ’–πŸ¦‹

πŸ“¦ where this page comes from