ENUM NL80211_ATTRS(9)
β¨ 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>/indexNL80211_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 onNL80211_ATTR_IFNAMEβ network interface nameNL80211_ATTR_IFTYPEβ type of virtual interface, seeenum nl80211_iftypeNL80211_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 keysNL80211_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 endianNL80211_ATTR_KEY_DEFAULTβ flag attribute saying "yep, this is the default key" πNL80211_ATTR_BEACON_INTERVALβ beacon interval in TUNL80211_ATTR_DTIM_PERIODβ DTIM period for beaconingNL80211_ATTR_BEACON_HEADβ the portion of the beacon before the TIM IENL80211_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 withNLA_FLAGattributes ofenum nl80211_sta_flags. deprecated, useNL80211_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 mostNL80211_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 forNL80211_CMD_GET_STATION, a nested attribute containing info as possible, seeenum 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 withNLA_FLAGattributes ofenum nl80211_mntr_flags.NL80211_ATTR_MESH_IDβ mesh id (1-32bytes).NL80211_ATTR_STA_PLINK_ACTIONβ action to perform on the mesh peer link (seeenum 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 forNL80211_CMD_GET_MPATH, nested attribute described atenum nl80211_mpath_info.NL80211_ATTR_BSS_CTS_PROTβ whether CTS protection is enabled (u8,0or1)NL80211_ATTR_BSS_SHORT_PREAMBLEβ whether short preamble is enabled (u8,0or1)NL80211_ATTR_BSS_SHORT_SLOT_TIMEβ whether short slot time is enabled (u8,0or1)NL80211_ATTR_HT_CAPABILITYβ HT Capability information element (from the association request when used withNL80211_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 fromenum 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 mostNL80211_MAX_SUPP_RATES).NL80211_ATTR_WIPHY_TXQ_PARAMSβ a nested array of TX queue parametersNL80211_ATTR_WIPHY_FREQβ frequency of the selected channel in MHz, and it defines the channel together with the (deprecated)NL80211_ATTR_WIPHY_CHANNEL_TYPEattribute, or the attributesNL80211_ATTR_CHANNEL_WIDTHand, if needed,NL80211_ATTR_CENTER_FREQ1andNL80211_ATTR_CENTER_FREQ2. like, pick a lane bestie πNL80211_ATTR_WIPHY_CHANNEL_TYPEβ included withNL80211_ATTR_WIPHY_FREQif 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 onlyNL80211_CHAN_HT40MINUS= secondary channel is below the primary channelNL80211_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 keyNL80211_ATTR_MGMT_SUBTYPEβ Management frame subtype forNL80211_CMD_SET_MGMT_EXTRA_IE.NL80211_ATTR_IEβ Information element(s) data (used, e.g., withNL80211_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 BSSNL80211_ATTR_REG_INITIATORβ indicates who requested the regulatory domain currently in effect. This could be any of theNL80211_REGDOM_SET_BY_*NL80211_ATTR_REG_TYPEβ indicates the type of the regulatory domain currently set. This can be one of thenl80211_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., withNL80211_CMD_AUTHENTICATEandNL80211_CMD_ASSOCIATEevents
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 soFREQ_BEFOREandFREQ_AFTERare 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 β±οΈ
NL80211_ATTR_COOKIE
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 theassociateandconnectcommands, and if you don't say anything it defaults to0x888E(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 alongsideNL80211_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 seeNL80211_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 π seeenum 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 theNL80211_MESH_SETUP_USERSPACE_AUTHflag π«ΆNL80211_ATTR_STA_PLINK_STATEβ the state of a mesh peer link as defined inenum nl80211_plink_stateπ« used when userspace is driving the peer link management state machine, andNL80211_MESH_SETUP_USERSPACE_AMPEorNL80211_MESH_SETUP_USERSPACE_MPMmust be enabled.NL80211_ATTR_WOWLAN_TRIGGERSβ used byNL80211_CMD_SET_WOWLANto indicate which WoW triggers should be enabled π΄ this is also used byNL80211_CMD_GET_WOWLANto 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 inenum nl80211_if_combination_attrs. If the wiphy uses multiple radios (NL80211_ATTR_WIPHY_RADIOSis set), this attribute contains the interface combinations of the first radio π seeNL80211_ATTR_WIPHY_INTERFACE_COMBINATIONSfor the global wiphy combinations for the sum of all radios.NL80211_ATTR_SOFTWARE_IFTYPESβ nested attribute (just likeNL80211_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, seeenum 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 mostNL80211_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) π seeenum nl80211_hidden_ssid, represented as au32.NL80211_ATTR_IE_PROBE_RESPβ information element(s) for the Probe Response frame π¦ this is used withNL80211_CMD_NEW_BEACONandNL80211_CMD_SET_BEACONto 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 withNL80211_CMD_NEW_BEACONandNL80211_CMD_SET_BEACONto 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, seeenum 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 inNL80211_ATTR_SCAN_SSIDS(eg. if an SSID is included in the probe request but the match attributes will never let it go through),-EINVALmay be returned π if omitted, no filtering is done.NL80211_ATTR_MAX_MATCH_SETSβ maximum number of sets that can be used withNL80211_ATTR_SCHED_SCAN_MATCH, a wiphy attribute πNL80211_ATTR_PMKSA_CANDIDATEβ nested attribute containing the PMKSA caching candidate information, seeenum 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 withNL80211_CMD_TRIGGER_SCANandNL80211_CMD_FRAMEcommands β¨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 π seeenum nl80211_tdls_operation, represented as au8.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 viaNL80211_CMD_TDLS_MGMTπ«Ά otherwiseNL80211_CMD_TDLS_OPERshould be used for asking the driver to perform a TDLS operation.NL80211_ATTR_DEVICE_AP_SMEβ thisu32attribute 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 π seeenum nl80211_ap_sme_features.NL80211_ATTR_DONT_WAIT_FOR_ACKβ used withNL80211_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β thisu32attribute contains flags fromenum nl80211_feature_flagsand 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 β checkenum nl80211_probe_resp_offload_support_attrfor 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 theATTR_HT_CAPABILITYwe 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 debugfsht_capsfile. πNL80211_ATTR_NOACK_MAPβ thisu16bitmap 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 withNL80211_CMD_FRAME.NL80211_ATTR_BG_SCAN_PERIODβ background scan period in seconds, or0to 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, seenl80211_user_reg_hint_type. πΈNL80211_ATTR_CONN_FAILED_REASONβ the reason the AP rejected the connection request from a station. Thenl80211_connect_failed_reasonenum 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 withNL80211_CMD_NEW_STATION).NL80211_ATTR_SCAN_FLAGSβ scan request control flags (u32).NL80211_ATTR_CHANNEL_WIDTHβ au32attribute holding one of the values ofenum 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 theSTART_APandSET_BSScommands.NL80211_ATTR_P2P_OPPPSβ P2P GO opportunistic PS (u8), used with theSTART_APandSET_BSScommands. It can be0or1; if it's not given inSTART_APthen0is assumed, and if it's not given inSET_BSSthen no change is made. πNL80211_ATTR_LOCAL_MESH_POWER_MODEβ local mesh STA link-specific power mode, defined inenum nl80211_mesh_power_mode.NL80211_ATTR_ACL_POLICYβ the ACL policy, seeenum nl80211_acl_policy, carried in au32attribute.NL80211_ATTR_MAC_ADDRSβ array of nested MAC addresses, used for MAC ACL. πNL80211_ATTR_MAC_ACL_MAXβu32attribute 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 ofenum 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 theNL80211_ATTR_EXT_CAPAvalue, 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, seeenum nl80211_protocol_features; the attribute is au32. π₯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 theATTR_VHT_CAPABILITYwe 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 debugfsvht_capsfile. π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, seeenum 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 toNL80211_ATTR_STA_AIDbut with one difference: it's allowed to be used with the firstNL80211_CMD_SET_STATIONcommand 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βu32attribute 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 fornl80211_send_mgmt,u32. As specified in the enumnl80211_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 theNL80211_CMD_JOIN_IBSSrequest, 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 withNL80211_CMD_NEW_STATIONorNL80211_CMD_SET_STATION(only whenNL80211_FEATURE_FULL_AP_CLIENT_STATEis supported, or with TDLS);u8attribute.NL80211_ATTR_VENDOR_IDβ the vendor ID, either a 24-bit OUI or, ifNL80211_VENDOR_ID_IS_LINUXis 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 au32. 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 withNL80211_CMD_NEW_STATIONmay fail. No cap.NL80211_ATTR_TDLS_PEER_CAPABILITYβ flags for TDLS peer capabilities, au32. As specified in theenum 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_NANmulticast group. - if set during
NL80211_CMD_ASSOCIATEorNL80211_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β au8attribute 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 withNL80211_CMD_ASSOCIATEandNL80211_CMD_CONNECTrequests. 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, theNL80211_FEATURE_ACKTO_ESTIMATIONfeature 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 (au8attribute) πNL80211_ATTR_USER_PRIOβ user priority value (au8attribute) πNL80211_ATTR_ADMITTED_TIMEβ admitted time in units of 32 microseconds (per second) (au16attribute) β±οΈNL80211_ATTR_SMPS_MODEβ SMPS mode to use (ap mode). seeenum 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 globalcfg80211regdomain πNL80211_ATTR_EXT_FEATURESβ extended feature flags contained in a byte array. The feature flags are identified by their bit index (seeenum 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 (au8array). 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_SURVEYmay 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 au32, 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 ofenum nl80211_sched_scan_plan. lowkey iconic structuring tbh π«ΆNL80211_ATTR_PBSSβ flag attribute. If set it means operate in a PBSS. Specified inNL80211_CMD_CONNECTto request connecting to a PCP, and inNL80211_CMD_START_APto 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 withNL80211_CMD_GET_WIPHYit contains attributes according toenum nl80211_bss_select_attrto indicate what BSS selection behaviours are supported. When used withNL80211_CMD_CONNECTit 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 ofenum 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_CAPABILITYandNL80211_ATTR_MLD_CAPA_AND_OPSare 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 whichNL80211_ATTR_SCAN_START_TIME_TSFis set πΈNL80211_ATTR_MEASUREMENT_DURATIONβ how long the measurement runs, in TUs (u16). IfNL80211_ATTR_MEASUREMENT_DURATION_MANDATORYis not set, this is the maximum duration allowed, not a promise π . It's used with measurement requests, and it can also ride along withNL80211_CMD_TRIGGER_SCANwhen 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 withNL80211_ATTR_MEASUREMENT_DURATIONis 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 byNL80211_CMD_START_NANand optionally withNL80211_CMD_CHANGE_NAN_CONFIG. Type isu8and it can't be 0. Also, values1and255are 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 au32bitmask ofBIT(NL80211_BAND_*)as described inenum nl80211_band. Like, forNL80211_BAND_2GHZ, bit 0 would be set π―. This one's used withNL80211_CMD_START_NANandNL80211_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. Seeenum nl80211_nan_func_attributesfor the description of this nested attribute π§NL80211_ATTR_NAN_MATCHβ used to report a match. It's a nested attribute. Seeenum 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_MACis 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 theNL80211_ATTR_SCHED_SCAN_RELATIVE_RSSIbased comparison to figure out better BSSs. The attribute value is a packed structure value as specified bystruct nl80211_bss_select_rssi_adjustπ¦NL80211_ATTR_TIMEOUT_REASONβ the reason an operation timed out π. Au32attribute with anenum nl80211_timeout_reasonvalue. Used, e.g., with theNL80211_CMD_CONNECTevent.NL80211_ATTR_FILS_ERP_USERNAMEβ the EAP Re-authentication Protocol (ERP) username part of NAI, used to refer keys rRK and rIK. Used withNL80211_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 withNL80211_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 withNL80211_CMD_CONNECTπ’NL80211_ATTR_FILS_ERP_RRKβ the ERP re-authentication Root Key (rRK) for the NAI specified byNL80211_ATTR_FILS_ERP_USERNAMEandNL80211_ATTR_FILS_ERP_REALM. This is used for generating rIK and rMSK from successful FILS authentication, and it's used withNL80211_CMD_CONNECTποΈNL80211_ATTR_FILS_CACHE_IDβ a 2-octet identifier advertised by a FILS AP, identifying the scope of PMKSAs. This is used withNL80211_CMD_SET_PMKSAandNL80211_CMD_DEL_PMKSAπNL80211_ATTR_PMKβ the attribute for passing PMK key material. It's used withNL80211_CMD_SET_PMKSAfor the PMKSA identified byNL80211_ATTR_PMKID. ForNL80211_CMD_CONNECTandNL80211_CMD_START_APit's used to provide the PSK for offloading the 4-way handshake for WPA/WPA2-PSK networks. For 802.1X authentication it's used withNL80211_CMD_SET_PMK. And for offloaded FT support this attribute specifies the PMK-R0 ifNL80211_ATTR_PMKR0_NAMEis 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 inNL80211_CMD_CONNECTto 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 (au32attribute with anenum nl80211_external_auth_actionvalue). This is used with theNL80211_CMD_EXTERNAL_AUTHrequest event π¬NL80211_ATTR_EXTERNAL_AUTH_SUPPORTβ Flag attribute indicating that user space supports external authentication. It shall be used with theNL80211_CMD_CONNECTandNL80211_CMD_START_APrequest. 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 forNL80211_CMD_START_APβ useNL80211_ATTR_AP_SETTINGS_FLAGSinstead, bestie, don't use the old one π«ΆNL80211_ATTR_NSSβ Station's New/updatedRX_NSSvalue, notified using thisu8attribute. Used withNL80211_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 inNL80211_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 usingCMD_CONTROL_PORT_FRAME. If control port routing over NL80211 is to be used then userspace must also use theNL80211_ATTR_SOCKET_OWNERflag π. When used withNL80211_ATTR_CONTROL_PORT_NO_PREAUTH, pre-auth frames are not forwarded over the control port π ββοΈNL80211_ATTR_TXQ_STATSβ TXQ statistics (nested attribute, seeenum 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 withNL80211_CMD_NEW_STATION). Can be set only ifNL80211_STA_FLAG_WMEis set β except for NAN, which uses WME anyway π¦NL80211_ATTR_FTM_RESPONDERβ a nested attribute which user-space can include inNL80211_CMD_START_APorNL80211_CMD_SET_BEACONfor fine timing measurement (FTM) responder functionality, containing parameters as possible. Seeenum nl80211_ftm_responder_attrβ±οΈNL80211_ATTR_FTM_RESPONDER_STATSβ Nested attribute with FTM responder statistics, seeenum 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 that0is an invalid value β³NL80211_ATTR_PEER_MEASUREMENTSβ peer measurements request (and result) data, using nested attributes specified inenum 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. Seeenum nl80211_tx_power_settingfor 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 withNL80211_CMD_CONNECTto 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 au8attribute, periodt.NL80211_ATTR_WIPHY_EDMG_BW_CONFIGβ the Channel BW Configuration subfield, which encodes the allowed channel bandwidth configurations β¨. It's au8attribute, 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 au16π.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 fromenum nl80211_iftype_akm_attributesπ«Ά. This one gets sent back in a response toNL80211_CMD_GET_WIPHY, indicating the supported AKM suites capability per interface. And listen: the AKMs advertised inNL80211_ATTR_AKM_SUITESare 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 withenum nl80211_tid_config_attrsub-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;0is not a valid value, so don't even try it π). This is an optional parameter configured throughNL80211_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 ofNL80211_ATTR_PMK_LIFETIME(u8,dot11RSNAConfigPMKReauthThreshold,1..100) π. Also an optional parameter, configured throughNL80211_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 theNL80211_CMD_REGISTER_FRAMEcommand β go read the description over there for the tea β.NL80211_ATTR_WIPHY_FREQ_OFFSETβ an offset of the associatedNL80211_ATTR_WIPHY_FREQ, in positive KHz πΈ. Only valid when supplied with anNL80211_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 inNL80211_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 withNL80211_CMD_NEW_STATION) π¦.NL80211_ATTR_FILS_DISCOVERYβ an optional parameter to configure FILS discovery π . It's a nested attribute β peepenum 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 β seeenum 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 withNL80211_CMD_NEW_STATION) π.NL80211_ATTR_S1G_CAPABILITY_MASKβ the S1G Capability Information element override mask π. Used withNL80211_ATTR_S1G_CAPABILITYinNL80211_CMD_ASSOCIATEorNL80211_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 au8attribute that encapsulates one of the values fromenum 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 withNL80211_CMD_SET_SAR_SPECSπ. The message contains fields ofnl80211_sar_attrs, which specify the sar type and related sar specs. Sar specs contains an array ofnl80211_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 theu64BSS colors for theNL80211_CMD_OBSS_COLOR_COLLISIONevent π.NL80211_ATTR_COLOR_CHANGE_COUNTβ au8attribute specifying the number of TBTT's until the color switch event β.NL80211_ATTR_COLOR_CHANGE_COLORβ au8attribute 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. Seeenum nl80211_mbssid_config_attributesfor 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β au32attribute containing ap settings flags, enumerated inenum nl80211_ap_settings_flagsπ₯. This attribute shall be used withNL80211_CMD_START_APrequest.NL80211_ATTR_EHT_CAPABILITYβ the EHT Capability information element (from the association request when used withNL80211_CMD_NEW_STATION) π«Ά. Can be set only ifNL80211_STA_FLAG_WMEis 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 withNL80211_CMD_CONNECT. And listen: if this attribute is not included inNL80211_CMD_CONNECT, drivers must not perform MLO connection. Non-negotiable, bestie.NL80211_ATTR_MAX_NUM_AKM_SUITESβ aU16attribute π. It indicates the maximum number of AKM suites allowed forNL80211_CMD_CONNECT,NL80211_CMD_ASSOCIATEandNL80211_CMD_START_APin theNL80211_CMD_GET_WIPHYresponse. If this attribute is not present, userspace shall consider the maximum number of AKM suites allowed asNL80211_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 withNL80211_CMD_FRAME_TX_STATUS, it indicates the frame TX timestamp. When used withNL80211_CMD_FRAMERX 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 withNL80211_CMD_FRAME_TX_STATUS, it indicates the ack RX timestamp. When used withNL80211_CMD_FRAMERX 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 π
NL80211_ATTR_MLO_LINK_DISABLED
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 π
NL80211_ATTR_MLO_TTLM_DLINK
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 π
NL80211_ATTR_MLO_TTLM_ULINK
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 π
NL80211_ATTR_MLO_RECONF_REM_LINKS
(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 withNL80211_ATTR_NAN_CHANNELwhen you're configuring NAN channels withNL80211_CMD_NAN_SET_LOCAL_SCHEDorNL80211_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 withNL80211_CMD_NAN_SET_LOCAL_SCHEDso 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 withNL80211_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 withNL80211_CMD_NAN_SCHED_UPDATE_DONEto 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 withNL80211_CMD_NEW_STATIONwhen 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 thatNL80211_CMD_NAN_SET_PEER_SCHEDdefines. 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 withNL80211_CMD_NAN_SET_PEER_SCHED. Contains up to 2 entries, each containing nested attributes from enumnl80211_nan_peer_map_attrs. πΊοΈNL80211_ATTR_ASSOC_ENCRYPTEDβ flag attribute, used only with theNL80211_CMD_CONNECTevent 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, honestlyNL80211_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 forNL80211_CMD_GET_STATION(dump mode only). When set on an MLD station, the dump produces twoNL80211_CMD_NEW_STATIONmessages per station per dump call: π__NL80211_ATTR_AFTER_LASTβ internal use. nothing to see here, move along πNUM_NL80211_ATTRβ total number ofnl80211_attrsavailable π’NL80211_ATTR_MAXβ highest attribute number currently defined π
Ok and here's the breakdown of what that two-messages situation actually looks like:
- An aggregated-stats message whose top-level
NL80211_ATTR_STA_INFOcontains MLO-combined statistics (same content as a dump without this flag). - For each active link, a per-link message containing
NL80211_ATTR_MLO_LINKSwith a single link entry. Each entry holdsNL80211_ATTR_MLO_LINK_ID, the link-specificNL80211_ATTR_MAC, andNL80211_ATTR_STA_INFOwith per-link statistics (see enumnl80211_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, frpacket 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 energyOWE 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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms