ENUM NL80211_BSS(9)
π NAME π
enum nl80211_bss β the netlink attributes for a BSS π°οΈβ¨ (that's a Basic Service Set bestie, the whole little wifi world your card is out here sniffing)
This one's from the Kernel API Manual, and it's lowkey the main character of every scan result you've ever seen. π
πΈ SYNOPSIS πΈ
ok so first, the vibe check β here's the whole cast, in order, no skips:
enum nl80211_bss {
__NL80211_BSS_INVALID ,
NL80211_BSS_BSSID ,
NL80211_BSS_FREQUENCY ,
NL80211_BSS_TSF ,
NL80211_BSS_BEACON_INTERVAL ,
NL80211_BSS_CAPABILITY ,
NL80211_BSS_INFORMATION_ELEMENTS ,
NL80211_BSS_SIGNAL_MBM ,
NL80211_BSS_SIGNAL_UNSPEC ,
NL80211_BSS_STATUS ,
NL80211_BSS_SEEN_MS_AGO ,
NL80211_BSS_BEACON_IES ,
NL80211_BSS_CHAN_WIDTH ,
NL80211_BSS_BEACON_TSF ,
NL80211_BSS_PRESP_DATA ,
NL80211_BSS_LAST_SEEN_BOOTTIME ,
NL80211_BSS_PAD ,
NL80211_BSS_PARENT_TSF ,
NL80211_BSS_PARENT_BSSID ,
NL80211_BSS_CHAIN_SIGNAL ,
NL80211_BSS_FREQUENCY_OFFSET ,
NL80211_BSS_MLO_LINK_ID ,
NL80211_BSS_MLD_ADDR ,
NL80211_BSS_USE_FOR ,
NL80211_BSS_CANNOT_USE_REASONS ,
__NL80211_BSS_AFTER_LAST ,
NL80211_BSS_MAX
};
π¦ Constants π¦
kay, now the roster, one by one, with zero gaps β this is the part you screenshot πΈ
__NL80211_BSS_INVALIDβ invalid. literally just the "no β" slot, a placeholder that means nothing, doing nothing, living its truth πNL80211_BSS_BSSIDβ the BSSID of the BSS,6 octets. that's the AP's little name tag πNL80211_BSS_FREQUENCYβ frequency in MHz (u32). which lane the party's happening in π»NL80211_BSS_TSFβ TSF of the received probe response/beacon (u64). and here's the fine print, bestie, don't skip it: ifNL80211_BSS_PRESP_DATAis present then this is known to be from a probe response, otherwise it may be from the same beacon that theNL80211_BSS_BEACON_TSFwill be from. iykyk β±οΈNL80211_BSS_BEACON_INTERVALβ beacon interval of the (I)BSS (u16). how often it shouts into the void π£οΈNL80211_BSS_CAPABILITYβ capability field, in CPU order,u16. yes the byte order note matters, don't come for me π§NL80211_BSS_INFORMATION_ELEMENTSβ binary attribute containing the raw information elements from the probe response/beacon (bin). okay this one has LORE so buckle up:- if the
NL80211_BSS_BEACON_IESattribute is present and the data is different, then the IEs here are from a Probe Response frame; otherwise they're from a Beacon frame. - however π if the driver doesn't indicate the source of the IEs, these IEs may be from either frame subtype.
- if present, the
NL80211_BSS_PRESP_DATAattribute indicates that the data here is known to be from a probe response, without any heuristics. no vibes-based guessing, we love to see it π
- if the
NL80211_BSS_SIGNAL_MBMβ signal strength of probe response/beacon in mBm (100 * dBm),s32. the "how loud is it" number πΆNL80211_BSS_SIGNAL_UNSPECβ signal strength of the probe response/beacon in unspecified units, scaled to0..100,u8. mystery units but make it aesthetic π«§NL80211_BSS_STATUSβ status, if this BSS is "used". quotes very much intended π«ΆNL80211_BSS_SEEN_MS_AGOβ age of this BSS entry in ms. how long since we last caught a glimpse πNL80211_BSS_BEACON_IESβ binary attribute containing the raw information elements from a Beacon frame (bin); not present if no Beacon frame has yet been received. if it's missing, that's why, don't panic πNL80211_BSS_CHAN_WIDTHβ channel width of the control channel (u32, enumnl80211_bss_scan_width) β No longer used! πͺ¦ rest in peace legend, we still list you out of respectNL80211_BSS_BEACON_TSFβ TSF of the last received beacon (u64); not present if no beacon frame has been received yet. same deal, absent = hasn't happened yet β³NL80211_BSS_PRESP_DATAβ the data inNL80211_BSS_INFORMATION_ELEMENTSandNL80211_BSS_TSFis known to be from a probe response. it's a flag attribute π© the receipts flag, not the red flagNL80211_BSS_LAST_SEEN_BOOTTIMEβCLOCK_BOOTTIMEtimestamp when this entry was last updated by a received frame. the value is expected to be accurate to about10ms. (u64, nanoseconds) π°οΈ she's precise-ishNL80211_BSS_PADβ attribute used for padding for64-bit alignment. the invisible friend keeping everything lined up π§NL80211_BSS_PARENT_TSFβ the time at the start of reception of the first octet of the timestamp field of the last beacon/probe received for this BSS. the time is the TSF of the BSS specified byNL80211_BSS_PARENT_BSSID. (u64). yes it's a mouthful, yes it's correct πNL80211_BSS_PARENT_BSSIDβ the BSS according to whichNL80211_BSS_PARENT_TSFis set. these two are literally a package deal π―ββοΈNL80211_BSS_CHAIN_SIGNALβ per-chain signal strength of last BSS update. contains a nested array of signal strength attributes (u8, dBm), using the nesting index as the antenna number. one number per antenna, slay π‘NL80211_BSS_FREQUENCY_OFFSETβ frequency offset in KHz. tiny nudge off the line πNL80211_BSS_MLO_LINK_IDβ MLO link ID of the BSS (u8). multi-link era bestie πNL80211_BSS_MLD_ADDRβ MLD address of this BSS if connected to it. conditional, like all good things πNL80211_BSS_USE_FORβu32bitmap attribute indicating what the BSS can be used for, see enumnl80211_bss_use_for. the "what is she for" checklist βNL80211_BSS_CANNOT_USE_REASONSβ Indicates the reason that this BSS cannot be used for all or some of the possible uses by the device reporting it, even though its presence was detected. This is au64attribute containing a bitmap of values from enumnl80211_cannot_use_reasonsβ and note that the attribute may be missing if no reasons are specified. so if it's not there, that's not a bug, that's just nothing to report π__NL80211_BSS_AFTER_LASTβ internal. not for you (affectionate) πNL80211_BSS_MAXβ highest BSS attribute. the ceiling, the final boss, the end of the list π
β οΈ real talk for one sec:NL80211_BSS_CHAN_WIDTHis straight up marked No longer used! and__NL80211_BSS_INVALID/__NL80211_BSS_AFTER_LASTare bookkeeping β don't build your whole personality on them π
π₯ SEE ALSO π₯
the reading list isβ¦ extensive. she's thorough. grab a snack π and take it in:
start with the kernel file ./include/uapi/linux/nl80211.h, then: Station handling(9), Frame transmission/registration support(9), Virtual interface / concurrency capabilities(9), packet coalesce support(9), WPA/WPA2 EAPOL handshake offload(9), FILS shared key authentication offload(9), SAE authentication offload(9), VLAN offload support for setting group keys and binding STAs to VLANs(9), TID configuration(9), FILS shared key crypto offload(9), Multi-Link Operation(9), OWE DH IE handling offload(9).
then the enums and structs, all (9) of course: enum nl80211_commands, enum nl80211_attrs, enum nl80211_iftype, enum nl80211_sta_flags, enum nl80211_sta_p2p_ps_status, struct nl80211_sta_flag_update, enum nl80211_he_gi, enum nl80211_he_ltf, enum nl80211_he_ru_alloc, enum nl80211_eht_gi, enum nl80211_eht_ltf, enum nl80211_eht_ru_alloc, enum nl80211_rate_info, enum nl80211_sta_bss_param, enum nl80211_sta_info, enum nl80211_tid_stats, enum nl80211_txq_stats, enum nl80211_mpath_flags, enum nl80211_mpath_info, enum nl80211_band_iftype_attr, enum nl80211_band_attr, enum nl80211_nan_phy_cap_attr, enum nl80211_wmm_rule, enum nl80211_frequency_attr, enum nl80211_bitrate_attr, enum nl80211_reg_initiator, enum nl80211_reg_type, enum nl80211_reg_rule_attr, enum nl80211_sched_scan_match_attr, enum nl80211_reg_rule_flags, enum nl80211_dfs_regions, enum nl80211_user_reg_hint_type, enum nl80211_survey_info, enum nl80211_mntr_flags, enum nl80211_mesh_power_mode, enum nl80211_meshconf_params, enum nl80211_mesh_setup_params, enum nl80211_txq_attr, enum nl80211_channel_type, enum nl80211_key_mode, enum nl80211_chan_width, enum nl80211_bss_scan_width, enum nl80211_bss_use_for, enum nl80211_bss_cannot_use_reasons, enum nl80211_bss_status, enum nl80211_auth_type, enum nl80211_key_type, enum nl80211_mfp, enum nl80211_key_default_types, enum nl80211_key_attributes, enum nl80211_tx_rate_attributes, struct nl80211_txrate_vht, struct nl80211_txrate_he, struct nl80211_txrate_eht, enum nl80211_band, enum nl80211_ps_state, enum nl80211_attr_cqm, enum nl80211_cqm_rssi_threshold_event, enum nl80211_tx_power_setting, enum nl80211_tid_config, enum nl80211_packet_pattern_attr, struct nl80211_pattern_support, enum nl80211_wowlan_triggers.
still going π« β TCP connection wakeup(9), struct nl80211_wowlan_tcp_data_seq, struct nl80211_wowlan_tcp_data_token, struct nl80211_wowlan_tcp_data_token_feature, enum nl80211_wowlan_tcp_attrs, struct nl80211_coalesce_rule_support, enum nl80211_attr_coalesce_rule, enum nl80211_coalesce_condition, enum nl80211_iface_limit_attrs, enum nl80211_if_combination_attrs, enum nl80211_plink_state, enum nl80211_plink_action, enum nl80211_rekey_data, enum nl80211_hidden_ssid, enum nl80211_sta_wme_attr, enum nl80211_pmksa_candidate_attr, enum nl80211_tdls_operation, enum nl80211_ap_sme_features, enum nl80211_feature_flags, enum nl80211_ext_feature_index, enum nl80211_probe_resp_offload_support_attr, enum nl80211_connect_failed_reason, enum nl80211_timeout_reason, enum nl80211_scan_flags, enum nl80211_acl_policy, enum nl80211_smps_mode, enum nl80211_radar_event, enum nl80211_dfs_state, enum nl80211_protocol_features, enum nl80211_crit_proto_id, enum nl80211_rxmgmt_flags, struct nl80211_vendor_cmd_info, enum nl80211_tdls_peer_capability, enum nl80211_sched_scan_plan, struct nl80211_bss_select_rssi_adjust, enum nl80211_bss_select_attr, enum nl80211_nan_function_type, enum nl80211_nan_publish_type, enum nl80211_nan_func_term_reason, enum nl80211_nan_func_attributes, enum nl80211_nan_srf_attributes, enum nl80211_nan_match_attributes, enum nl80211_nan_band_conf_attributes, enum nl80211_nan_conf_attributes.
almost there, do not scroll away on me π€ β enum nl80211_external_auth_action, enum nl80211_ftm_responder_attributes, enum nl80211_preamble, enum nl80211_peer_measurement_type, enum nl80211_peer_measurement_status, enum nl80211_peer_measurement_req, enum nl80211_peer_measurement_resp, enum nl80211_peer_measurement_ftm_req_type, enum nl80211_peer_measurement_peer_attrs, enum nl80211_peer_measurement_attrs, enum nl80211_peer_measurement_ftm_capa, enum nl80211_peer_measurement_ftm_type_capa, enum nl80211_peer_measurement_ftm_req, enum nl80211_peer_measurement_ftm_failure_reasons, enum nl80211_peer_measurement_ftm_resp, enum nl80211_obss_pd_attributes, enum nl80211_bss_color_attributes, enum nl80211_iftype_akm_attributes, enum nl80211_fils_discovery_attributes, enum nl80211_unsol_bcast_probe_resp_attributes, enum nl80211_sae_pwe_mechanism, enum nl80211_sar_type, enum nl80211_sar_attrs, enum nl80211_sar_specs_attrs, enum nl80211_mbssid_config_attributes, enum nl80211_ap_settings_flags, enum nl80211_wiphy_radio_attrs, enum nl80211_wiphy_radio_freq_range, enum nl80211_s1g_short_beacon_attrs, enum nl80211_nan_capabilities, enum nl80211_nan_peer_map_attrs.
that's the whole list, every last one, no crumbs left π β¨
okay that's the page!! π«Ά this one lives under ./include/uapi/linux, dated October 2026 β so if you're reading this in the future, hiiii, you're doing great, drink some water ππ and remember: BSSID 6 octets, u32 frequency in MHz, and always check whether NL80211_BSS_PRESP_DATA is hanging around before you assume anything. periodt ππ¦
π¦ 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