ENUM NL80211_SCAN_FLAGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so bestie, welcome to enum nl80211_scan_flags from section 9 of the Kernel API Manual β€” literally the scan request control flags, and they are lowkey iconic for telling the kernel how to handle scans. ✨


🌸 SYNOPSIS 🌸

the whole squad, assembled:

enum nl80211_scan_flags {
    NL80211_SCAN_FLAG_LOW_PRIORITY ,
    NL80211_SCAN_FLAG_FLUSH ,
    NL80211_SCAN_FLAG_AP ,
    NL80211_SCAN_FLAG_RANDOM_ADDR ,
    NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME ,
    NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP ,
    NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE ,
    NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION ,
    NL80211_SCAN_FLAG_LOW_SPAN ,
    NL80211_SCAN_FLAG_LOW_POWER ,
    NL80211_SCAN_FLAG_HIGH_ACCURACY ,
    NL80211_SCAN_FLAG_RANDOM_SN ,
    NL80211_SCAN_FLAG_MIN_PREQ_CONTENT ,
    NL80211_SCAN_FLAG_FREQ_KHZ ,
    NL80211_SCAN_FLAG_COLOCATED_6GHZ

};

πŸŽ€ Constants πŸŽ€

  • NL80211_SCAN_FLAG_LOW_PRIORITY β€” this scan request is giving low priority energy. it’s not the main character rn. πŸ’…
  • NL80211_SCAN_FLAG_FLUSH β€” flush the cache before scanning. clean slate, fresh start, no stale leftovers. 🧼
  • NL80211_SCAN_FLAG_AP β€” force a scan even if the interface is configured as AP and beaconing has already been configured. > bestie, this one is dangerous: it will destroy stations performance because a lot of frames will be lost while scanning off-channel, so it must be used only when really needed. 😭 no cap, be careful.
  • NL80211_SCAN_FLAG_RANDOM_ADDR β€” use a random MAC address for this scan. for a scheduled scan, that means a different one for every scan iteration. when the flag is set, depending on device capabilities, the NL80211_ATTR_MAC and NL80211_ATTR_MAC_MASK attributes may also be given β€” in that case only the masked bits will be preserved from the MAC address and the remainder randomised. if those attributes are not given, full randomisation is assumed (46 bits, locally administered 1, multicast 0). this flag must not be requested when the feature isn’t supported β€” check the nl80211 feature flags for the device, fr fr. πŸ”
  • NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME β€” fill the dwell time in the FILS request parameters IE in the probe request. yes, it’s giving very specific. 🎯
  • NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP β€” accept broadcast probe responses. say yes to the group chat. 🫢
  • NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE β€” send probe request frames at rate of at least 5.5M. if a non-OCE AP is discovered in the channel, only the first probe req in the channel will be sent in high rate. πŸ’¨
  • NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION β€” allow probe request tx deferral (dot11FILSProbeDelay shall be set to 15ms) and suppression: if it has received a broadcast Probe Response frame, Beacon frame or FILS Discovery frame from an AP that the STA considers a suitable candidate for (re-)association β€” suitable in terms of SSID and/or RSSI. πŸ¦‹
  • NL80211_SCAN_FLAG_LOW_SPAN β€” span corresponds to the total time taken to accomplish the scan. so this flag intends the driver to perform the scan request with lesser span/duration. it is specific to the driver implementations on how this is accomplished. scan accuracy may get impacted with this flag. ⏳
  • NL80211_SCAN_FLAG_LOW_POWER β€” this flag intends the scan attempts to consume optimal possible power. drivers can resort to their specific means to optimize the power. scan accuracy may get impacted with this flag. πŸ”‹
  • NL80211_SCAN_FLAG_HIGH_ACCURACY β€” accuracy here intends to the extent of scan results obtained. thus HIGH_ACCURACY scan flag aims to get maximum possible scan results. this flag hints the driver to use the best possible scan configuration to improve the accuracy in scanning. latency and power use may get impacted with this flag. 🎯
  • NL80211_SCAN_FLAG_RANDOM_SN β€” randomize the sequence number in probe request frames from this scan to avoid correlation/tracking being possible. privacy slay. πŸ™ˆ
  • NL80211_SCAN_FLAG_MIN_PREQ_CONTENT β€” minimize probe request content to only have supported rates and no additional capabilities (unless added by userspace explicitly.) keep it cute, keep it minimal. πŸŽ€
  • NL80211_SCAN_FLAG_FREQ_KHZ β€” report scan results with NL80211_ATTR_SCAN_FREQ_KHZ. this also means NL80211_ATTR_SCAN_FREQUENCIES will not be included. noted. πŸ“
  • NL80211_SCAN_FLAG_COLOCATED_6GHZ β€” scan for collocated APs reported by 2.4/5 GHz APs. when the flag is set, the scan logic will use the information from the RNR element found in beacons/probe responses received on the 2.4/5 GHz channels to actively scan only the 6GHz channels on which APs are expected to be found. note that when not set, the scan logic would scan all 6GHz channels, but since transmission of probe requests on non-PSC channels is limited, it is highly likely that these channels would passively be scanned. also note that when the flag is set, in addition to the colocated APs, PSC channels would also be scanned if the user space has asked for it. 🌈

πŸ’¬ Description πŸ’¬

scan request control flags are used to control the handling of NL80211_CMD_TRIGGER_SCAN and NL80211_CMD_START_SCHED_SCAN requests. periodt. πŸ’…

NL80211_SCAN_FLAG_LOW_SPAN, NL80211_SCAN_FLAG_LOW_POWER, and NL80211_SCAN_FLAG_HIGH_ACCURACY flags are exclusive of each other β€” i.e., only one of them can be used in the request. so don’t try to make them share the spotlight, bestie. πŸ‘‘

πŸ‘€ SEE ALSO πŸ‘€

okay bestie, the whole nl80211 extended universe is linked up here β€” every single one, no skips, no missing crumbs πŸ’…βœ¨

  • Kernel file ./include/uapi/linux/nl80211.h
  • 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)
  • enum nl80211_commands(9)
  • enum nl80211_attrs(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_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)

mwah πŸ’‹ that's the whole see-also squad, and yes, your fave page is chillin' in ./include/uapi/linux, dated October 2026, living under the iconic title enum nl80211_scan_flags(9) πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from