xref: /dflybsd-src/share/man/man9/ieee80211_scan.9 (revision a42bad2dd166ad946800e2379892153f2e5a70c7)
105ac2d0dSSascha Wildner.\"
205ac2d0dSSascha Wildner.\" Copyright (c) 2009 Sam Leffler, Errno Consulting
305ac2d0dSSascha Wildner.\" All rights reserved.
405ac2d0dSSascha Wildner.\"
505ac2d0dSSascha Wildner.\" Redistribution and use in source and binary forms, with or without
605ac2d0dSSascha Wildner.\" modification, are permitted provided that the following conditions
705ac2d0dSSascha Wildner.\" are met:
805ac2d0dSSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
905ac2d0dSSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
1005ac2d0dSSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
1105ac2d0dSSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
1205ac2d0dSSascha Wildner.\"    documentation and/or other materials provided with the distribution.
1305ac2d0dSSascha Wildner.\"
1405ac2d0dSSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1505ac2d0dSSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1605ac2d0dSSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1705ac2d0dSSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1805ac2d0dSSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1905ac2d0dSSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2005ac2d0dSSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2105ac2d0dSSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2205ac2d0dSSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2305ac2d0dSSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2405ac2d0dSSascha Wildner.\" SUCH DAMAGE.
2505ac2d0dSSascha Wildner.\"
26e4c06619SSascha Wildner.\" $FreeBSD: head/share/man/man9/ieee80211_scan.9 233648 2012-03-29 05:02:12Z eadler $
2705ac2d0dSSascha Wildner.\"
2817338d27SSascha Wildner.Dd May 26, 2016
2905ac2d0dSSascha Wildner.Dt IEEE80211_SCAN 9
3005ac2d0dSSascha Wildner.Os
3105ac2d0dSSascha Wildner.Sh NAME
3205ac2d0dSSascha Wildner.Nm ieee80211_scan
3305ac2d0dSSascha Wildner.Nd 802.11 scanning support
3405ac2d0dSSascha Wildner.Sh SYNOPSIS
357d9c9280SSascha Wildner.In net/if.h
367d9c9280SSascha Wildner.In net/if_media.h
37737edb20SSascha Wildner.In netproto/802_11/ieee80211_var.h
3805ac2d0dSSascha Wildner.Pp
3905ac2d0dSSascha Wildner.Ft int
4005ac2d0dSSascha Wildner.Fo ieee80211_start_scan
4105ac2d0dSSascha Wildner.Fa "struct ieee80211vap *"
4205ac2d0dSSascha Wildner.Fa "int flags"
4305ac2d0dSSascha Wildner.Fa "u_int duration"
4405ac2d0dSSascha Wildner.Fa "u_int mindwell"
4505ac2d0dSSascha Wildner.Fa "u_int maxdwell"
4605ac2d0dSSascha Wildner.Fa "u_int nssid"
4705ac2d0dSSascha Wildner.Fa "const struct ieee80211_scan_ssid ssids[]"
4805ac2d0dSSascha Wildner.Fc
4905ac2d0dSSascha Wildner.\"
5005ac2d0dSSascha Wildner.Ft int
5105ac2d0dSSascha Wildner.Fo ieee80211_check_scan
5205ac2d0dSSascha Wildner.Fa "struct ieee80211vap *"
5305ac2d0dSSascha Wildner.Fa "int flags"
5405ac2d0dSSascha Wildner.Fa "u_int duration"
5505ac2d0dSSascha Wildner.Fa "u_int mindwell"
5605ac2d0dSSascha Wildner.Fa "u_int maxdwell"
5705ac2d0dSSascha Wildner.Fa "u_int nssid"
5805ac2d0dSSascha Wildner.Fa "const struct ieee80211_scan_ssid ssids[]"
5905ac2d0dSSascha Wildner.Fc
6005ac2d0dSSascha Wildner.\"
6105ac2d0dSSascha Wildner.Ft int
6205ac2d0dSSascha Wildner.Fn ieee80211_check_scan_current "struct ieee80211vap *"
6305ac2d0dSSascha Wildner.\"
6405ac2d0dSSascha Wildner.Ft int
6505ac2d0dSSascha Wildner.Fn ieee80211_bg_scan "struct ieee80211vap *" "int"
6605ac2d0dSSascha Wildner.\"
6705ac2d0dSSascha Wildner.Ft int
6805ac2d0dSSascha Wildner.Fn ieee80211_cancel_scan "struct ieee80211vap *"
6905ac2d0dSSascha Wildner.\"
7005ac2d0dSSascha Wildner.Ft int
71e354d347SSascha Wildner.Fn ieee80211_cancel_anyscan "struct ieee80211vap *"
7205ac2d0dSSascha Wildner.\"
7305ac2d0dSSascha Wildner.Ft int
7405ac2d0dSSascha Wildner.Fn ieee80211_scan_next "struct ieee80211vap *"
7505ac2d0dSSascha Wildner.\"
7605ac2d0dSSascha Wildner.Ft int
7705ac2d0dSSascha Wildner.Fn ieee80211_scan_done "struct ieee80211vap *"
7805ac2d0dSSascha Wildner.\"
7905ac2d0dSSascha Wildner.Ft int
8005ac2d0dSSascha Wildner.Fn ieee80211_probe_curchan "struct ieee80211vap *" "int"
8105ac2d0dSSascha Wildner.\"
8205ac2d0dSSascha Wildner.Ft void
8305ac2d0dSSascha Wildner.Fo ieee80211_add_scan
8405ac2d0dSSascha Wildner.Fa "struct ieee80211vap *"
8517338d27SSascha Wildner.Fa "struct ieee80211_channel *"
8605ac2d0dSSascha Wildner.Fa "const struct ieee80211_scanparams *"
8705ac2d0dSSascha Wildner.Fa "const struct ieee80211_frame *"
8805ac2d0dSSascha Wildner.Fa "int subtype"
8905ac2d0dSSascha Wildner.Fa "int rssi"
9005ac2d0dSSascha Wildner.Fa "int noise"
9105ac2d0dSSascha Wildner.Fc
9205ac2d0dSSascha Wildner.\"
9305ac2d0dSSascha Wildner.Ft void
9405ac2d0dSSascha Wildner.Fn ieee80211_scan_timeout "struct ieee80211com *"
9505ac2d0dSSascha Wildner.\"
9605ac2d0dSSascha Wildner.Ft void
9705ac2d0dSSascha Wildner.Fo ieee80211_scan_assoc_fail
9805ac2d0dSSascha Wildner.Fa "struct ieee80211vap *"
9905ac2d0dSSascha Wildner.Fa "const uint8_t mac[IEEE80211_ADDR_LEN]"
10005ac2d0dSSascha Wildner.Fa "int reason"
10105ac2d0dSSascha Wildner.Fc
10205ac2d0dSSascha Wildner.\"
10305ac2d0dSSascha Wildner.Ft void
10405ac2d0dSSascha Wildner.Fn ieee80211_scan_flush "struct ieee80211vap *"
10505ac2d0dSSascha Wildner.\"
10605ac2d0dSSascha Wildner.Ft void
10705ac2d0dSSascha Wildner.Fo ieee80211_scan_iterate
10805ac2d0dSSascha Wildner.Fa "struct ieee80211vap *"
10905ac2d0dSSascha Wildner.Fa "ieee80211_scan_iter_func"
11005ac2d0dSSascha Wildner.Fa "void *"
11105ac2d0dSSascha Wildner.Fc
11205ac2d0dSSascha Wildner.\"
11305ac2d0dSSascha Wildner.Ft void
11405ac2d0dSSascha Wildner.Fn ieee80211_scan_dump_channels "const struct ieee80211_scan_state *"
11505ac2d0dSSascha Wildner.\"
11605ac2d0dSSascha Wildner.Ft void
11705ac2d0dSSascha Wildner.Fo ieee80211_scanner_register
11805ac2d0dSSascha Wildner.Fa "enum ieee80211_opmode"
11905ac2d0dSSascha Wildner.Fa "const struct ieee80211_scanner *"
12005ac2d0dSSascha Wildner.Fc
12105ac2d0dSSascha Wildner.\"
12205ac2d0dSSascha Wildner.Ft void
12305ac2d0dSSascha Wildner.Fo ieee80211_scanner_unregister
12405ac2d0dSSascha Wildner.Fa "enum ieee80211_opmode"
12505ac2d0dSSascha Wildner.Fa "const struct ieee80211_scanner *"
12605ac2d0dSSascha Wildner.Fc
12705ac2d0dSSascha Wildner.\"
12805ac2d0dSSascha Wildner.Ft void
12905ac2d0dSSascha Wildner.Fn ieee80211_scanner_unregister_all "const struct ieee80211_scanner *"
13005ac2d0dSSascha Wildner.\"
13105ac2d0dSSascha Wildner.Ft const struct ieee80211_scanner *
13205ac2d0dSSascha Wildner.Fn ieee80211_scanner_get "enum ieee80211_opmode"
13305ac2d0dSSascha Wildner.Sh DESCRIPTION
13405ac2d0dSSascha WildnerThe
13505ac2d0dSSascha Wildner.Nm net80211
13605ac2d0dSSascha Wildnersoftware layer provides an extensible framework for scanning.
13705ac2d0dSSascha WildnerScanning is the procedure by which a station locates a BSS to join
13805ac2d0dSSascha Wildner(in infrastructure and IBSS mode), or a channel to use (when operating
13905ac2d0dSSascha Wildneras an AP or an IBSS master).
14005ac2d0dSSascha WildnerScans are either
14105ac2d0dSSascha Wildner.Dq active
14205ac2d0dSSascha Wildneror
14305ac2d0dSSascha Wildner.Dq passive .
14405ac2d0dSSascha WildnerAn active scan causes one or more ProbeRequest frames to be sent on
14505ac2d0dSSascha Wildnervisiting each channel.
14605ac2d0dSSascha WildnerA passive request causes each channel in the scan set to be visited but
14705ac2d0dSSascha Wildnerno frames to be transmitted; the station only listens for traffic.
14805ac2d0dSSascha WildnerNote that active scanning may still need to listen for traffic before
14905ac2d0dSSascha Wildnersending ProbeRequest frames depending on regulatory constraints.
15005ac2d0dSSascha Wildner.Pp
15105ac2d0dSSascha WildnerA scan operation involves constructing a set of channels to inspect
15205ac2d0dSSascha Wildner(the scan set),
15305ac2d0dSSascha Wildnervisiting each channel and collecting information
15405ac2d0dSSascha Wildner(e.g. what BSS are present),
15505ac2d0dSSascha Wildnerand then analyzing the results to make decisions such as which BSS to join.
15605ac2d0dSSascha WildnerThis process needs to be as fast as possible so
15705ac2d0dSSascha Wildner.Nm net80211
15805ac2d0dSSascha Wildnerdoes things like intelligently construct scan sets and dwell on a channel
15905ac2d0dSSascha Wildneronly as long as necessary.
16005ac2d0dSSascha WildnerScan results are cached and the scan cache is used to avoid scanning when
16105ac2d0dSSascha Wildnerpossible and to enable roaming between access points when operating
16205ac2d0dSSascha Wildnerin infrastructure mode.
16305ac2d0dSSascha Wildner.Pp
16405ac2d0dSSascha WildnerScanning is handled by pluggable modules that implement
16505ac2d0dSSascha Wildner.Em policy
16605ac2d0dSSascha Wildnerper-operating mode.
16705ac2d0dSSascha WildnerThe core scanning support provides an infrastructure to support these
16805ac2d0dSSascha Wildnermodules and exports a common API to the rest of the
16905ac2d0dSSascha Wildner.Nm net80211
17005ac2d0dSSascha Wildnerlayer.
17105ac2d0dSSascha WildnerPolicy modules decide what channels to visit, what state to record to
17205ac2d0dSSascha Wildnermake decisions, and selects the final station/channel to return as the
17305ac2d0dSSascha Wildnerresult of a scan.
17405ac2d0dSSascha Wildner.Pp
17505ac2d0dSSascha WildnerScanning is done synchronously when initially bringing a vap to
17605ac2d0dSSascha Wildneran operational state and optionally in the background to maintain
17705ac2d0dSSascha Wildnerthe scan cache for doing roaming and rogue AP monitoring.
17805ac2d0dSSascha WildnerScanning is not tied to the
17905ac2d0dSSascha Wildner.Nm net80211
18005ac2d0dSSascha Wildnerstate machine that governs vaps except for linkage to the
18105ac2d0dSSascha Wildner.Dv IEEE80211_S_SCAN
18205ac2d0dSSascha Wildnerstate.
18305ac2d0dSSascha WildnerOnly one vap at a time may be scanning; this scheduling policy
18405ac2d0dSSascha Wildneris handled in
18505ac2d0dSSascha Wildner.Fn ieee80211_new_state
18605ac2d0dSSascha Wildnerand is transparent to scanning code.
18705ac2d0dSSascha Wildner.Pp
18805ac2d0dSSascha WildnerScanning is controlled by a set of parameters that (potentially)
18905ac2d0dSSascha Wildnerconstrains the channel set and any desired SSID's and BSSID's.
19005ac2d0dSSascha Wildner.Nm net80211
19105ac2d0dSSascha Wildnercomes with a standard scanner module that works with all available
19205ac2d0dSSascha Wildneroperating modes and supports
19305ac2d0dSSascha Wildner.Dq background scanning
19405ac2d0dSSascha Wildnerand
19505ac2d0dSSascha Wildner.Dq roaming
19605ac2d0dSSascha Wildneroperation.
19705ac2d0dSSascha Wildner.Sh SCANNER MODULES
19805ac2d0dSSascha WildnerScanning modules use a registration mechanism to hook into the
19905ac2d0dSSascha Wildner.Nm net80211
20005ac2d0dSSascha Wildnerlayer.
20105ac2d0dSSascha WildnerUse
20205ac2d0dSSascha Wildner.Fn ieee80211_scanner_register
20305ac2d0dSSascha Wildnerto register a scan module for a particular operating mode and
20405ac2d0dSSascha Wildner.Fn ieee80211_scanner_unregister
20505ac2d0dSSascha Wildneror
20605ac2d0dSSascha Wildner.Fn ieee80211_scanner_unregister_all
20705ac2d0dSSascha Wildnerto clear entries (typically on module unload).
20805ac2d0dSSascha WildnerOnly one scanner module can be registered at any time for an operating mode.
20905ac2d0dSSascha Wildner.Sh DRIVER SUPPORT
21005ac2d0dSSascha WildnerScanning operations are usually managed by the
21105ac2d0dSSascha Wildner.Nm net80211
21205ac2d0dSSascha Wildnerlayer.
21305ac2d0dSSascha WildnerDrivers must provide
21405ac2d0dSSascha Wildner.Vt ic_scan_start
21505ac2d0dSSascha Wildnerand
21605ac2d0dSSascha Wildner.Vt ic_scan_stop
21705ac2d0dSSascha Wildnermethods that are called at the start of a scan and when the
21805ac2d0dSSascha Wildnerwork is done; these should handle work such as enabling receive
21905ac2d0dSSascha Wildnerof Beacon and ProbeResponse frames and disable any BSSID matching.
22005ac2d0dSSascha WildnerThe
22105ac2d0dSSascha Wildner.Vt ic_set_channel
22205ac2d0dSSascha Wildnermethod is used to change channels while scanning.
22305ac2d0dSSascha Wildner.Nm net80211
22405ac2d0dSSascha Wildnerwill generate ProbeRequest frames and transmit them using the
22505ac2d0dSSascha Wildner.Nm ic_raw_xmit
22605ac2d0dSSascha Wildnermethod.
22705ac2d0dSSascha WildnerFrames received while scanning are dispatched to
22805ac2d0dSSascha Wildner.Nm net80211
22905ac2d0dSSascha Wildnerusing the normal receive path.
23005ac2d0dSSascha WildnerDevices that off-load scan work to firmware most easily mesh with
23105ac2d0dSSascha Wildner.Nm net80211
23205ac2d0dSSascha Wildnerby operating on a channel-at-a-time basis as this defers control to
23305ac2d0dSSascha Wildner.Nm net80211's
23405ac2d0dSSascha Wildnerscan machine scheduler.
23505ac2d0dSSascha WildnerBut multi-channel scanning
23605ac2d0dSSascha Wildneris supported if the driver manually dispatches results using
23705ac2d0dSSascha Wildner.Fn ieee80211_add_scan
23805ac2d0dSSascha Wildnerroutine to enter results into the scan cache.
23905ac2d0dSSascha Wildner.Sh SCAN REQUESTS
24005ac2d0dSSascha WildnerScan requests occur by way of the
24105ac2d0dSSascha Wildner.Dv IEEE80211_SCAN_REQUEST
24205ac2d0dSSascha Wildnerioctl or through a change in a vap's state machine that requires
24305ac2d0dSSascha Wildnerscanning.
24405ac2d0dSSascha WildnerIn both cases the scan cache can be checked first and, if it is deemed
24505ac2d0dSSascha Wildnersuitably
24605ac2d0dSSascha Wildner.Dq warm
247*a42bad2dSSascha Wildnerthen its contents are used without leaving the current channel.
24805ac2d0dSSascha WildnerTo start a scan without checking the cache
24905ac2d0dSSascha Wildner.Fn ieee80211_start_scan
25005ac2d0dSSascha Wildnercan be called; otherwise
25105ac2d0dSSascha Wildner.Fn ieee80211_check_scan
25205ac2d0dSSascha Wildnercan be used to first check the scan cache, kicking off a scan if
25305ac2d0dSSascha Wildnerthe cache contents are out of date.
25405ac2d0dSSascha WildnerThere is also
25505ac2d0dSSascha Wildner.Fn ieee80211_check_scan_current
25605ac2d0dSSascha Wildnerwhich is a shorthand for using previously set scan parameters for
25705ac2d0dSSascha Wildnerchecking the scan cache and then scanning.
25805ac2d0dSSascha Wildner.Pp
25905ac2d0dSSascha WildnerBackground scanning is done using
26005ac2d0dSSascha Wildner.Fn ieee80211_bg_scan
26105ac2d0dSSascha Wildnerin a co-routine fashion.
26205ac2d0dSSascha WildnerThe first call to this routine will start a background scan that
26305ac2d0dSSascha Wildnerruns for a limited period of time before returning to the BSS channel.
26405ac2d0dSSascha WildnerSubsequent calls advance through the scan set until all channels are
26505ac2d0dSSascha Wildnervisited.
26605ac2d0dSSascha WildnerTypically these later calls are timed to allow receipt of
26705ac2d0dSSascha Wildnerframes buffered by an access point for the station.
26805ac2d0dSSascha Wildner.Pp
26905ac2d0dSSascha WildnerA scan operation can be canceled using
27005ac2d0dSSascha Wildner.Fn ieee80211_cancel_scan
27105ac2d0dSSascha Wildnerif it was initiated by the specified vap, or
272e354d347SSascha Wildner.Fn ieee80211_cancel_anyscan
27305ac2d0dSSascha Wildnerto force termination regardless which vap started it.
27405ac2d0dSSascha WildnerThese requests are mostly used by
27505ac2d0dSSascha Wildner.Nm net80211
27605ac2d0dSSascha Wildnerin the transmit path to cancel background scans when frames are to be sent.
27705ac2d0dSSascha WildnerDrivers should not need to use these calls (or most of the calls described
27805ac2d0dSSascha Wildneron this page).
27905ac2d0dSSascha Wildner.Pp
28005ac2d0dSSascha WildnerThe
28105ac2d0dSSascha Wildner.Fn ieee80211_scan_next
28205ac2d0dSSascha Wildnerand
28305ac2d0dSSascha Wildner.Fn ieee80211_scan_done
28405ac2d0dSSascha Wildnerroutines do explicit iteration through the scan set and should
28505ac2d0dSSascha Wildnernot normally be used by drivers.
28605ac2d0dSSascha Wildner.Fn ieee80211_probe_curchan
28705ac2d0dSSascha Wildnerhandles the work of transmitting ProbeRequest frames when visiting
28805ac2d0dSSascha Wildnera channel during an active scan.
28905ac2d0dSSascha WildnerWhen the channel attributes are marked with
29005ac2d0dSSascha Wildner.Dv IEEE80211_CHAN_PASSIVE
29105ac2d0dSSascha Wildnerthis function will arrange that before any frame is transmitted 802.11
29205ac2d0dSSascha Wildnertraffic is first received (in order to comply with regulatory constraints).
29305ac2d0dSSascha Wildner.Pp
29405ac2d0dSSascha WildnerMin/max dwell time parameters are used to constrain time spent visiting
29505ac2d0dSSascha Wildnera channel.
29605ac2d0dSSascha WildnerThe maximum dwell time constrains the time spent listening for traffic.
29705ac2d0dSSascha WildnerThe minimum dwell time is used to reduce this time--when it is reached
29805ac2d0dSSascha Wildnerand one or more frames have been received then an immediate channel
29905ac2d0dSSascha Wildnerchange will be done.
30005ac2d0dSSascha WildnerDrivers can override this behaviour through the
30105ac2d0dSSascha Wildner.Vt iv_scan_mindwell
30205ac2d0dSSascha Wildnermethod.
30305ac2d0dSSascha Wildner.Sh SCAN CACHE MANAGEMENT
30405ac2d0dSSascha WildnerThe scan cache contents are managed by the scan policy module and
30505ac2d0dSSascha Wildnerare opaque outside this module.
30605ac2d0dSSascha WildnerThe
30705ac2d0dSSascha Wildner.Nm net80211
30805ac2d0dSSascha Wildnerscan framework defines API's for interacting.
30905ac2d0dSSascha WildnerThe validity of the scan cache contents are controlled by
31005ac2d0dSSascha Wildner.Vt iv_scanvalid
31105ac2d0dSSascha Wildnerwhich is exported to user space through the
31205ac2d0dSSascha Wildner.Dv IEEE80211_SCAN_VALID
31305ac2d0dSSascha Wildnerrequest.
31405ac2d0dSSascha Wildner.Pp
31505ac2d0dSSascha WildnerThe cache contents can be explicitly flushed with
31605ac2d0dSSascha Wildner.Fn ieee80211_scan_flush
31705ac2d0dSSascha Wildneror by setting the
31805ac2d0dSSascha Wildner.Dv IEEE80211_SCAN_FLUSH
31905ac2d0dSSascha Wildnerflag when starting a scan operation.
32005ac2d0dSSascha Wildner.Pp
32105ac2d0dSSascha WildnerScan cache entries are created with the
32205ac2d0dSSascha Wildner.Fn ieee80211_add_scan
32305ac2d0dSSascha Wildnerroutine; usually on receipt of Beacon or ProbeResponse frames.
32405ac2d0dSSascha WildnerExisting entries are typically updated based on the latest information
32505ac2d0dSSascha Wildnerthough some information such as RSSI and noise floor readings may be
32605ac2d0dSSascha Wildnercombined to present an average.
32705ac2d0dSSascha Wildner.Pp
32805ac2d0dSSascha WildnerThe cache contents is aged through
32905ac2d0dSSascha Wildner.Fn ieee80211_scan_timeout
33005ac2d0dSSascha Wildnercalls.
33105ac2d0dSSascha WildnerTypically these happen together with other station table activity; every
33205ac2d0dSSascha Wildner.Dv IEEE80211_INACT_WAIT
33305ac2d0dSSascha Wildnerseconds (default 15).
33405ac2d0dSSascha Wildner.Pp
33505ac2d0dSSascha WildnerIndividual cache entries are marked usable with
33605ac2d0dSSascha Wildner.Fn ieee80211_scan_assoc_success
33705ac2d0dSSascha Wildnerand faulty with
33805ac2d0dSSascha Wildner.Fn ieee80211_scan_assoc_fail
33905ac2d0dSSascha Wildnerwith the latter taking an argument to identify if there was no response
34005ac2d0dSSascha Wildnerto Authentication/Association requests or if a negative response was
34105ac2d0dSSascha Wildnerreceived (which might hasten cache eviction or blacklist the entry).
34205ac2d0dSSascha Wildner.Pp
34305ac2d0dSSascha WildnerThe cache contents can be viewed using the
34405ac2d0dSSascha Wildner.Fn ieee80211_scan_iterate
34505ac2d0dSSascha Wildnercall.
34605ac2d0dSSascha WildnerCache entries are exported in a public format that is exported to user
34705ac2d0dSSascha Wildnerapplications through the
34805ac2d0dSSascha Wildner.Dv IEEE80211_SCAN_RESULTS
34905ac2d0dSSascha Wildnerrequest.
35005ac2d0dSSascha Wildner.Sh SEE ALSO
35105ac2d0dSSascha Wildner.Xr ioctl 2 ,
35205ac2d0dSSascha Wildner.Xr ieee80211 9 ,
35305ac2d0dSSascha Wildner.Xr ieee80211_proto 9
354