30#ifndef _NET80211_IEEE80211_VAR_H_
31#define _NET80211_IEEE80211_VAR_H_
37#if defined(__NetBSD__)
38#include <net80211/ieee80211_netbsd.h>
39#elif defined(__FreeBSD__)
41#elif defined(__linux__)
42#include <net80211/ieee80211_linux.h>
44#error "No support for your operating system!"
60#define IEEE80211_TXPOWER_MAX 100
61#define IEEE80211_TXPOWER_MIN 0
63#define IEEE80211_DTIM_DEFAULT 1
64#define IEEE80211_BINTVAL_DEFAULT 100
66#define IEEE80211_BMISS_MAX 2
67#define IEEE80211_HWBMISS_DEFAULT 7
69#define IEEE80211_BGSCAN_INTVAL_MIN 15
70#define IEEE80211_BGSCAN_INTVAL_DEFAULT (5*60)
72#define IEEE80211_BGSCAN_IDLE_MIN 100
73#define IEEE80211_BGSCAN_IDLE_DEFAULT 250
75#define IEEE80211_SCAN_VALID_MIN 10
76#define IEEE80211_SCAN_VALID_DEFAULT 60
78#define IEEE80211_PS_SLEEP 0x1
79#define IEEE80211_PS_MAX_QUEUE 50
81#define IEEE80211_FIXED_RATE_NONE 0xff
82#define IEEE80211_TXMAX_DEFAULT 6
84#define IEEE80211_RTS_DEFAULT IEEE80211_RTS_MAX
85#define IEEE80211_FRAG_DEFAULT IEEE80211_FRAG_MAX
87#define IEEE80211_MS_TO_TU(x) (((x) * 1000) / 1024)
88#define IEEE80211_TU_TO_MS(x) (((x) * 1024) / 1000)
90#define IEEE80211_TU_TO_TICKS(x)(((uint64_t)(x) * 1024 * hz) / (1000 * 1000))
98#define IEEE80211_CONF_VHT(ic) \
99 ((ic)->ic_flags_ext & IEEE80211_FEXT_VHT)
101#define IEEE80211_CONF_SEQNO_OFFLOAD(ic) \
102 ((ic)->ic_flags_ext & IEEE80211_FEXT_SEQNO_OFFLOAD)
103#define IEEE80211_CONF_FRAG_OFFLOAD(ic) \
104 ((ic)->ic_flags_ext & IEEE80211_FEXT_FRAG_OFFLOAD)
135struct net80211dump_methods;
263 const char [IFNAMSIZ], int,
284 u_int8_t *quiet_elm);
349 const uint8_t *frm,
const uint8_t *efrm);
351 int category,
int action,
void *);
358 int dialogtoken,
int baparamset,
362 int status,
int baparamset,
int batimeout);
373 int batimeout,
int baseqctl);
388struct ieee80211_rx_histogram;
389struct ieee80211_tx_histogram;
570 const struct sockaddr *,
struct route *);
612#define IEEE80211_ADDR_EQ(a1,a2) (memcmp(a1,a2,IEEE80211_ADDR_LEN) == 0)
613#define IEEE80211_ADDR_COPY(dst,src) memcpy(dst,src,IEEE80211_ADDR_LEN)
616#define IEEE80211_F_TURBOP 0x00000001
617#define IEEE80211_F_COMP 0x00000002
618#define IEEE80211_F_FF 0x00000004
619#define IEEE80211_F_BURST 0x00000008
621#define IEEE80211_F_PRIVACY 0x00000010
622#define IEEE80211_F_PUREG 0x00000020
623#define IEEE80211_F_SCAN 0x00000080
626#define IEEE80211_F_SHSLOT 0x00000400
627#define IEEE80211_F_PMGTON 0x00000800
628#define IEEE80211_F_DESBSSID 0x00001000
629#define IEEE80211_F_WME 0x00002000
630#define IEEE80211_F_BGSCAN 0x00004000
631#define IEEE80211_F_SWRETRY 0x00008000
633#define IEEE80211_F_SHPREAMBLE 0x00040000
634#define IEEE80211_F_DATAPAD 0x00080000
635#define IEEE80211_F_USEPROT 0x00100000
636#define IEEE80211_F_USEBARKER 0x00200000
637#define IEEE80211_F_CSAPENDING 0x00400000
638#define IEEE80211_F_WPA1 0x00800000
639#define IEEE80211_F_WPA2 0x01000000
640#define IEEE80211_F_WPA 0x01800000
641#define IEEE80211_F_DROPUNENC 0x02000000
642#define IEEE80211_F_COUNTERM 0x04000000
643#define IEEE80211_F_HIDESSID 0x08000000
644#define IEEE80211_F_NOBRIDGE 0x10000000
645#define IEEE80211_F_PCF 0x20000000
646#define IEEE80211_F_DOTH 0x40000000
647#define IEEE80211_F_DWDS 0x80000000
649#define IEEE80211_F_BITS \
650 "\20\1TURBOP\2COMP\3FF\4BURST\5PRIVACY\6PUREG\10SCAN" \
651 "\13SHSLOT\14PMGTON\15DESBSSID\16WME\17BGSCAN\20SWRETRY" \
652 "\23SHPREAMBLE\24DATAPAD\25USEPROT\26USERBARKER\27CSAPENDING" \
653 "\30WPA1\31WPA2\32DROPUNENC\33COUNTERM\34HIDESSID\35NOBRIDG\36PCF" \
657#define IEEE80211_F_ATHEROS \
658 (IEEE80211_F_FF | IEEE80211_F_COMP | IEEE80211_F_TURBOP)
660#define IEEE80211_ATH_CAP(vap, ni, bit) \
661 ((vap)->iv_flags & (ni)->ni_ath_flags & (bit))
664#define IEEE80211_FEXT_INACT 0x00000002
665#define IEEE80211_FEXT_SCANWAIT 0x00000004
667#define IEEE80211_FEXT_BGSCAN 0x00000008
668#define IEEE80211_FEXT_WPS 0x00000010
669#define IEEE80211_FEXT_TSN 0x00000020
670#define IEEE80211_FEXT_SCANREQ 0x00000040
671#define IEEE80211_FEXT_RESUME 0x00000080
672#define IEEE80211_FEXT_4ADDR 0x00000100
673#define IEEE80211_FEXT_NONERP_PR 0x00000200
674#define IEEE80211_FEXT_SWBMISS 0x00000400
675#define IEEE80211_FEXT_DFS 0x00000800
676#define IEEE80211_FEXT_DOTD 0x00001000
677#define IEEE80211_FEXT_STATEWAIT 0x00002000
678#define IEEE80211_FEXT_REINIT 0x00004000
679#define IEEE80211_FEXT_BPF 0x00008000
681#define IEEE80211_FEXT_WDSLEGACY 0x00010000
682#define IEEE80211_FEXT_PROBECHAN 0x00020000
683#define IEEE80211_FEXT_UNIQMAC 0x00040000
684#define IEEE80211_FEXT_SCAN_OFFLOAD 0x00080000
685#define IEEE80211_FEXT_SEQNO_OFFLOAD 0x00100000
686#define IEEE80211_FEXT_FRAG_OFFLOAD 0x00200000
687#define IEEE80211_FEXT_VHT 0x00400000
688#define IEEE80211_FEXT_QUIET_IE 0x00800000
689#define IEEE80211_FEXT_UAPSD 0x01000000
691#define IEEE80211_FEXT_BITS \
692 "\20\2INACT\3SCANWAIT\4BGSCAN\5WPS\6TSN\7SCANREQ\10RESUME" \
693 "\0114ADDR\12NONEPR_PR\13SWBMISS\14DFS\15DOTD\16STATEWAIT\17REINIT" \
694 "\20BPF\21WDSLEGACY\22PROBECHAN\23UNIQMAC\24SCAN_OFFLOAD\25SEQNO_OFFLOAD" \
698#define IEEE80211_FHT_NONHT_PR 0x00000001
699#define IEEE80211_FHT_LDPC_TX 0x00010000
700#define IEEE80211_FHT_LDPC_RX 0x00020000
701#define IEEE80211_FHT_GF 0x00040000
702#define IEEE80211_FHT_HT 0x00080000
703#define IEEE80211_FHT_AMPDU_TX 0x00100000
704#define IEEE80211_FHT_AMPDU_RX 0x00200000
705#define IEEE80211_FHT_AMSDU_TX 0x00400000
706#define IEEE80211_FHT_AMSDU_RX 0x00800000
707#define IEEE80211_FHT_USEHT40 0x01000000
708#define IEEE80211_FHT_PUREN 0x02000000
709#define IEEE80211_FHT_SHORTGI20 0x04000000
710#define IEEE80211_FHT_SHORTGI40 0x08000000
711#define IEEE80211_FHT_HTCOMPAT 0x10000000
712#define IEEE80211_FHT_RIFS 0x20000000
713#define IEEE80211_FHT_STBC_TX 0x40000000
714#define IEEE80211_FHT_STBC_RX 0x80000000
716#define IEEE80211_FHT_BITS \
718 "\23GF\24HT\25AMPDU_TX\26AMPDU_TX" \
719 "\27AMSDU_TX\30AMSDU_RX\31USEHT40\32PUREN\33SHORTGI20\34SHORTGI40" \
720 "\35HTCOMPAT\36RIFS\37STBC_TX\40STBC_RX"
722#define IEEE80211_FVEN_BITS "\20"
724#define IEEE80211_FVHT_VHT 0x000000001
725#define IEEE80211_FVHT_USEVHT40 0x000000002
726#define IEEE80211_FVHT_USEVHT80 0x000000004
727#define IEEE80211_FVHT_USEVHT160 0x000000008
728#define IEEE80211_FVHT_USEVHT80P80 0x000000010
729#define IEEE80211_FVHT_MASK \
730 (IEEE80211_FVHT_VHT | IEEE80211_FVHT_USEVHT40 | \
731 IEEE80211_FVHT_USEVHT80 | IEEE80211_FVHT_USEVHT160 | \
732 IEEE80211_FVHT_USEVHT80P80)
733#define IEEE80211_VFHT_BITS \
734 "\20\1VHT\2VHT40\3VHT80\4VHT160\5VHT80P80"
736#define IEEE80211_COM_DETACHED 0x00000001
737#define IEEE80211_COM_REF_ADD 0x00000002
738#define IEEE80211_COM_REF 0xfffffffe
739#define IEEE80211_COM_REF_S 1
740#define IEEE80211_COM_REF_MAX (IEEE80211_COM_REF >> IEEE80211_COM_REF_S)
746 const
char name[IFNAMSIZ],
int unit,
750 ifm_change_cb_t, ifm_stat_cb_t,
776 uint8_t, uint16_t, int8_t, uint32_t, const uint8_t[],
int);
778 uint8_t, uint16_t, int8_t, uint32_t, const uint8_t[]);
780 uint8_t, int8_t, uint32_t);
784#define NET80211_CBW_FLAG_HT40 0x01
785#define NET80211_CBW_FLAG_VHT80 0x02
786#define NET80211_CBW_FLAG_VHT160 0x04
787#define NET80211_CBW_FLAG_VHT80P80 0x08
789 const uint8_t[],
int,
const uint8_t[],
int);
791 int *,
const uint8_t[],
int);
793 const uint8_t[],
int,
const uint8_t[],
int);
795 int freq,
int flags);
797 int ieee,
int flags);
806#define ieee80211_get_current_channel(_ic) ((_ic)->ic_curchan)
807#define ieee80211_get_home_channel(_ic) ((_ic)->ic_bsschan)
808#define ieee80211_get_vap_desired_channel(_iv) ((_iv)->iv_des_chan)
812 uint32_t tx_radiotap,
814 uint32_t rx_radiotap);
817 int tlen,
int n_tx_v, uint32_t tx_radiotap,
819 int rlen,
int n_rx_v, uint32_t rx_radiotap);
847 taskqueue_enqueue(ic->
ic_tq, task);
856 taskqueue_drain(ic->
ic_tq, task);
887 size = roundup(size,
sizeof(uint32_t));
899 size = roundup(size,
sizeof(uint32_t));
952static __inline uint16_t
978#define IEEE80211_MSG_11N 0x80000000
979#define IEEE80211_MSG_DEBUG 0x40000000
980#define IEEE80211_MSG_DUMPPKTS 0x20000000
981#define IEEE80211_MSG_CRYPTO 0x10000000
982#define IEEE80211_MSG_INPUT 0x08000000
983#define IEEE80211_MSG_XRATE 0x04000000
984#define IEEE80211_MSG_ELEMID 0x02000000
985#define IEEE80211_MSG_NODE 0x01000000
986#define IEEE80211_MSG_ASSOC 0x00800000
987#define IEEE80211_MSG_AUTH 0x00400000
988#define IEEE80211_MSG_SCAN 0x00200000
989#define IEEE80211_MSG_OUTPUT 0x00100000
990#define IEEE80211_MSG_STATE 0x00080000
991#define IEEE80211_MSG_POWER 0x00040000
992#define IEEE80211_MSG_HWMP 0x00020000
993#define IEEE80211_MSG_DOT1XSM 0x00010000
994#define IEEE80211_MSG_RADIUS 0x00008000
995#define IEEE80211_MSG_RADDUMP 0x00004000
996#define IEEE80211_MSG_MESH 0x00002000
997#define IEEE80211_MSG_WPA 0x00001000
998#define IEEE80211_MSG_ACL 0x00000800
999#define IEEE80211_MSG_WME 0x00000400
1000#define IEEE80211_MSG_SUPERG 0x00000200
1001#define IEEE80211_MSG_DOTH 0x00000100
1002#define IEEE80211_MSG_INACT 0x00000080
1003#define IEEE80211_MSG_ROAM 0x00000040
1004#define IEEE80211_MSG_RATECTL 0x00000020
1005#define IEEE80211_MSG_ACTION 0x00000010
1006#define IEEE80211_MSG_WDS 0x00000008
1007#define IEEE80211_MSG_IOCTL 0x00000004
1008#define IEEE80211_MSG_TDMA 0x00000002
1010#define IEEE80211_MSG_ANY 0xffffffff
1012#define IEEE80211_MSG_BITS \
1013 "\20\2TDMA\3IOCTL\4WDS\5ACTION\6RATECTL\7ROAM\10INACT\11DOTH\12SUPERG" \
1014 "\13WME\14ACL\15WPA\16RADKEYS\17RADDUMP\20RADIUS\21DOT1XSM\22HWMP" \
1015 "\23POWER\24STATE\25OUTPUT\26SCAN\27AUTH\30ASSOC\31NODE\32ELEMID" \
1016 "\33XRATE\34INPUT\35CRYPTO\36DUPMPKTS\37DEBUG\04011N"
1019#define _IEEE80211_MASKSHIFT(_v, _f) (((_v) & _f) >> _f##_S)
1020#define _IEEE80211_SHIFTMASK(_v, _f) (((_v) << _f##_S) & _f)
1022#ifdef IEEE80211_DEBUG
1023#define ieee80211_msg(_vap, _m) ((_vap)->iv_debug & (_m))
1024#define IEEE80211_DPRINTF(_vap, _m, _fmt, ...) do { \
1025 if (ieee80211_msg(_vap, _m)) \
1026 ieee80211_note(_vap, _fmt, __VA_ARGS__); \
1028#define IEEE80211_NOTE(_vap, _m, _ni, _fmt, ...) do { \
1029 if (ieee80211_msg(_vap, _m)) \
1030 ieee80211_note_mac(_vap, (_ni)->ni_macaddr, _fmt, __VA_ARGS__);\
1032#define IEEE80211_NOTE_MAC(_vap, _m, _mac, _fmt, ...) do { \
1033 if (ieee80211_msg(_vap, _m)) \
1034 ieee80211_note_mac(_vap, _mac, _fmt, __VA_ARGS__); \
1036#define IEEE80211_NOTE_FRAME(_vap, _m, _wh, _fmt, ...) do { \
1037 if (ieee80211_msg(_vap, _m)) \
1038 ieee80211_note_frame(_vap, _wh, _fmt, __VA_ARGS__); \
1040void ieee80211_note(
const struct ieee80211vap *,
const char *, ...);
1045#define ieee80211_msg_debug(_vap) \
1046 ((_vap)->iv_debug & IEEE80211_MSG_DEBUG)
1047#define ieee80211_msg_dumppkts(_vap) \
1048 ((_vap)->iv_debug & IEEE80211_MSG_DUMPPKTS)
1049#define ieee80211_msg_input(_vap) \
1050 ((_vap)->iv_debug & IEEE80211_MSG_INPUT)
1051#define ieee80211_msg_radius(_vap) \
1052 ((_vap)->iv_debug & IEEE80211_MSG_RADIUS)
1053#define ieee80211_msg_dumpradius(_vap) \
1054 ((_vap)->iv_debug & IEEE80211_MSG_RADDUMP)
1055#define ieee80211_msg_dumpradkeys(_vap) \
1056 ((_vap)->iv_debug & IEEE80211_MSG_RADKEYS)
1057#define ieee80211_msg_scan(_vap) \
1058 ((_vap)->iv_debug & IEEE80211_MSG_SCAN)
1059#define ieee80211_msg_assoc(_vap) \
1060 ((_vap)->iv_debug & IEEE80211_MSG_ASSOC)
1068#define IEEE80211_DISCARD(_vap, _m, _wh, _type, _fmt, ...) do { \
1069 if ((_vap)->iv_debug & (_m)) \
1070 ieee80211_discard_frame(_vap, _wh, _type, \
1071 "%s:%d: " _fmt, __func__, __LINE__, __VA_ARGS__); \
1073#define IEEE80211_DISCARD_IE(_vap, _m, _wh, _type, _fmt, ...) do { \
1074 if ((_vap)->iv_debug & (_m)) \
1075 ieee80211_discard_ie(_vap, _wh, _type, \
1076 "%s:%d: " _fmt, __func__, __LINE__, __VA_ARGS__); \
1078#define IEEE80211_DISCARD_MAC(_vap, _m, _mac, _type, _fmt, ...) do { \
1079 if ((_vap)->iv_debug & (_m)) \
1080 ieee80211_discard_mac(_vap, _mac, _type, \
1081 "%s:%d: " _fmt, __func__, __LINE__, __VA_ARGS__); \
1084void ieee80211_discard_frame(
const struct ieee80211vap *,
1085 const struct ieee80211_frame *,
const char *type,
const char *fmt, ...);
1087 const struct ieee80211_frame *,
const char *type,
const char *fmt, ...);
1090 const char *fmt, ...);
1092#define IEEE80211_DPRINTF(_vap, _m, _fmt, ...)
1093#define IEEE80211_NOTE(_vap, _m, _ni, _fmt, ...)
1094#define IEEE80211_NOTE_FRAME(_vap, _m, _wh, _fmt, ...)
1095#define IEEE80211_NOTE_MAC(_vap, _m, _mac, _fmt, ...)
1096#define ieee80211_msg_dumppkts(_vap) 0
1097#define ieee80211_msg(_vap, _m) 0
1099#define IEEE80211_DISCARD(_vap, _m, _wh, _type, _fmt, ...)
1100#define IEEE80211_DISCARD_IE(_vap, _m, _wh, _type, _fmt, ...)
1101#define IEEE80211_DISCARD_MAC(_vap, _m, _mac, _type, _fmt, ...)
#define IEEE80211_MODE_BYTES
#define IEEE80211_IS_CHAN_HT(_c)
#define IEEE80211_IS_CHAN_VHT40(_c)
#define IEEE80211_IS_CHAN_VHT80(_c)
#define IEEE80211_OPMODE_MAX
#define IEEE80211_CHAN_MAX
#define IEEE80211_IS_CHAN_VHT80P80(_c)
#define IEEE80211_IS_CHAN_HT40(_c)
#define IEEE80211_IS_CHAN_VHT(_c)
#define IEEE80211_CHAN_BYTES
#define IEEE80211_MODE_MAX
#define IEEE80211_IS_CHAN_VHT160(_c)
#define IEEE80211_WEP_NKID
#define IEEE80211_ADDR_LEN
#define IEEE80211_NWID_LEN
static const struct ieee80211_aclator mac
static __inline int ieee80211_anyhdrsize(const void *data)
static __inline int ieee80211_hdrsize(const void *data)
#define IEEE80211_SCAN_MAX_SSID
static __inline void ieee80211_key_update_begin(struct ieee80211vap *vap)
void ieee80211_radiotap_attach(struct ieee80211com *, struct ieee80211_radiotap_header *th, int tlen, uint32_t tx_radiotap, struct ieee80211_radiotap_header *rh, int rlen, uint32_t rx_radiotap)
static __inline int ieee80211_radiotap_active_vap(const struct ieee80211vap *vap)
void ieee80211_vap_detach(struct ieee80211vap *)
int ieee80211_add_channel_list_2ghz(struct ieee80211_channel[], int, int *, const uint8_t[], int, const uint8_t[], int)
int ieee80211_add_channel_cbw(struct ieee80211_channel[], int, int *, uint8_t, uint16_t, int8_t, uint32_t, const uint8_t[], int)
static __inline int ieee80211_anyhdrspace(struct ieee80211com *ic, const void *data)
void ieee80211_radiotap_detach(struct ieee80211com *)
int ieee80211_add_channel(struct ieee80211_channel[], int, int *, uint8_t, uint16_t, int8_t, uint32_t, const uint8_t[])
uint32_t ieee80211_mac_hash(const struct ieee80211com *, const uint8_t addr[IEEE80211_ADDR_LEN])
void ieee80211_announce(struct ieee80211com *)
int ieee80211_add_channel_list_5ghz(struct ieee80211_channel[], int, int *, const uint8_t[], int, const uint8_t[], int)
#define IEEE80211_FVHT_USEVHT80
void ieee80211_radiotap_vdetach(struct ieee80211vap *)
uint32_t ieee80211_get_channel_center_freq(const struct ieee80211_channel *)
void ieee80211_chan_init(struct ieee80211com *)
static __inline int ieee80211_hdrspace(struct ieee80211com *ic, const void *data)
int ieee80211_add_channels_default_2ghz(struct ieee80211_channel[], int, int *, const uint8_t[], int)
void ieee80211_radiotap_tx(struct ieee80211vap *, struct mbuf *)
static __inline void ieee80211_key_update_end(struct ieee80211vap *vap)
int ieee80211_chan2ieee(struct ieee80211com *, const struct ieee80211_channel *)
#define IEEE80211_FHT_USEHT40
uint32_t ieee80211_get_channel_center_freq1(const struct ieee80211_channel *)
const struct ieee80211_rateset * ieee80211_get_suprates(struct ieee80211com *ic, const struct ieee80211_channel *)
int ieee80211_mhz2ieee(u_int, u_int)
int void ieee80211_ifattach(struct ieee80211com *)
char ieee80211_channel_type_char(const struct ieee80211_channel *c)
static __inline int ieee80211_htchanflags(const struct ieee80211_channel *c)
void ieee80211_drain(struct ieee80211com *)
enum ieee80211_phymode ieee80211_chan2mode(const struct ieee80211_channel *)
#define IEEE80211_FVHT_USEVHT80P80
static __inline int ieee80211_radiotap_active(const struct ieee80211com *ic)
void ieee80211_radiotap_vattach(struct ieee80211vap *)
uint32_t ieee80211_get_channel_center_freq2(const struct ieee80211_channel *)
static __inline int ieee80211_vhtchanflags(const struct ieee80211_channel *c)
int ieee80211_media_change(struct ifnet *)
void ieee80211_com_iter_func(void *, struct ieee80211com *)
int ieee80211_ioctl(struct ifnet *, u_long, caddr_t)
#define IEEE80211_FVHT_USEVHT160
void ieee80211_radiotap_rx_all(struct ieee80211com *, struct mbuf *)
void(* ieee80211vap_attach)(struct ieee80211vap *)
#define IEEE80211_FVHT_USEVHT40
void ieee80211_iterate_coms(ieee80211_com_iter_func *, void *)
struct ieee80211_channel * ieee80211_find_channel_byieee(struct ieee80211com *, int ieee, int flags)
struct ieee80211_channel * ieee80211_find_channel(struct ieee80211com *, int freq, int flags)
int ieee80211_add_channel_ht40(struct ieee80211_channel[], int, int *, uint8_t, int8_t, uint32_t)
#define IEEE80211_FEXT_BPF
#define IEEE80211_FVHT_VHT
int ieee80211_rate2media(struct ieee80211com *, int, enum ieee80211_phymode)
const struct ieee80211_htrateset * ieee80211_get_suphtrates(struct ieee80211com *, const struct ieee80211_channel *)
int ieee80211_setmode(struct ieee80211com *, enum ieee80211_phymode)
struct ieee80211com * ieee80211_find_com(const char *name)
int ieee80211_vap_setup(struct ieee80211com *, struct ieee80211vap *, const char name[IFNAMSIZ], int unit, enum ieee80211_opmode opmode, int flags, const uint8_t bssid[IEEE80211_ADDR_LEN])
static __inline void ieee80211_runtask(struct ieee80211com *ic, struct task *task)
struct ieee80211_channel * ieee80211_lookup_channel_rxstatus(struct ieee80211vap *, const struct ieee80211_rx_stats *)
struct ieee80211com * ieee80211_find_vap(const uint8_t mac[IEEE80211_ADDR_LEN])
void ieee80211_media_status(struct ifnet *, struct ifmediareq *)
int ieee80211_media2rate(int)
#define IEEE80211_F_DATAPAD
static __inline uint16_t ieee80211_get_node_txpower(struct ieee80211_node *ni)
int ieee80211_vap_attach(struct ieee80211vap *, ifm_change_cb_t, ifm_stat_cb_t, const uint8_t macaddr[IEEE80211_ADDR_LEN])
void ieee80211_radiotap_rx(struct ieee80211vap *, struct mbuf *)
int ic_printf(struct ieee80211com *, const char *,...) __printflike(2
void ieee80211_announce_channels(struct ieee80211com *)
static __inline void ieee80211_beacon_notify(struct ieee80211vap *vap, int what)
void ieee80211_radiotap_chan_change(struct ieee80211com *)
void ieee80211_ifdetach(struct ieee80211com *)
MALLOC_DECLARE(M_80211_VAP)
void ieee80211_radiotap_attachv(struct ieee80211com *, struct ieee80211_radiotap_header *th, int tlen, int n_tx_v, uint32_t tx_radiotap, struct ieee80211_radiotap_header *rh, int rlen, int n_rx_v, uint32_t rx_radiotap)
u_int ieee80211_ieee2mhz(u_int, u_int)
static __inline void ieee80211_draintask(struct ieee80211com *ic, struct task *task)
struct ieee80211com * ni_ic
struct ieee80211_channel * ic_bsschan
ieee80211_com_lock_t ic_comlock
uint8_t ic_chan_avail[IEEE80211_CHAN_BYTES]
struct ieee80211_dfs_state ic_dfs
struct ieee80211_channel * ic_countryie_chan
struct ieee80211_channel * ic_csa_newchan
void(* ic_node_getsignal)(const struct ieee80211_node *, int8_t *, int8_t *)
void(* ic_node_age)(struct ieee80211_node *)
enum ieee80211_protmode ic_htprotmode
enum ieee80211_opmode ic_opmode
void(* ic_scan_mindwell)(struct ieee80211_scan_state *)
uint8_t ic_macaddr[IEEE80211_ADDR_LEN]
void(* ic_node_cleanup)(struct ieee80211_node *)
ieee80211_tx_lock_t ic_txlock
void(* ic_update_promisc)(struct ieee80211com *)
uint8_t ic_chan_scan[IEEE80211_CHAN_BYTES]
int(* ic_raw_xmit)(struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *)
struct task ic_restart_task
ieee80211vap_attach ic_vattach[IEEE80211_OPMODE_MAX]
void(* ic_tdma_update)(struct ieee80211_node *, const struct ieee80211_tdma_param *, int)
void(* ic_vap_delete)(struct ieee80211vap *)
int(* ic_node_init)(struct ieee80211_node *)
struct ieee80211_scan_methods * ic_scan_methods
void(* ic_update_mcast)(struct ieee80211com *)
int(* ic_addba_request)(struct ieee80211_node *, struct ieee80211_tx_ampdu *, int dialogtoken, int baparamset, int batimeout)
int(* ic_ioctl)(struct ieee80211com *, u_long, void *)
struct ieee80211_channel ic_channels[IEEE80211_CHAN_MAX]
void(* ic_node_drain)(struct ieee80211_node *)
struct ieee80211_rateset ic_sup_rates[IEEE80211_MODE_MAX]
int(* ic_transmit)(struct ieee80211com *, struct mbuf *)
void(* ic_scan_start)(struct ieee80211com *)
struct ieee80211_node_table ic_sta
int8_t(* ic_node_getrssi)(const struct ieee80211_node *)
struct task ic_parent_task
struct ieee80211_regdomain ic_regdomain
void(* ic_ampdu_rx_stop)(struct ieee80211_node *, struct ieee80211_rx_ampdu *)
ieee80211_ff_lock_t ic_fflock
struct ieee80211_ageq ic_stageq
void(* ic_node_free)(struct ieee80211_node *)
struct ieee80211_vht_mcs_info ic_vht_mcsinfo
struct task ic_mcast_task
int(* ic_ampdu_rx_start)(struct ieee80211_node *, struct ieee80211_rx_ampdu *, int baparamset, int batimeout, int baseqctl)
void(* ic_scan_curchan)(struct ieee80211_scan_state *, unsigned long)
TAILQ_HEAD(, ieee80211vap) ic_vaps
void(* ic_parent)(struct ieee80211com *)
void(* ic_bar_response)(struct ieee80211_node *, struct ieee80211_tx_ampdu *, int status)
int(* ic_set_quiet)(struct ieee80211_node *, u_int8_t *quiet_elm)
void(* ic_getradiocaps)(struct ieee80211com *, int, int *, struct ieee80211_channel[])
const struct ieee80211_rate_table * ic_rt
enum ieee80211_phytype ic_phytype
int(* ic_setregdomain)(struct ieee80211com *, struct ieee80211_regdomain *, int, struct ieee80211_channel[])
struct ieee80211_htrateset ic_sup_htrates
void(* ic_node_getmimoinfo)(const struct ieee80211_node *, struct ieee80211_mimo_info *)
uint8_t ic_chan_active[IEEE80211_CHAN_BYTES]
struct ieee80211_wme_state ic_wme
int(* ic_recv_action)(struct ieee80211_node *, const struct ieee80211_frame *, const uint8_t *frm, const uint8_t *efrm)
struct ieee80211_radiotap_header * ic_th
struct ieee80211_superg * ic_superg
int(* ic_send_mgmt)(struct ieee80211_node *, int, int)
uint8_t ic_modecaps[IEEE80211_MODE_BYTES]
struct ieee80211_channel * ic_prevchan
enum ieee80211_protmode ic_protmode
void(* ic_update_chw)(struct ieee80211com *)
int(* ic_ampdu_enable)(struct ieee80211_node *, struct ieee80211_tx_ampdu *)
struct task ic_bmiss_task
struct ieee80211_appie * ic_countryie
LIST_ENTRY(ieee80211com) ic_next
int(* ic_send_action)(struct ieee80211_node *, int category, int action, void *)
void(* ic_addba_stop)(struct ieee80211_node *, struct ieee80211_tx_ampdu *)
struct ieee80211_scan_state * ic_scan
void(* ic_addba_response_timeout)(struct ieee80211_node *, struct ieee80211_tx_ampdu *)
void(* ic_set_channel)(struct ieee80211com *)
void(* ic_scan_end)(struct ieee80211com *)
int(* ic_addba_response)(struct ieee80211_node *, struct ieee80211_tx_ampdu *, int status, int baparamset, int batimeout)
struct task ic_promisc_task
struct ieee80211_radiotap_header * ic_rh
const struct debugnet80211_methods * ic_debugnet_meth
struct ieee80211_channel * ic_curchan
void(* ic_newassoc)(struct ieee80211_node *, int)
void(* ic_updateslot)(struct ieee80211com *)
struct ieee80211_appie * iv_appie_assocreq
struct sysctl_oid * iv_oid
struct ieee80211com * iv_ic
struct task iv_swbmiss_task
void(* iv_update_beacon)(struct ieee80211vap *, int)
struct ieee80211_beacon_offsets iv_bcn_off
struct ieee80211_key iv_nw_keys[IEEE80211_WEP_NKID]
struct ieee80211_node * iv_bss
uint8_t iv_bmissthreshold
enum ieee80211_roamingmode iv_roaming
void(* iv_key_update_end)(struct ieee80211vap *)
enum ieee80211_opmode iv_opmode
struct ieee80211_channel * iv_des_chan
uint16_t iv_swbmiss_count
enum ieee80211_protmode iv_protmode
void(* iv_update_deftxkey)(struct ieee80211vap *, ieee80211_keyix deftxkey)
TAILQ_ENTRY(ieee80211vap) iv_next
uint16_t iv_fragthreshold
uint8_t iv_myaddr[IEEE80211_ADDR_LEN]
int(* iv_reset)(struct ieee80211vap *, u_long)
struct task iv_erp_protmode_task
void(* iv_node_ps)(struct ieee80211_node *, int)
struct ieee80211_stats iv_stats
uint8_t iv_nickname[IEEE80211_NWID_LEN]
struct ieee80211_appie * iv_appie_proberesp
void(* iv_recv_mgmt)(struct ieee80211_node *, struct mbuf *, int, const struct ieee80211_rx_stats *, int, int)
int(* iv_output)(struct ifnet *, struct mbuf *, const struct sockaddr *, struct route *)
struct ieee80211_appie * iv_appie_probereq
struct ieee80211_mesh_state * iv_mesh
ieee80211_keyix iv_def_txkey
int(* iv_set_tim)(struct ieee80211_node *, int)
u_int iv_scanreq_mindwell
const struct ieee80211_authenticator * iv_auth
struct sysctl_ctx_list * iv_sysctl
void(* iv_updateslot)(struct ieee80211vap *)
uint8_t iv_quiet_count_value
uint8_t iv_des_bssid[IEEE80211_ADDR_LEN]
struct ieee80211_tx_histogram * tx_histogram
enum ieee80211_state iv_state
int(* iv_key_alloc)(struct ieee80211vap *, struct ieee80211_key *, ieee80211_keyix *, ieee80211_keyix *)
uint16_t iv_ht40_sta_assoc
struct ieee80211_rx_histogram * rx_histogram
enum ieee80211_state iv_nstate
u_int iv_scanreq_maxdwell
void(* iv_opdetach)(struct ieee80211vap *)
uint16_t iv_scanreq_flags
u_int iv_ampdu_mintraffic[WME_NUM_AC]
void(* iv_erp_protmode_update)(struct ieee80211vap *)
struct ieee80211_txparam iv_txparms[IEEE80211_MODE_MAX]
struct task iv_preamble_task
void(* iv_key_update_begin)(struct ieee80211vap *)
struct ieee80211_appie * iv_appie_wpa
void(* iv_ht_protmode_update)(struct ieee80211vap *)
void(* iv_bmiss)(struct ieee80211vap *)
void(* iv_update_ps)(struct ieee80211vap *, int)
struct task iv_ht_protmode_task
struct ieee80211_appie * iv_appie_beacon
struct callout iv_swbmiss
int(* iv_key_set)(struct ieee80211vap *, const struct ieee80211_key *)
enum ieee80211_protmode iv_htprotmode
void(* iv_recv_ctl)(struct ieee80211_node *, struct mbuf *, int)
int(* iv_wme_update)(struct ieee80211vap *, const struct wmeParams *wme_params)
int(* iv_input)(struct ieee80211_node *, struct mbuf *, const struct ieee80211_rx_stats *, int, int)
struct ieee80211_vht_mcs_info iv_vht_mcsinfo
struct ieee80211_roamparam iv_roamparms[IEEE80211_MODE_MAX]
struct ieee80211_scan_ssid iv_scanreq_ssid[IEEE80211_SCAN_MAX_SSID]
const struct ieee80211_ratectl * iv_rate
struct ieee80211_tdma_state * iv_tdma
void(* iv_sta_ps)(struct ieee80211vap *, int)
uint16_t iv_quiet_duration
struct callout iv_mgtsend
struct bpf_if * iv_rawbpf
void(* iv_deliver_data)(struct ieee80211vap *, struct ieee80211_node *, struct mbuf *)
uint16_t iv_swbmiss_period
void(* iv_recv_pspoll)(struct ieee80211_node *, struct mbuf *)
struct ieee80211_scan_ssid iv_des_ssid[1]
int(* iv_key_delete)(struct ieee80211vap *, const struct ieee80211_key *)
u_int iv_scanreq_duration
struct task iv_nstate_task
struct ieee80211_appie * iv_appie_assocresp
void(* iv_preamble_update)(struct ieee80211vap *)
struct ieee80211_hwmp_state * iv_hwmp
int(* iv_newstate)(struct ieee80211vap *, enum ieee80211_state, int)
const struct ieee80211_aclator * iv_acl