FreeBSD kernel WLAN code
|
#include <sys/cdefs.h>
#include "opt_wlan.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/proc.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/condvar.h>
#include <sys/socket.h>
#include <net/if.h>
#include <net/if_var.h>
#include <net/if_media.h>
#include <net/ethernet.h>
#include <net80211/ieee80211_var.h>
#include <net80211/ieee80211_scan_sw.h>
#include <net/bpf.h>
Go to the source code of this file.
Macros | |
#define | ROAM_RSSI_11A_DEFAULT 14 /* 11a bss */ |
#define | ROAM_RSSI_11B_DEFAULT 14 /* 11b bss */ |
#define | ROAM_RSSI_11BONLY_DEFAULT 14 /* 11b-only bss */ |
#define | ROAM_RATE_11A_DEFAULT 2*12 /* 11a bss */ |
#define | ROAM_RATE_11B_DEFAULT 2*5 /* 11b bss */ |
#define | ROAM_RATE_11BONLY_DEFAULT 2*1 /* 11b-only bss */ |
#define | ROAM_RATE_HALF_DEFAULT 2*6 /* half-width 11a/g bss */ |
#define | ROAM_RATE_QUARTER_DEFAULT 2*3 /* quarter-width 11a/g bss */ |
#define | ROAM_MCS_11N_DEFAULT (1 | IEEE80211_RATE_MCS) /* 11n bss */ |
#define | ROAM_MCS_11AC_DEFAULT (1 | IEEE80211_RATE_MCS) /* 11ac bss; XXX not used yet */ |
Variables | |
static const struct ieee80211_roamparam | defroam [IEEE80211_MODE_MAX] |
static const char * | scan_modnames [IEEE80211_OPMODE_MAX] |
static const struct ieee80211_scanner * | scanners [IEEE80211_OPMODE_MAX] |
#define ROAM_MCS_11AC_DEFAULT (1 | IEEE80211_RATE_MCS) /* 11ac bss; XXX not used yet */ |
Definition at line 73 of file ieee80211_scan.c.
#define ROAM_MCS_11N_DEFAULT (1 | IEEE80211_RATE_MCS) /* 11n bss */ |
Definition at line 72 of file ieee80211_scan.c.
#define ROAM_RATE_11A_DEFAULT 2*12 /* 11a bss */ |
Definition at line 67 of file ieee80211_scan.c.
#define ROAM_RATE_11B_DEFAULT 2*5 /* 11b bss */ |
Definition at line 68 of file ieee80211_scan.c.
#define ROAM_RATE_11BONLY_DEFAULT 2*1 /* 11b-only bss */ |
Definition at line 69 of file ieee80211_scan.c.
#define ROAM_RATE_HALF_DEFAULT 2*6 /* half-width 11a/g bss */ |
Definition at line 70 of file ieee80211_scan.c.
#define ROAM_RATE_QUARTER_DEFAULT 2*3 /* quarter-width 11a/g bss */ |
Definition at line 71 of file ieee80211_scan.c.
#define ROAM_RSSI_11A_DEFAULT 14 /* 11a bss */ |
Definition at line 63 of file ieee80211_scan.c.
#define ROAM_RSSI_11B_DEFAULT 14 /* 11b bss */ |
Definition at line 64 of file ieee80211_scan.c.
#define ROAM_RSSI_11BONLY_DEFAULT 14 /* 11b-only bss */ |
Definition at line 65 of file ieee80211_scan.c.
__FBSDID | ( | "$FreeBSD$" | ) |
void ieee80211_add_scan | ( | struct ieee80211vap * | vap, |
struct ieee80211_channel * | curchan, | ||
const struct ieee80211_scanparams * | sp, | ||
const struct ieee80211_frame * | wh, | ||
int | subtype, | ||
int | rssi, | ||
int | noise | ||
) |
Definition at line 581 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, ieee80211vap::iv_ic, and ieee80211_scan_methods::sc_add_scan.
Referenced by adhoc_recv_mgmt(), hostap_recv_mgmt(), mesh_recv_mgmt(), and sta_recv_mgmt().
int ieee80211_bg_scan | ( | struct ieee80211vap * | vap, |
int | flags | ||
) |
Definition at line 425 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, IEEE80211_DPRINTF, IEEE80211_MSG_SCAN, ieee80211_scanner_get(), ieee80211vap::iv_ic, ieee80211vap::iv_opmode, and ieee80211_scan_methods::sc_bg_scan.
Referenced by sta_recv_mgmt(), and sta_roam_check().
void ieee80211_cancel_anyscan | ( | struct ieee80211vap * | vap | ) |
Definition at line 467 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, ieee80211vap::iv_ic, and ieee80211_scan_methods::sc_cancel_anyscan.
Referenced by ieee80211_start_pkt().
void ieee80211_cancel_scan | ( | struct ieee80211vap * | vap | ) |
Definition at line 453 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, ieee80211vap::iv_ic, and ieee80211_scan_methods::sc_cancel_scan.
Referenced by adhoc_newstate(), hostap_newstate(), ieee80211_ioctl_set80211(), ieee80211_new_state_locked(), mesh_newstate(), sta_newstate(), and wds_newstate().
int ieee80211_check_scan | ( | struct ieee80211vap * | vap, |
int | flags, | ||
u_int | duration, | ||
u_int | mindwell, | ||
u_int | maxdwell, | ||
u_int | nssid, | ||
const struct ieee80211_scan_ssid | ssids[] | ||
) |
Definition at line 354 of file ieee80211_scan.c.
References ieee80211com::ic_scan, ieee80211com::ic_scan_methods, IEEE80211_DPRINTF, IEEE80211_LOCK, IEEE80211_MSG_SCAN, IEEE80211_SCAN_ACTIVE, IEEE80211_SCAN_FLUSH, IEEE80211_SCAN_NOJOIN, IEEE80211_SCAN_NOPICK, IEEE80211_SCAN_ONCE, IEEE80211_SCAN_PICK1ST, ieee80211_scan_update_locked(), ieee80211_scanner_get(), IEEE80211_UNLOCK, ieee80211vap::iv_ic, ieee80211vap::iv_opmode, ieee80211_scan_methods::sc_check_scan, and ieee80211_scan_state::ss_ops.
Referenced by adhoc_newstate(), hostap_newstate(), ieee80211_check_scan_current(), ieee80211_scanreq(), mesh_newstate(), and sta_newstate().
int ieee80211_check_scan_current | ( | struct ieee80211vap * | vap | ) |
Definition at line 412 of file ieee80211_scan.c.
References ieee80211_check_scan(), IEEE80211_SCAN_ACTIVE, IEEE80211_SCAN_FOREVER, ieee80211vap::iv_des_nssid, and ieee80211vap::iv_des_ssid.
Referenced by adhoc_newstate(), hostap_newstate(), mesh_newstate(), sta_authretry(), sta_newstate(), and wds_newstate().
void ieee80211_probe_curchan | ( | struct ieee80211vap * | vap, |
int | force | ||
) |
Definition at line 517 of file ieee80211_scan.c.
References ieee80211com::ic_curchan, ieee80211_channel::ic_flags, ieee80211com::ic_flags_ext, ieee80211com::ic_scan_methods, IEEE80211_CHAN_PASSIVE, IEEE80211_FEXT_PROBECHAN, ieee80211vap::iv_ic, and ieee80211_scan_methods::sc_scan_probe_curchan.
Referenced by adhoc_recv_mgmt(), hostap_recv_mgmt(), mesh_recv_mgmt(), scan_curchan(), and sta_recv_mgmt().
void ieee80211_scan_assoc_fail | ( | struct ieee80211vap * | vap, |
const uint8_t | mac[], | ||
int | reason | ||
) |
Definition at line 625 of file ieee80211_scan.c.
References ieee80211com::ic_scan, IEEE80211_MSG_SCAN, IEEE80211_NOTE_MAC, ieee80211vap::iv_ic, mac, ieee80211_scanner::scan_assoc_fail, and ieee80211_scan_state::ss_ops.
Referenced by sta_authretry(), and sta_newstate().
void ieee80211_scan_assoc_success | ( | struct ieee80211vap * | vap, |
const uint8_t | mac[] | ||
) |
Definition at line 610 of file ieee80211_scan.c.
References ieee80211com::ic_scan, IEEE80211_MSG_SCAN, IEEE80211_NOTE_MAC, ieee80211vap::iv_ic, mac, ieee80211_scanner::scan_assoc_success, and ieee80211_scan_state::ss_ops.
Referenced by sta_newstate().
void ieee80211_scan_attach | ( | struct ieee80211com * | ic | ) |
Definition at line 76 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, ieee80211_swscan_attach(), and ieee80211_scan_methods::sc_attach.
Referenced by ieee80211_ifattach().
void ieee80211_scan_copy_ssid | ( | struct ieee80211vap * | vap, |
struct ieee80211_scan_state * | ss, | ||
int | nssid, | ||
const struct ieee80211_scan_ssid | ssids[] | ||
) |
Definition at line 311 of file ieee80211_scan.c.
References IEEE80211_DPRINTF, IEEE80211_MSG_SCAN, IEEE80211_SCAN_MAX_SSID, ieee80211_scan_state::ss_nssid, and ieee80211_scan_state::ss_ssid.
Referenced by ieee80211_swscan_check_scan(), and ieee80211_swscan_start_scan_locked().
void ieee80211_scan_detach | ( | struct ieee80211com * | ic | ) |
Definition at line 89 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, and ieee80211_scan_methods::sc_detach.
Referenced by ieee80211_ifdetach().
void ieee80211_scan_done | ( | struct ieee80211vap * | vap | ) |
Definition at line 493 of file ieee80211_scan.c.
References ieee80211com::ic_scan, ieee80211com::ic_scan_methods, IEEE80211_DPRINTF, IEEE80211_LOCK, IEEE80211_MSG_SCAN, IEEE80211_UNLOCK, ieee80211vap::iv_ic, ieee80211_scan_methods::sc_scan_done, ieee80211_scan_state::ss_last, and ieee80211_scan_state::ss_next.
void ieee80211_scan_dump_channels | ( | const struct ieee80211_scan_state * | ss | ) |
Definition at line 281 of file ieee80211_scan.c.
References ieee80211_chan2ieee(), ieee80211_channel_type_char(), ieee80211_scan_state::ss_chans, ieee80211_scan_state::ss_ic, and ieee80211_scan_state::ss_next.
void ieee80211_scan_flush | ( | struct ieee80211vap * | vap | ) |
Definition at line 654 of file ieee80211_scan.c.
References ieee80211com::ic_scan, IEEE80211_DPRINTF, IEEE80211_MSG_SCAN, ieee80211vap::iv_ic, ieee80211_scanner::scan_flush, ieee80211_scan_state::ss_ops, and ieee80211_scan_state::ss_vap.
Referenced by ieee80211_ioctl_setchanlist(), ieee80211_newstate_cb(), and ieee80211_setregdomain().
void ieee80211_scan_iterate | ( | struct ieee80211vap * | vap, |
ieee80211_scan_iter_func * | f, | ||
void * | arg | ||
) |
Definition at line 641 of file ieee80211_scan.c.
References ieee80211com::ic_scan, ieee80211vap::iv_ic, ieee80211_scanner::scan_iterate, and ieee80211_scan_state::ss_ops.
Referenced by ieee80211_ioctl_getscanresults(), and setmlme_assoc_sta().
void ieee80211_scan_next | ( | struct ieee80211vap * | vap | ) |
Definition at line 480 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, ieee80211vap::iv_ic, and ieee80211_scan_methods::sc_scan_next.
struct ieee80211_channel * ieee80211_scan_pickchannel | ( | struct ieee80211com * | ic, |
int | flags | ||
) |
Definition at line 669 of file ieee80211_scan.c.
References ieee80211com::ic_scan, IEEE80211_DPRINTF, IEEE80211_LOCK_ASSERT, IEEE80211_MSG_SCAN, ieee80211vap::iv_opmode, ieee80211_scanner::scan_pickchan, ieee80211_scan_state::ss_ops, and ieee80211_scan_state::ss_vap.
Referenced by ieee80211_dfs_pickchannel().
void ieee80211_scan_timeout | ( | struct ieee80211com * | ic | ) |
Definition at line 598 of file ieee80211_scan.c.
References ieee80211com::ic_scan, ieee80211_scanner::scan_age, and ieee80211_scan_state::ss_ops.
Referenced by ieee80211_node_timeout().
void ieee80211_scan_update_locked | ( | struct ieee80211vap * | vap, |
const struct ieee80211_scanner * | scan | ||
) |
Definition at line 235 of file ieee80211_scan.c.
References ieee80211com::ic_scan, IEEE80211_DPRINTF, IEEE80211_LOCK_ASSERT, IEEE80211_MSG_SCAN, ieee80211_opmode_name, ieee80211vap::iv_ic, ieee80211vap::iv_ifp, ieee80211vap::iv_opmode, ieee80211_scanner::scan_attach, ieee80211_scanner::scan_detach, ieee80211_scan_state::ss_ops, and ieee80211_scan_state::ss_vap.
Referenced by ieee80211_check_scan(), ieee80211_swscan_bg_scan(), and ieee80211_swscan_start_scan_locked().
void ieee80211_scan_vattach | ( | struct ieee80211vap * | vap | ) |
Definition at line 130 of file ieee80211_scan.c.
References defroam, ieee80211com::ic_modecaps, ieee80211com::ic_scan_methods, IEEE80211_BGSCAN_IDLE_DEFAULT, IEEE80211_BGSCAN_INTVAL_DEFAULT, IEEE80211_MODE_AUTO, IEEE80211_MODE_MAX, IEEE80211_ROAMING_AUTO, IEEE80211_SCAN_VALID_DEFAULT, ieee80211vap::iv_bgscanidle, ieee80211vap::iv_bgscanintvl, ieee80211vap::iv_ic, ieee80211vap::iv_roaming, ieee80211vap::iv_roamparms, ieee80211vap::iv_scanvalid, and ieee80211_scan_methods::sc_vattach.
Referenced by ieee80211_vap_setup().
void ieee80211_scan_vdetach | ( | struct ieee80211vap * | vap | ) |
Definition at line 153 of file ieee80211_scan.c.
References ieee80211com::ic_scan, ieee80211com::ic_scan_methods, IEEE80211_LOCK, IEEE80211_UNLOCK, ieee80211vap::iv_ic, ieee80211_scan_methods::sc_vdetach, ieee80211_scanner::scan_detach, ieee80211_scan_state::ss_ops, and ieee80211_scan_state::ss_vap.
Referenced by ieee80211_vap_detach().
const struct ieee80211_scanner * ieee80211_scanner_get | ( | enum ieee80211_opmode | mode | ) |
Definition at line 188 of file ieee80211_scan.c.
References ieee80211_load_module(), IEEE80211_OPMODE_MAX, scan_modnames, and scanners.
Referenced by ieee80211_bg_scan(), ieee80211_check_scan(), and ieee80211_start_scan().
void ieee80211_scanner_register | ( | enum ieee80211_opmode | mode, |
const struct ieee80211_scanner * | scan | ||
) |
Definition at line 198 of file ieee80211_scan.c.
References IEEE80211_OPMODE_MAX, and scanners.
void ieee80211_scanner_unregister | ( | enum ieee80211_opmode | mode, |
const struct ieee80211_scanner * | scan | ||
) |
Definition at line 207 of file ieee80211_scan.c.
References IEEE80211_OPMODE_MAX, and scanners.
void ieee80211_scanner_unregister_all | ( | const struct ieee80211_scanner * | scan | ) |
Definition at line 217 of file ieee80211_scan.c.
References IEEE80211_OPMODE_MAX, and scanners.
int ieee80211_start_scan | ( | struct ieee80211vap * | vap, |
int | flags, | ||
u_int | duration, | ||
u_int | mindwell, | ||
u_int | maxdwell, | ||
u_int | nssid, | ||
const struct ieee80211_scan_ssid | ssids[] | ||
) |
Definition at line 329 of file ieee80211_scan.c.
References ieee80211com::ic_scan_methods, IEEE80211_DPRINTF, IEEE80211_MSG_SCAN, ieee80211_opmode_name, ieee80211_scanner_get(), ieee80211vap::iv_ic, ieee80211vap::iv_opmode, and ieee80211_scan_methods::sc_start_scan.
Referenced by ieee80211_ioctl_set80211(), and ieee80211_scanreq().
|
static |
Definition at line 101 of file ieee80211_scan.c.
Referenced by ieee80211_scan_vattach().
|
static |
Definition at line 176 of file ieee80211_scan.c.
Referenced by ieee80211_scanner_get().
|
static |
Definition at line 185 of file ieee80211_scan.c.
Referenced by ieee80211_scanner_get(), ieee80211_scanner_register(), ieee80211_scanner_unregister(), and ieee80211_scanner_unregister_all().