FreeBSD kernel WLAN code
ieee80211_node.h File Reference
Include dependency graph for ieee80211_node.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ieee80211_ies
 
struct  ieee80211_node
 
struct  ieee80211_node_table
 

Macros

#define IEEE80211_INACT_WAIT   15 /* inactivity interval (secs) */
 
#define IEEE80211_INACT_INIT   (30/IEEE80211_INACT_WAIT) /* initial */
 
#define IEEE80211_INACT_AUTH   (180/IEEE80211_INACT_WAIT) /* associated but not authorized */
 
#define IEEE80211_INACT_RUN   (300/IEEE80211_INACT_WAIT) /* authorized */
 
#define IEEE80211_INACT_PROBE   (30/IEEE80211_INACT_WAIT) /* probe */
 
#define IEEE80211_INACT_SCAN   (300/IEEE80211_INACT_WAIT) /* scanned */
 
#define IEEE80211_TRANS_WAIT   2 /* mgt frame tx timer (secs) */
 
#define IEEE80211_NONERP_PRESENT_AGE   msecs_to_ticks(60*1000)
 
#define IEEE80211_NODE_HASHSIZE   32 /* NB: hash size must be pow2 */
 
#define IEEE80211_NODE_HASH(ic, addr)
 
#define IEEE80211_MESH_MLSTATE_BITS    "\20\1IDLE\2OPENSNT\2OPENRCV\3CONFIRMRCV\4ESTABLISHED\5HOLDING"
 
#define IEEE80211_NODE_AUTH   0x000001 /* authorized for data */
 
#define IEEE80211_NODE_QOS   0x000002 /* QoS enabled */
 
#define IEEE80211_NODE_ERP   0x000004 /* ERP enabled */
 
#define IEEE80211_NODE_PWR_MGT   0x000010 /* power save mode enabled */
 
#define IEEE80211_NODE_AREF   0x000020 /* authentication ref held */
 
#define IEEE80211_NODE_HT   0x000040 /* HT enabled */
 
#define IEEE80211_NODE_HTCOMPAT   0x000080 /* HT setup w/ vendor OUI's */
 
#define IEEE80211_NODE_WPS   0x000100 /* WPS association */
 
#define IEEE80211_NODE_TSN   0x000200 /* TSN association */
 
#define IEEE80211_NODE_AMPDU_RX   0x000400 /* AMPDU rx enabled */
 
#define IEEE80211_NODE_AMPDU_TX   0x000800 /* AMPDU tx enabled */
 
#define IEEE80211_NODE_MIMO_PS   0x001000 /* MIMO power save enabled */
 
#define IEEE80211_NODE_MIMO_RTS   0x002000 /* send RTS in MIMO PS */
 
#define IEEE80211_NODE_RIFS   0x004000 /* RIFS enabled */
 
#define IEEE80211_NODE_SGI20   0x008000 /* Short GI in HT20 enabled */
 
#define IEEE80211_NODE_SGI40   0x010000 /* Short GI in HT40 enabled */
 
#define IEEE80211_NODE_ASSOCID   0x020000 /* xmit requires associd */
 
#define IEEE80211_NODE_AMSDU_RX   0x040000 /* AMSDU rx enabled */
 
#define IEEE80211_NODE_AMSDU_TX   0x080000 /* AMSDU tx enabled */
 
#define IEEE80211_NODE_VHT   0x100000 /* VHT enabled */
 
#define IEEE80211_NODE_LDPC   0x200000 /* LDPC enabled */
 
#define IEEE80211_NODE_UAPSD   0x400000 /* U-APSD power save enabled */
 
#define IEEE80211_NODE_TURBOP   0x0001 /* Turbo prime enable */
 
#define IEEE80211_NODE_COMP   0x0002 /* Compresssion enable */
 
#define IEEE80211_NODE_FF   0x0004 /* Fast Frame capable */
 
#define IEEE80211_NODE_XR   0x0008 /* Atheros WME enable */
 
#define IEEE80211_NODE_AR   0x0010 /* AR capable */
 
#define IEEE80211_NODE_BOOST   0x0080 /* Dynamic Turbo boosted */
 
#define IEEE80211_NODE_ATH   (IEEE80211_NODE_FF | IEEE80211_NODE_TURBOP)
 
#define IEEE80211_NODE_AMPDU    (IEEE80211_NODE_AMPDU_RX | IEEE80211_NODE_AMPDU_TX)
 
#define IEEE80211_NODE_AMSDU    (IEEE80211_NODE_AMSDU_RX | IEEE80211_NODE_AMSDU_TX)
 
#define IEEE80211_NODE_HT_ALL
 
#define IEEE80211_NODE_BITS
 
#define IEEE80211_NODE_AID(ni)   IEEE80211_AID(ni->ni_associd)
 
#define IEEE80211_NODE_STAT(ni, stat)   (ni->ni_stats.ns_##stat++)
 
#define IEEE80211_NODE_STAT_ADD(ni, stat, v)   (ni->ni_stats.ns_##stat += v)
 
#define IEEE80211_NODE_STAT_SET(ni, stat, v)   (ni->ni_stats.ns_##stat = v)
 
#define IEEE80211_RSSI_LPF_LEN   10
 
#define IEEE80211_RSSI_DUMMY_MARKER   127
 
#define IEEE80211_RSSI_EP_MULTIPLIER   (1<<7)
 
#define IEEE80211_RSSI_IN(x)   ((x) * IEEE80211_RSSI_EP_MULTIPLIER)
 
#define _IEEE80211_RSSI_LPF(x, y, len)    (((x) != IEEE80211_RSSI_DUMMY_MARKER) ? (((x) * ((len) - 1) + (y)) / (len)) : (y))
 
#define IEEE80211_RSSI_LPF(x, y)
 
#define IEEE80211_RSSI_EP_RND(x, mul)    ((((x) % (mul)) >= ((mul)/2)) ? ((x) + ((mul) - 1)) / (mul) : (x)/(mul))
 
#define IEEE80211_RSSI_GET(x)    IEEE80211_RSSI_EP_RND(x, IEEE80211_RSSI_EP_MULTIPLIER)
 
#define ieee80211_ies_setie(_ies, _ie, _off)
 

Typedefs

typedef void ieee80211_iter_func(void *, struct ieee80211_node *)
 

Enumerations

enum  ieee80211_mesh_mlstate {
  IEEE80211_NODE_MESH_IDLE = 0 , IEEE80211_NODE_MESH_OPENSNT = 1 , IEEE80211_NODE_MESH_OPENRCV = 2 , IEEE80211_NODE_MESH_CONFIRMRCV = 3 ,
  IEEE80211_NODE_MESH_ESTABLISHED = 4 , IEEE80211_NODE_MESH_HOLDING = 5
}
 

Functions

 MALLOC_DECLARE (M_80211_NODE)
 
 MALLOC_DECLARE (M_80211_NODE_IE)
 
static __inline struct ieee80211_nodeieee80211_ref_node (struct ieee80211_node *ni)
 
static __inline void ieee80211_unref_node (struct ieee80211_node **ni)
 
void ieee80211_node_attach (struct ieee80211com *)
 
void ieee80211_node_lateattach (struct ieee80211com *)
 
void ieee80211_node_detach (struct ieee80211com *)
 
void ieee80211_node_vattach (struct ieee80211vap *)
 
void ieee80211_node_latevattach (struct ieee80211vap *)
 
void ieee80211_node_vdetach (struct ieee80211vap *)
 
static __inline int ieee80211_node_is_authorized (const struct ieee80211_node *ni)
 
void ieee80211_node_authorize (struct ieee80211_node *)
 
void ieee80211_node_unauthorize (struct ieee80211_node *)
 
void ieee80211_node_setuptxparms (struct ieee80211_node *)
 
void ieee80211_node_set_chan (struct ieee80211_node *, struct ieee80211_channel *)
 
void ieee80211_create_ibss (struct ieee80211vap *, struct ieee80211_channel *)
 
void ieee80211_reset_bss (struct ieee80211vap *)
 
void ieee80211_sync_curchan (struct ieee80211com *)
 
void ieee80211_setupcurchan (struct ieee80211com *, struct ieee80211_channel *)
 
void ieee80211_setcurchan (struct ieee80211com *, struct ieee80211_channel *)
 
void ieee80211_update_chw (struct ieee80211com *)
 
int ieee80211_ibss_merge_check (struct ieee80211_node *)
 
int ieee80211_ibss_node_check_new (struct ieee80211_node *ni, const struct ieee80211_scanparams *)
 
int ieee80211_ibss_merge (struct ieee80211_node *)
 
int ieee80211_sta_join (struct ieee80211vap *, struct ieee80211_channel *, const struct ieee80211_scan_entry *)
 
void ieee80211_sta_leave (struct ieee80211_node *)
 
void ieee80211_node_deauth (struct ieee80211_node *, int)
 
int ieee80211_ies_init (struct ieee80211_ies *, const uint8_t *, int)
 
void ieee80211_ies_cleanup (struct ieee80211_ies *)
 
void ieee80211_ies_expand (struct ieee80211_ies *)
 
struct ieee80211_nodeieee80211_alloc_node (struct ieee80211_node_table *, struct ieee80211vap *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
struct ieee80211_nodeieee80211_tmp_node (struct ieee80211vap *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
struct ieee80211_nodeieee80211_dup_bss (struct ieee80211vap *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
struct ieee80211_nodeieee80211_node_create_wds (struct ieee80211vap *, const uint8_t bssid[IEEE80211_ADDR_LEN], struct ieee80211_channel *)
 
void ieee80211_free_node (struct ieee80211_node *)
 
struct ieee80211_nodeieee80211_find_node_locked (struct ieee80211_node_table *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
struct ieee80211_nodeieee80211_find_node (struct ieee80211_node_table *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
struct ieee80211_nodeieee80211_find_vap_node_locked (struct ieee80211_node_table *, const struct ieee80211vap *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
struct ieee80211_nodeieee80211_find_vap_node (struct ieee80211_node_table *, const struct ieee80211vap *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
struct ieee80211_nodeieee80211_find_rxnode (struct ieee80211com *, const struct ieee80211_frame_min *)
 
struct ieee80211_nodeieee80211_find_rxnode_withkey (struct ieee80211com *, const struct ieee80211_frame_min *, uint16_t keyix)
 
struct ieee80211_nodeieee80211_find_txnode (struct ieee80211vap *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
int ieee80211_node_delucastkey (struct ieee80211_node *)
 
void ieee80211_node_timeout (void *arg)
 
int ieee80211_iterate_nodes_vap (struct ieee80211_node_table *, struct ieee80211vap *, ieee80211_iter_func *, void *)
 
void ieee80211_iterate_nodes (struct ieee80211_node_table *, ieee80211_iter_func *, void *)
 
void ieee80211_notify_erp_locked (struct ieee80211com *)
 
void ieee80211_dump_node (struct ieee80211_node_table *, struct ieee80211_node *)
 
void ieee80211_dump_nodes (struct ieee80211_node_table *)
 
struct ieee80211_nodeieee80211_fakeup_adhoc_node (struct ieee80211vap *, const uint8_t macaddr[IEEE80211_ADDR_LEN])
 
void ieee80211_init_neighbor (struct ieee80211_node *, const struct ieee80211_frame *, const struct ieee80211_scanparams *)
 
struct ieee80211_nodeieee80211_add_neighbor (struct ieee80211vap *, const struct ieee80211_frame *, const struct ieee80211_scanparams *)
 
void ieee80211_node_join (struct ieee80211_node *, int)
 
void ieee80211_node_leave (struct ieee80211_node *)
 
int8_t ieee80211_getrssi (struct ieee80211vap *)
 
void ieee80211_getsignal (struct ieee80211vap *, int8_t *, int8_t *)
 

Macro Definition Documentation

◆ _IEEE80211_RSSI_LPF

#define _IEEE80211_RSSI_LPF (   x,
  y,
  len 
)     (((x) != IEEE80211_RSSI_DUMMY_MARKER) ? (((x) * ((len) - 1) + (y)) / (len)) : (y))

Definition at line 311 of file ieee80211_node.h.

◆ ieee80211_ies_setie

#define ieee80211_ies_setie (   _ies,
  _ie,
  _off 
)
Value:
do { \
(_ies)._ie = (_ies).data + (_off); \
} while (0)

Definition at line 377 of file ieee80211_node.h.

◆ IEEE80211_INACT_AUTH

#define IEEE80211_INACT_AUTH   (180/IEEE80211_INACT_WAIT) /* associated but not authorized */

Definition at line 51 of file ieee80211_node.h.

◆ IEEE80211_INACT_INIT

#define IEEE80211_INACT_INIT   (30/IEEE80211_INACT_WAIT) /* initial */

Definition at line 50 of file ieee80211_node.h.

◆ IEEE80211_INACT_PROBE

#define IEEE80211_INACT_PROBE   (30/IEEE80211_INACT_WAIT) /* probe */

Definition at line 53 of file ieee80211_node.h.

◆ IEEE80211_INACT_RUN

#define IEEE80211_INACT_RUN   (300/IEEE80211_INACT_WAIT) /* authorized */

Definition at line 52 of file ieee80211_node.h.

◆ IEEE80211_INACT_SCAN

#define IEEE80211_INACT_SCAN   (300/IEEE80211_INACT_WAIT) /* scanned */

Definition at line 54 of file ieee80211_node.h.

◆ IEEE80211_INACT_WAIT

#define IEEE80211_INACT_WAIT   15 /* inactivity interval (secs) */

Definition at line 49 of file ieee80211_node.h.

◆ IEEE80211_MESH_MLSTATE_BITS

#define IEEE80211_MESH_MLSTATE_BITS    "\20\1IDLE\2OPENSNT\2OPENRCV\3CONFIRMRCV\4ESTABLISHED\5HOLDING"

Definition at line 110 of file ieee80211_node.h.

◆ IEEE80211_NODE_AID

#define IEEE80211_NODE_AID (   ni)    IEEE80211_AID(ni->ni_associd)

Definition at line 286 of file ieee80211_node.h.

◆ IEEE80211_NODE_AMPDU

#define IEEE80211_NODE_AMPDU    (IEEE80211_NODE_AMPDU_RX | IEEE80211_NODE_AMPDU_TX)

Definition at line 271 of file ieee80211_node.h.

◆ IEEE80211_NODE_AMPDU_RX

#define IEEE80211_NODE_AMPDU_RX   0x000400 /* AMPDU rx enabled */

Definition at line 137 of file ieee80211_node.h.

◆ IEEE80211_NODE_AMPDU_TX

#define IEEE80211_NODE_AMPDU_TX   0x000800 /* AMPDU tx enabled */

Definition at line 138 of file ieee80211_node.h.

◆ IEEE80211_NODE_AMSDU

#define IEEE80211_NODE_AMSDU    (IEEE80211_NODE_AMSDU_RX | IEEE80211_NODE_AMSDU_TX)

Definition at line 273 of file ieee80211_node.h.

◆ IEEE80211_NODE_AMSDU_RX

#define IEEE80211_NODE_AMSDU_RX   0x040000 /* AMSDU rx enabled */

Definition at line 145 of file ieee80211_node.h.

◆ IEEE80211_NODE_AMSDU_TX

#define IEEE80211_NODE_AMSDU_TX   0x080000 /* AMSDU tx enabled */

Definition at line 146 of file ieee80211_node.h.

◆ IEEE80211_NODE_AR

#define IEEE80211_NODE_AR   0x0010 /* AR capable */

Definition at line 160 of file ieee80211_node.h.

◆ IEEE80211_NODE_AREF

#define IEEE80211_NODE_AREF   0x000020 /* authentication ref held */

Definition at line 132 of file ieee80211_node.h.

◆ IEEE80211_NODE_ASSOCID

#define IEEE80211_NODE_ASSOCID   0x020000 /* xmit requires associd */

Definition at line 144 of file ieee80211_node.h.

◆ IEEE80211_NODE_ATH

#define IEEE80211_NODE_ATH   (IEEE80211_NODE_FF | IEEE80211_NODE_TURBOP)

Definition at line 270 of file ieee80211_node.h.

◆ IEEE80211_NODE_AUTH

#define IEEE80211_NODE_AUTH   0x000001 /* authorized for data */

Definition at line 127 of file ieee80211_node.h.

◆ IEEE80211_NODE_BITS

#define IEEE80211_NODE_BITS
Value:
"\20\1AUTH\2QOS\3ERP\5PWR_MGT\6AREF\7HT\10HTCOMPAT\11WPS\12TSN" \
"\13AMPDU_RX\14AMPDU_TX\15MIMO_PS\16MIMO_RTS\17RIFS\20SGI20\21SGI40" \
"\22ASSOCID"

Definition at line 281 of file ieee80211_node.h.

◆ IEEE80211_NODE_BOOST

#define IEEE80211_NODE_BOOST   0x0080 /* Dynamic Turbo boosted */

Definition at line 161 of file ieee80211_node.h.

◆ IEEE80211_NODE_COMP

#define IEEE80211_NODE_COMP   0x0002 /* Compresssion enable */

Definition at line 157 of file ieee80211_node.h.

◆ IEEE80211_NODE_ERP

#define IEEE80211_NODE_ERP   0x000004 /* ERP enabled */

Definition at line 129 of file ieee80211_node.h.

◆ IEEE80211_NODE_FF

#define IEEE80211_NODE_FF   0x0004 /* Fast Frame capable */

Definition at line 158 of file ieee80211_node.h.

◆ IEEE80211_NODE_HASH

#define IEEE80211_NODE_HASH (   ic,
  addr 
)
Value:
(((const uint8_t *)(addr))[IEEE80211_ADDR_LEN - 1] % \
#define IEEE80211_ADDR_LEN
Definition: ieee80211.h:37
#define IEEE80211_NODE_HASHSIZE

Definition at line 63 of file ieee80211_node.h.

◆ IEEE80211_NODE_HASHSIZE

#define IEEE80211_NODE_HASHSIZE   32 /* NB: hash size must be pow2 */

Definition at line 61 of file ieee80211_node.h.

◆ IEEE80211_NODE_HT

#define IEEE80211_NODE_HT   0x000040 /* HT enabled */

Definition at line 133 of file ieee80211_node.h.

◆ IEEE80211_NODE_HT_ALL

#define IEEE80211_NODE_HT_ALL
Value:
IEEE80211_NODE_AMPDU | IEEE80211_NODE_AMSDU | \
IEEE80211_NODE_MIMO_PS | IEEE80211_NODE_MIMO_RTS | \
IEEE80211_NODE_RIFS | IEEE80211_NODE_SGI20 | IEEE80211_NODE_SGI40)
#define IEEE80211_NODE_HTCOMPAT
#define IEEE80211_NODE_MIMO_RTS
#define IEEE80211_NODE_SGI40
#define IEEE80211_NODE_AMSDU
#define IEEE80211_NODE_SGI20
#define IEEE80211_NODE_HT

Definition at line 275 of file ieee80211_node.h.

◆ IEEE80211_NODE_HTCOMPAT

#define IEEE80211_NODE_HTCOMPAT   0x000080 /* HT setup w/ vendor OUI's */

Definition at line 134 of file ieee80211_node.h.

◆ IEEE80211_NODE_LDPC

#define IEEE80211_NODE_LDPC   0x200000 /* LDPC enabled */

Definition at line 148 of file ieee80211_node.h.

◆ IEEE80211_NODE_MIMO_PS

#define IEEE80211_NODE_MIMO_PS   0x001000 /* MIMO power save enabled */

Definition at line 139 of file ieee80211_node.h.

◆ IEEE80211_NODE_MIMO_RTS

#define IEEE80211_NODE_MIMO_RTS   0x002000 /* send RTS in MIMO PS */

Definition at line 140 of file ieee80211_node.h.

◆ IEEE80211_NODE_PWR_MGT

#define IEEE80211_NODE_PWR_MGT   0x000010 /* power save mode enabled */

Definition at line 131 of file ieee80211_node.h.

◆ IEEE80211_NODE_QOS

#define IEEE80211_NODE_QOS   0x000002 /* QoS enabled */

Definition at line 128 of file ieee80211_node.h.

◆ IEEE80211_NODE_RIFS

#define IEEE80211_NODE_RIFS   0x004000 /* RIFS enabled */

Definition at line 141 of file ieee80211_node.h.

◆ IEEE80211_NODE_SGI20

#define IEEE80211_NODE_SGI20   0x008000 /* Short GI in HT20 enabled */

Definition at line 142 of file ieee80211_node.h.

◆ IEEE80211_NODE_SGI40

#define IEEE80211_NODE_SGI40   0x010000 /* Short GI in HT40 enabled */

Definition at line 143 of file ieee80211_node.h.

◆ IEEE80211_NODE_STAT

#define IEEE80211_NODE_STAT (   ni,
  stat 
)    (ni->ni_stats.ns_##stat++)

Definition at line 288 of file ieee80211_node.h.

◆ IEEE80211_NODE_STAT_ADD

#define IEEE80211_NODE_STAT_ADD (   ni,
  stat,
 
)    (ni->ni_stats.ns_##stat += v)

Definition at line 289 of file ieee80211_node.h.

◆ IEEE80211_NODE_STAT_SET

#define IEEE80211_NODE_STAT_SET (   ni,
  stat,
 
)    (ni->ni_stats.ns_##stat = v)

Definition at line 290 of file ieee80211_node.h.

◆ IEEE80211_NODE_TSN

#define IEEE80211_NODE_TSN   0x000200 /* TSN association */

Definition at line 136 of file ieee80211_node.h.

◆ IEEE80211_NODE_TURBOP

#define IEEE80211_NODE_TURBOP   0x0001 /* Turbo prime enable */

Definition at line 156 of file ieee80211_node.h.

◆ IEEE80211_NODE_UAPSD

#define IEEE80211_NODE_UAPSD   0x400000 /* U-APSD power save enabled */

Definition at line 149 of file ieee80211_node.h.

◆ IEEE80211_NODE_VHT

#define IEEE80211_NODE_VHT   0x100000 /* VHT enabled */

Definition at line 147 of file ieee80211_node.h.

◆ IEEE80211_NODE_WPS

#define IEEE80211_NODE_WPS   0x000100 /* WPS association */

Definition at line 135 of file ieee80211_node.h.

◆ IEEE80211_NODE_XR

#define IEEE80211_NODE_XR   0x0008 /* Atheros WME enable */

Definition at line 159 of file ieee80211_node.h.

◆ IEEE80211_NONERP_PRESENT_AGE

#define IEEE80211_NONERP_PRESENT_AGE   msecs_to_ticks(60*1000)

Definition at line 59 of file ieee80211_node.h.

◆ IEEE80211_RSSI_DUMMY_MARKER

#define IEEE80211_RSSI_DUMMY_MARKER   127

Definition at line 307 of file ieee80211_node.h.

◆ IEEE80211_RSSI_EP_MULTIPLIER

#define IEEE80211_RSSI_EP_MULTIPLIER   (1<<7)

Definition at line 309 of file ieee80211_node.h.

◆ IEEE80211_RSSI_EP_RND

#define IEEE80211_RSSI_EP_RND (   x,
  mul 
)     ((((x) % (mul)) >= ((mul)/2)) ? ((x) + ((mul) - 1)) / (mul) : (x)/(mul))

Definition at line 319 of file ieee80211_node.h.

◆ IEEE80211_RSSI_GET

#define IEEE80211_RSSI_GET (   x)     IEEE80211_RSSI_EP_RND(x, IEEE80211_RSSI_EP_MULTIPLIER)

Definition at line 321 of file ieee80211_node.h.

◆ IEEE80211_RSSI_IN

#define IEEE80211_RSSI_IN (   x)    ((x) * IEEE80211_RSSI_EP_MULTIPLIER)

Definition at line 310 of file ieee80211_node.h.

◆ IEEE80211_RSSI_LPF

#define IEEE80211_RSSI_LPF (   x,
 
)
Value:
do { \
if ((y) >= -20) { \
} \
} while (0)
#define _IEEE80211_RSSI_LPF(x, y, len)
#define IEEE80211_RSSI_LPF_LEN
#define IEEE80211_RSSI_IN(x)

Definition at line 313 of file ieee80211_node.h.

◆ IEEE80211_RSSI_LPF_LEN

#define IEEE80211_RSSI_LPF_LEN   10

Definition at line 306 of file ieee80211_node.h.

◆ IEEE80211_TRANS_WAIT

#define IEEE80211_TRANS_WAIT   2 /* mgt frame tx timer (secs) */

Definition at line 56 of file ieee80211_node.h.

Typedef Documentation

◆ ieee80211_iter_func

typedef void ieee80211_iter_func(void *, struct ieee80211_node *)

Definition at line 478 of file ieee80211_node.h.

Enumeration Type Documentation

◆ ieee80211_mesh_mlstate

Enumerator
IEEE80211_NODE_MESH_IDLE 
IEEE80211_NODE_MESH_OPENSNT 
IEEE80211_NODE_MESH_OPENRCV 
IEEE80211_NODE_MESH_CONFIRMRCV 
IEEE80211_NODE_MESH_ESTABLISHED 
IEEE80211_NODE_MESH_HOLDING 

Definition at line 102 of file ieee80211_node.h.

Function Documentation

◆ ieee80211_add_neighbor()

◆ ieee80211_alloc_node()

struct ieee80211_node * ieee80211_alloc_node ( struct ieee80211_node_table nt,
struct ieee80211vap vap,
const uint8_t  macaddr[IEEE80211_ADDR_LEN] 
)

◆ ieee80211_create_ibss()

void ieee80211_create_ibss ( struct ieee80211vap vap,
struct ieee80211_channel chan 
)

Definition at line 332 of file ieee80211_node.c.

References copy_bss(), ieee80211com::ic_bintval, ieee80211com::ic_bsschan, ieee80211com::ic_curmode, ieee80211_channel::ic_flags, ieee80211_channel::ic_freq, ieee80211com::ic_phytype, ieee80211com::ic_sta, ieee80211_addbasicrates(), IEEE80211_ADDR_COPY, IEEE80211_ADDR_LEN, ieee80211_alloc_node(), IEEE80211_C_TDMA, IEEE80211_CAPINFO_IBSS, IEEE80211_CAPINFO_PRIVACY, ieee80211_chan2ieee(), ieee80211_chan2mode(), IEEE80211_CHAN_ANYC, ieee80211_channel_type_char(), ieee80211_dfs_cac_clear(), IEEE80211_DPRINTF, IEEE80211_F_DESBSSID, IEEE80211_F_PRIVACY, IEEE80211_F_PUREG, ieee80211_ht_node_init(), IEEE80211_IS_CHAN_ANYG, IEEE80211_IS_CHAN_B, IEEE80211_IS_CHAN_CACDONE, IEEE80211_IS_CHAN_FULL, IEEE80211_IS_CHAN_HT, IEEE80211_IS_CHAN_VHT, IEEE80211_M_AHDEMO, IEEE80211_M_IBSS, IEEE80211_M_MBSS, IEEE80211_MODE_11A, IEEE80211_MODE_11B, IEEE80211_MODE_11G, IEEE80211_MSG_SCAN, ieee80211_node_set_chan(), ieee80211_opmode_name, ieee80211_ref_node(), ieee80211_setbasicrates(), ieee80211_sta_join1(), IEEE80211_T_FH, ieee80211_vht_node_init(), ieee80211vap::iv_bss, ieee80211vap::iv_caps, ieee80211vap::iv_des_bssid, ieee80211vap::iv_des_ssid, ieee80211vap::iv_flags, ieee80211vap::iv_ic, ieee80211vap::iv_mesh, ieee80211vap::iv_myaddr, ieee80211vap::iv_opmode, ieee80211_scan_ssid::len, ieee80211_mesh_state::ms_id, ieee80211_mesh_state::ms_idlen, net80211_get_random_bytes(), ieee80211_node::ni_bssid, ieee80211_node::ni_capinfo, ieee80211_node::ni_chan, ieee80211_node::ni_essid, ieee80211_node::ni_esslen, ieee80211_node::ni_fhdwell, ieee80211_node::ni_fhindex, ieee80211_node::ni_intval, ieee80211_node::ni_meshid, ieee80211_node::ni_meshidlen, ieee80211_node::ni_rates, and ieee80211_scan_ssid::ssid.

Referenced by adhoc_newstate(), adhoc_pick_bss(), ap_end(), hostap_newstate(), mesh_newstate(), and monitor_newstate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_dump_node()

void ieee80211_dump_node ( struct ieee80211_node_table ,
struct ieee80211_node  
)

◆ ieee80211_dump_nodes()

void ieee80211_dump_nodes ( struct ieee80211_node_table nt)

Definition at line 2657 of file ieee80211_node.c.

References ieee80211_dump_node(), and ieee80211_iterate_nodes().

Here is the call graph for this function:

◆ ieee80211_dup_bss()

struct ieee80211_node * ieee80211_dup_bss ( struct ieee80211vap vap,
const uint8_t  macaddr[IEEE80211_ADDR_LEN] 
)

◆ ieee80211_fakeup_adhoc_node()

◆ ieee80211_find_node()

struct ieee80211_node * ieee80211_find_node ( struct ieee80211_node_table nt,
const uint8_t  macaddr[IEEE80211_ADDR_LEN] 
)

Definition at line 1616 of file ieee80211_node.c.

References ieee80211_find_node_locked(), IEEE80211_NODE_LOCK, and IEEE80211_NODE_UNLOCK.

Here is the call graph for this function:

◆ ieee80211_find_node_locked()

struct ieee80211_node * ieee80211_find_node_locked ( struct ieee80211_node_table nt,
const uint8_t  macaddr[IEEE80211_ADDR_LEN] 
)

◆ ieee80211_find_rxnode()

struct ieee80211_node * ieee80211_find_rxnode ( struct ieee80211com ic,
const struct ieee80211_frame_min wh 
)

Definition at line 1945 of file ieee80211_node.c.

References _find_rxnode(), ieee80211com::ic_sta, IEEE80211_NODE_LOCK, and IEEE80211_NODE_UNLOCK.

Here is the call graph for this function:

◆ ieee80211_find_rxnode_withkey()

◆ ieee80211_find_txnode()

◆ ieee80211_find_vap_node()

◆ ieee80211_find_vap_node_locked()

struct ieee80211_node * ieee80211_find_vap_node_locked ( struct ieee80211_node_table nt,
const struct ieee80211vap vap,
const uint8_t  macaddr[IEEE80211_ADDR_LEN] 
)

◆ ieee80211_free_node()

void ieee80211_free_node ( struct ieee80211_node ni)

Definition at line 2130 of file ieee80211_node.c.

References _ieee80211_free_node(), IEEE80211_DPRINTF, IEEE80211_MSG_NODE, ieee80211_node_dectestref(), IEEE80211_NODE_LOCK, ieee80211_node_refcnt, IEEE80211_NODE_UNLOCK, ieee80211_node::ni_macaddr, ieee80211_node::ni_table, ieee80211_node::ni_vap, and node_clear_keyixmap().

Referenced by ageq_mfree(), getstainfo_common(), hostap_deliver_data(), ht_send_action_ba_addba(), ht_send_action_ba_delba(), ht_send_action_ht_txchwidth(), hwmp_send_action(), ieee80211_create_wds(), ieee80211_drain_ifq(), ieee80211_dwds_mcast(), ieee80211_flush_ifq(), ieee80211_ht_update_beacon(), ieee80211_input_mimo_all(), ieee80211_ioctl_delkey(), ieee80211_ioctl_getkey(), ieee80211_ioctl_getstastats(), ieee80211_ioctl_getstatxpow(), ieee80211_ioctl_getstavlan(), ieee80211_ioctl_getwpaie(), ieee80211_ioctl_setkey(), ieee80211_ioctl_setstastats(), ieee80211_ioctl_setstatxpow(), ieee80211_ioctl_setstavlan(), ieee80211_iterate_nodes_vap(), ieee80211_mgmt_output(), ieee80211_node_deauth(), ieee80211_node_delucastkey(), ieee80211_node_leave(), ieee80211_node_vdetach(), ieee80211_output(), ieee80211_parent_xmitpkt(), ieee80211_raw_output(), ieee80211_reset_bss(), ieee80211_send_bar(), ieee80211_send_error(), ieee80211_send_mgmt(), ieee80211_send_nulldata(), ieee80211_send_probereq(), ieee80211_send_proberesp(), ieee80211_start_pkt(), ieee80211_tx_complete(), ieee80211_vap_pkt_send_dest(), mesh_send_action(), mesh_send_action_meshgate(), mesh_send_action_meshlmetric(), mesh_send_action_meshpeering_close(), mesh_send_action_meshpeering_confirm(), mesh_send_action_meshpeering_open(), psq_mfree(), setmlme_common(), and setmlme_dropsta().

Here is the call graph for this function:

◆ ieee80211_getrssi()

◆ ieee80211_getsignal()

void ieee80211_getsignal ( struct ieee80211vap vap,
int8_t *  rssi,
int8_t *  noise 
)

Definition at line 3102 of file ieee80211_node.c.

References ieee80211com::ic_node_getsignal, ieee80211_getrssi(), IEEE80211_M_STA, ieee80211vap::iv_bss, ieee80211vap::iv_ic, and ieee80211vap::iv_opmode.

Here is the call graph for this function:

◆ ieee80211_ibss_merge()

◆ ieee80211_ibss_merge_check()

int ieee80211_ibss_merge_check ( struct ieee80211_node ni)

Definition at line 579 of file ieee80211_node.c.

References check_bss(), IEEE80211_ADDR_EQ, IEEE80211_DPRINTF, IEEE80211_MSG_ASSOC, ieee80211_stats::is_ibss_capmismatch, ieee80211vap::iv_bss, ieee80211vap::iv_stats, ieee80211_node::ni_bssid, and ieee80211_node::ni_vap.

Referenced by ieee80211_ibss_merge().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_ibss_node_check_new()

int ieee80211_ibss_node_check_new ( struct ieee80211_node ni,
const struct ieee80211_scanparams scan 
)

◆ ieee80211_ies_cleanup()

void ieee80211_ies_cleanup ( struct ieee80211_ies ies)

Definition at line 1120 of file ieee80211_node.c.

References ieee80211_ies::data, and IEEE80211_FREE.

Referenced by adhoc_age(), node_free(), and sta_flush_table().

Here is the caller graph for this function:

◆ ieee80211_ies_expand()

◆ ieee80211_ies_init()

int ieee80211_ies_init ( struct ieee80211_ies ies,
const uint8_t *  data,
int  len 
)

◆ ieee80211_init_neighbor()

void ieee80211_init_neighbor ( struct ieee80211_node ni,
const struct ieee80211_frame wh,
const struct ieee80211_scanparams sp 
)

Definition at line 1768 of file ieee80211_node.c.

References ieee80211_ies::ath_ie, ieee80211_scanparams::bintval, ieee80211_scanparams::capinfo, ieee80211_node::data, ieee80211_scanparams::erp, ieee80211_scanparams::fhdwell, ieee80211_scanparams::fhindex, ieee80211_ies::htcap_ie, ieee80211_ies::htinfo_ie, ieee80211_frame::i_addr3, ieee80211com::ic_curchan, ieee80211com::ic_newassoc, IEEE80211_ADDR_COPY, IEEE80211_DPRINTF, IEEE80211_F_DOBRS, IEEE80211_F_DODEL, IEEE80211_F_DOFRATE, IEEE80211_F_DONEGO, IEEE80211_F_DOSORT, IEEE80211_F_JOIN, IEEE80211_FHT_HT, IEEE80211_FVHT_VHT, ieee80211_ht_node_init(), ieee80211_ht_updateparams(), ieee80211_ht_updateparams_final(), ieee80211_ies_expand(), ieee80211_ies_init(), IEEE80211_IS_CHAN_2GHZ, IEEE80211_M_MBSS, ieee80211_mesh_init_neighbor(), IEEE80211_MSG_ASSOC, IEEE80211_NODE_QOS, ieee80211_node_setuptxparms(), ieee80211_parse_ath(), ieee80211_parse_htcap(), ieee80211_parse_htinfo(), ieee80211_parse_vhtcap(), ieee80211_parse_vhtopmode(), ieee80211_ratectl_node_init(), ieee80211_setup_basic_htrates(), ieee80211_setup_htrates(), ieee80211_setup_rates(), ieee80211_setup_vht_rates(), ieee80211_vht_node_init(), ieee80211_vht_updateparams(), ieee80211_scanparams::ies, ieee80211_scanparams::ies_len, ieee80211vap::iv_flags_ht, ieee80211vap::iv_flags_vht, ieee80211vap::iv_opmode, ieee80211_node::ni_bssid, ieee80211_node::ni_capinfo, ieee80211_node::ni_chan, ieee80211_node::ni_erp, ieee80211_node::ni_essid, ieee80211_node::ni_esslen, ieee80211_node::ni_fhdwell, ieee80211_node::ni_fhindex, ieee80211_node::ni_flags, ieee80211_node::ni_ic, ieee80211_node::ni_ies, ieee80211_node::ni_intval, ieee80211_node::ni_macaddr, ieee80211_node::ni_timoff, ieee80211_node::ni_tstamp, ieee80211_node::ni_vap, ieee80211_scanparams::rates, ieee80211_scanparams::ssid, ieee80211_scanparams::timoff, ieee80211_scanparams::tstamp, ieee80211_ies::vhtcap_ie, ieee80211_ies::vhtopmode_ie, ieee80211_ies::wme_ie, and ieee80211_scanparams::xrates.

Referenced by adhoc_recv_mgmt(), and ieee80211_add_neighbor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_iterate_nodes()

void ieee80211_iterate_nodes ( struct ieee80211_node_table nt,
ieee80211_iter_func f,
void *  arg 
)

Definition at line 2614 of file ieee80211_node.c.

References ieee80211_iterate_nodes_vap().

Referenced by ieee80211_crypto_reload_keys(), ieee80211_dump_nodes(), ieee80211_ratectl_sysctl_stats(), ieee80211_timeout_stations(), mesh_generateid(), mesh_newstate(), mesh_vdetach(), and setmlme_dropsta().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_iterate_nodes_vap()

int ieee80211_iterate_nodes_vap ( struct ieee80211_node_table nt,
struct ieee80211vap vap,
ieee80211_iter_func f,
void *  arg 
)

◆ ieee80211_node_attach()

◆ ieee80211_node_authorize()

◆ ieee80211_node_create_wds()

◆ ieee80211_node_deauth()

void ieee80211_node_deauth ( struct ieee80211_node ni,
int  reason 
)

Definition at line 1060 of file ieee80211_node.c.

References IEEE80211_FC0_SUBTYPE_DEAUTH, ieee80211_free_node(), ieee80211_node_leave(), ieee80211_ref_node(), IEEE80211_SEND_MGMT, and ieee80211_node::ni_associd.

Referenced by wpa_assocreq().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_node_delucastkey()

◆ ieee80211_node_detach()

void ieee80211_node_detach ( struct ieee80211com ic)

Definition at line 137 of file ieee80211_node.c.

References ieee80211com::ic_inact, ieee80211com::ic_sta, ieee80211com::ic_stageq, ieee80211_ageq_cleanup(), ieee80211_ageq_drain(), and ieee80211_node_table_cleanup().

Referenced by ieee80211_ifdetach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_node_is_authorized()

static __inline int ieee80211_node_is_authorized ( const struct ieee80211_node ni)
static

Definition at line 346 of file ieee80211_node.h.

References IEEE80211_NODE_AUTH, and ieee80211_node::ni_flags.

Referenced by adhoc_input(), get_sta_info(), hostap_deliver_data(), hostap_input(), sta_input(), and wds_input().

Here is the caller graph for this function:

◆ ieee80211_node_join()

◆ ieee80211_node_lateattach()

void ieee80211_node_lateattach ( struct ieee80211com )

◆ ieee80211_node_latevattach()

◆ ieee80211_node_leave()

◆ ieee80211_node_set_chan()

◆ ieee80211_node_setuptxparms()

◆ ieee80211_node_timeout()

void ieee80211_node_timeout ( void *  arg)

◆ ieee80211_node_unauthorize()

void ieee80211_node_unauthorize ( struct ieee80211_node ni)

◆ ieee80211_node_vattach()

◆ ieee80211_node_vdetach()

void ieee80211_node_vdetach ( struct ieee80211vap vap)

Definition at line 193 of file ieee80211_node.c.

References ieee80211com::ic_sta, IEEE80211_FREE, ieee80211_free_node(), ieee80211_node_table_reset(), ieee80211vap::iv_aid_bitmap, ieee80211vap::iv_bss, and ieee80211vap::iv_ic.

Referenced by ieee80211_vap_detach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_notify_erp_locked()

void ieee80211_notify_erp_locked ( struct ieee80211com ic)

Definition at line 2669 of file ieee80211_node.c.

References IEEE80211_BEACON_ERP, ieee80211_beacon_notify(), IEEE80211_LOCK_ASSERT, IEEE80211_M_HOSTAP, and ieee80211vap::iv_opmode.

Referenced by vap_update_erp_protmode(), and vap_update_preamble().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_ref_node()

◆ ieee80211_reset_bss()

◆ ieee80211_setcurchan()

void ieee80211_setcurchan ( struct ieee80211com ic,
struct ieee80211_channel c 
)

Definition at line 820 of file ieee80211_node.c.

References ieee80211com::ic_chan_task, ieee80211_runtask(), and ieee80211_setupcurchan().

Referenced by ieee80211_csa_completeswitch(), ieee80211_sta_join1(), and setcurchan().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_setupcurchan()

◆ ieee80211_sta_join()

int ieee80211_sta_join ( struct ieee80211vap vap,
struct ieee80211_channel chan,
const struct ieee80211_scan_entry se 
)

Definition at line 910 of file ieee80211_node.c.

References ieee80211_ies::ath_ie, ieee80211_ies::data, ieee80211_ies::htcap_ie, ieee80211_ies::htinfo_ie, ieee80211com::ic_sta, IEEE80211_ADDR_COPY, ieee80211_alloc_node(), IEEE80211_F_DOBRS, IEEE80211_F_DOSORT, IEEE80211_F_JOIN, IEEE80211_FHT_HT, IEEE80211_FVHT_VHT, ieee80211_ht_node_init(), ieee80211_ht_updateparams(), ieee80211_ht_updateparams_final(), ieee80211_ies_expand(), ieee80211_ies_init(), IEEE80211_IS_CHAN_2GHZ, ieee80211_iserp_rateset(), IEEE80211_M_STA, IEEE80211_NODE_ASSOCID, IEEE80211_NODE_ERP, ieee80211_node_setuptxparms(), ieee80211_parse_ath(), ieee80211_parse_htcap(), ieee80211_parse_htinfo(), ieee80211_parse_meshid(), ieee80211_parse_tdma(), ieee80211_parse_vhtcap(), ieee80211_parse_vhtopmode(), ieee80211_ratectl_node_init(), ieee80211_ref_node(), IEEE80211_RSSI_LPF, ieee80211_setup_basic_htrates(), ieee80211_setup_htrates(), ieee80211_setup_rates(), ieee80211_setup_vht_rates(), ieee80211_sta_join1(), ieee80211_vht_node_init(), ieee80211_vht_updateparams(), ieee80211vap::iv_dtim_count, ieee80211vap::iv_dtim_period, ieee80211vap::iv_flags_ht, ieee80211vap::iv_flags_vht, ieee80211vap::iv_ic, ieee80211vap::iv_opmode, ieee80211_ies::len, ieee80211_ies::meshid_ie, ieee80211_node::ni_avgrssi, ieee80211_node::ni_bssid, ieee80211_node::ni_capinfo, ieee80211_node::ni_chan, ieee80211_node::ni_erp, ieee80211_node::ni_essid, ieee80211_node::ni_esslen, ieee80211_node::ni_fhdwell, ieee80211_node::ni_fhindex, ieee80211_node::ni_flags, ieee80211_node::ni_ies, ieee80211_node::ni_intval, ieee80211_node::ni_macaddr, ieee80211_node::ni_noise, ieee80211_node::ni_rates, ieee80211_node::ni_timoff, ieee80211_node::ni_tstamp, ieee80211_scan_entry::se_bssid, ieee80211_scan_entry::se_capinfo, ieee80211_scan_entry::se_dtimperiod, ieee80211_scan_entry::se_erp, ieee80211_scan_entry::se_fhdwell, ieee80211_scan_entry::se_fhindex, ieee80211_scan_entry::se_ies, ieee80211_scan_entry::se_intval, ieee80211_scan_entry::se_macaddr, ieee80211_scan_entry::se_noise, ieee80211_scan_entry::se_rates, ieee80211_scan_entry::se_rssi, ieee80211_scan_entry::se_ssid, ieee80211_scan_entry::se_timoff, ieee80211_scan_entry::se_tstamp, ieee80211_scan_entry::se_xrates, ieee80211_ies::tdma_ie, ieee80211_node::tsf, ieee80211_scan_entry::tsf, ieee80211_ies::vhtcap_ie, and ieee80211_ies::vhtopmode_ie.

Referenced by adhoc_pick_bss(), setmlme_assoc_sta(), sta_pick_bss(), and sta_roam_check().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_sta_leave()

void ieee80211_sta_leave ( struct ieee80211_node ni)

Definition at line 1048 of file ieee80211_node.c.

References ieee80211com::ic_node_cleanup, ieee80211_notify_node_leave(), and ieee80211_node::ni_ic.

Referenced by ieee80211_node_leave(), and sta_newstate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ieee80211_sync_curchan()

◆ ieee80211_tmp_node()

◆ ieee80211_unref_node()

static __inline void ieee80211_unref_node ( struct ieee80211_node **  ni)
static

Definition at line 332 of file ieee80211_node.h.

References ieee80211_node_decref.

Referenced by ieee80211_send_nulldata().

Here is the caller graph for this function:

◆ ieee80211_update_chw()

void ieee80211_update_chw ( struct ieee80211com ic)

Definition at line 827 of file ieee80211_node.c.

References ieee80211com::ic_chw_task, ieee80211com::ic_curchan, ieee80211_runtask(), and ieee80211_setupcurchan().

Referenced by adhoc_recv_mgmt(), and sta_recv_mgmt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MALLOC_DECLARE() [1/2]

MALLOC_DECLARE ( M_80211_NODE  )

◆ MALLOC_DECLARE() [2/2]

MALLOC_DECLARE ( M_80211_NODE_IE  )