30#ifndef _NET80211_IEEE80211_PROTO_H_
31#define _NET80211_IEEE80211_PROTO_H_
47#define IEEE80211_S_MAX (IEEE80211_S_SLEEP+1)
49#define IEEE80211_SEND_MGMT(_ni,_type,_arg) \
50 ((*(_ni)->ni_ic->ic_send_mgmt)(_ni, _type, _arg))
57static __inline
const char *
64static __inline
const char *
85#define ieee80211_input(ni, m, rssi, nf) \
86 ((ni)->ni_vap->iv_input(ni, m, NULL, rssi, nf))
98 const struct sockaddr *,
struct route *ro);
118 uint8_t **, uint32_t *,
const uint8_t *,
size_t,
bool);
123 const uint8_t *ssid,
size_t ssidlen);
125 const struct ether_header *);
134#define IEEE80211_SEND_LEGACY_11B 0x1
135#define IEEE80211_SEND_LEGACY_11 0x2
136#define IEEE80211_SEND_LEGACY 0x3
146 const struct mbuf *, uint8_t,
int);
180 (
"%s: control frame", __func__));
184 size +=
sizeof(uint16_t);
255#define IEEE80211_F_DOSORT 0x00000001
256#define IEEE80211_F_DOFRATE 0x00000002
257#define IEEE80211_F_DONEGO 0x00000004
258#define IEEE80211_F_DODEL 0x00000008
259#define IEEE80211_F_DOBRS 0x00000010
260#define IEEE80211_F_JOIN 0x00000020
261#define IEEE80211_F_DOFMCS 0x00000040
276#define IEEE80211_TXOP_TO_US(_txop) ((_txop)<<5)
277#define IEEE80211_US_TO_TXOP(_us) ((_us)>>5)
286#define WME_F_AGGRMODE 0x00000001
315static __inline uint8_t *
332static __inline uint8_t
367 const uint8_t *,
int,
int,
int);
430 struct mbuf *,
int mcast);
463 const uint8_t cc[2]);
#define IEEE80211_OPMODE_MAX
#define IEEE80211_NONQOS_TID
#define IEEE80211_MODE_MAX
#define IEEE80211_FC0_TYPE_CTL
#define IEEE80211_FC0_TYPE_MASK
#define IEEE80211_ADDR_LEN
#define IEEE80211_FC0_SUBTYPE_BAR
#define IEEE80211_FC0_SUBTYPE_ACK
#define IEEE80211_FC0_SUBTYPE_CTS
#define IEEE80211_QOS_HAS_SEQ(wh)
#define IEEE80211_IS_DSTODS(wh)
#define IEEE80211_FC0_SUBTYPE_SHIFT
#define IEEE80211_FC0_SUBTYPE_MASK
#define IEEE80211_QOS_TID
static const struct ieee80211_aclator mac
void ieee80211_stop(struct ieee80211vap *)
uint8_t * ieee80211_add_wme_info(uint8_t *frm, struct ieee80211_wme_state *wme, struct ieee80211_node *ni)
void ieee80211_vap_set_shortslottime(struct ieee80211vap *, int onoff)
void ieee80211_resume_all(struct ieee80211com *)
void ieee80211_authenticator_register(int type, const struct ieee80211_authenticator *)
void ieee80211_promisc(struct ieee80211vap *, bool)
void ieee80211_wme_updateparams(struct ieee80211vap *)
ieee80211_notify_cac_event
@ IEEE80211_NOTIFY_CAC_RADAR
@ IEEE80211_NOTIFY_CAC_START
@ IEEE80211_NOTIFY_CAC_STOP
@ IEEE80211_NOTIFY_CAC_EXPIRE
const struct ieee80211_authenticator * ieee80211_authenticator_get(int auth)
static __inline const char * ieee80211_ctl_subtype_name(uint8_t subtype)
void ieee80211_stop_locked(struct ieee80211vap *)
void ieee80211_dturbo_switch(struct ieee80211vap *, int newflags)
const char * ieee80211_wme_acnames[]
struct mbuf * ieee80211_alloc_rts(struct ieee80211com *ic, const uint8_t[IEEE80211_ADDR_LEN], const uint8_t[IEEE80211_ADDR_LEN], uint16_t)
void ieee80211_dump_pkt(struct ieee80211com *, const uint8_t *, int, int, int)
void ieee80211_swbmiss(void *arg)
void ieee80211_syncflag_ext(struct ieee80211vap *, int flag)
void ieee80211_wme_initparams(struct ieee80211vap *)
const char * ieee80211_reason_to_string(uint16_t)
void ieee80211_vap_update_ht_protmode(struct ieee80211vap *vap)
const char * ieee80211_opmode_name[]
int ieee80211_fix_rate(struct ieee80211_node *, struct ieee80211_rateset *, int)
void ieee80211_wme_vap_getparams(struct ieee80211vap *vap, struct chanAccParams *)
void ieee80211_waitfor_parent(struct ieee80211com *)
int ieee80211_wme_vap_ac_is_noack(struct ieee80211vap *vap, int ac)
void ieee80211_notify_cac(struct ieee80211com *, const struct ieee80211_channel *, enum ieee80211_notify_cac_event)
void ieee80211_free_mbuf(struct mbuf *)
void ieee80211_proto_detach(struct ieee80211com *)
void ieee80211_cac_completeswitch(struct ieee80211vap *)
void ieee80211_vap_reset_erp(struct ieee80211vap *)
const int ieee80211_opcap[IEEE80211_OPMODE_MAX]
void ieee80211_print_essid(const uint8_t *, int)
int ieee80211_input_mimo(struct ieee80211_node *, struct mbuf *)
struct mbuf * ieee80211_beacon_alloc(struct ieee80211_node *)
int ieee80211_iserp_rateset(const struct ieee80211_rateset *)
const char * mgt_subtype_name[]
void ieee80211_notify_csa(struct ieee80211com *, const struct ieee80211_channel *, int mode, int count)
void ieee80211_tx_complete(struct ieee80211_node *, struct mbuf *, int)
void ieee80211_stop_all(struct ieee80211com *)
void ieee80211_setbasicrates(struct ieee80211_rateset *, enum ieee80211_phymode)
const char * ieee80211_phymode_name[IEEE80211_MODE_MAX]
struct mbuf * ieee80211_mbuf_adjust(struct ieee80211vap *, int, struct ieee80211_key *, struct mbuf *)
void ieee80211_csa_completeswitch(struct ieee80211com *)
uint8_t * ieee80211_add_xrates(uint8_t *, const struct ieee80211_rateset *)
int ieee80211_send_probereq(struct ieee80211_node *ni, const uint8_t sa[IEEE80211_ADDR_LEN], const uint8_t da[IEEE80211_ADDR_LEN], const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t *ssid, size_t ssidlen)
int ieee80211_beacon_update(struct ieee80211_node *, struct mbuf *, int mcast)
struct mbuf * ieee80211_encap(struct ieee80211vap *, struct ieee80211_node *, struct mbuf *)
uint8_t * ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int)
uint8_t * ieee80211_add_rsn(uint8_t *, const struct ieee80211vap *)
void ieee80211_restart_all(struct ieee80211com *)
void ieee80211_vap_update_preamble(struct ieee80211vap *vap)
void ieee80211_start_locked(struct ieee80211vap *)
void ieee80211_allmulti(struct ieee80211vap *, bool)
static __inline uint8_t ieee80211_gettid(const struct ieee80211_frame *wh)
const char * ieee80211_state_name[IEEE80211_S_MAX]
int ieee80211_output(struct ifnet *, struct mbuf *, const struct sockaddr *, struct route *ro)
void ieee80211_authenticator_unregister(int type)
void ieee80211_wme_updateparams_locked(struct ieee80211vap *)
@ IEEE80211_BEACON_VHTINFO
@ IEEE80211_BEACON_MESHCONF
@ IEEE80211_BEACON_HTINFO
void ieee80211_csa_cancelswitch(struct ieee80211com *)
void ieee80211_suspend_all(struct ieee80211com *)
void ieee80211_proto_vdetach(struct ieee80211vap *)
int ieee80211_send_proberesp(struct ieee80211vap *, const uint8_t da[IEEE80211_ADDR_LEN], int)
void ieee80211_notify_wds_discover(struct ieee80211_node *)
void ieee80211_syncflag_ht(struct ieee80211vap *, int flag)
void ieee80211_reset_erp(struct ieee80211com *)
int ieee80211_new_state(struct ieee80211vap *, enum ieee80211_state, int)
void ieee80211_notify_radar(struct ieee80211com *, const struct ieee80211_channel *)
static __inline uint8_t * ieee80211_getqos(void *data)
int ieee80211_send_nulldata(struct ieee80211_node *)
int ieee80211_send_mgmt(struct ieee80211_node *, int, int)
int ieee80211_input_all(struct ieee80211com *, struct mbuf *, int, int)
int ieee80211_new_state_locked(struct ieee80211vap *, enum ieee80211_state, int)
int ieee80211_mgmt_output(struct ieee80211_node *, struct mbuf *, int, struct ieee80211_bpf_params *)
int ieee80211_classify(struct ieee80211_node *, struct mbuf *m)
void ieee80211_beacon_miss(struct ieee80211com *)
void ieee80211_notify_node_join(struct ieee80211_node *, int newassoc)
struct mbuf * ieee80211_alloc_cts(struct ieee80211com *, const uint8_t[IEEE80211_ADDR_LEN], uint16_t)
void ieee80211_notify_ifnet_change(struct ieee80211vap *)
void ieee80211_vap_update_erp_protmode(struct ieee80211vap *vap)
const char * ctl_subtype_name[]
void ieee80211_notify_scan_done(struct ieee80211vap *)
void ieee80211_proto_vattach(struct ieee80211vap *)
void ieee80211_init(void *)
void ieee80211_notify_radio(struct ieee80211com *, int)
int ieee80211_vap_transmit(struct ifnet *ifp, struct mbuf *m)
static __inline const char * ieee80211_mgt_subtype_name(uint8_t subtype)
int ieee80211_vap_pkt_send_dest(struct ieee80211vap *, struct mbuf *, struct ieee80211_node *)
int ieee80211_raw_xmit(struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *)
void ieee80211_notify_country(struct ieee80211vap *, const uint8_t[], const uint8_t cc[2])
void ieee80211_vap_qflush(struct ifnet *ifp)
void ieee80211_aclator_register(const struct ieee80211_aclator *)
void ieee80211_addbasicrates(struct ieee80211_rateset *, enum ieee80211_phymode)
uint16_t ieee80211_getcapinfo(struct ieee80211vap *, struct ieee80211_channel *)
const struct ieee80211_aclator * ieee80211_aclator_get(const char *name)
struct mbuf * ieee80211_ff_encap1(struct ieee80211vap *, struct mbuf *, const struct ether_header *)
void ieee80211_syncflag(struct ieee80211vap *, int flag)
uint8_t * ieee80211_add_rates(uint8_t *, const struct ieee80211_rateset *)
void ieee80211_csa_startswitch(struct ieee80211com *, struct ieee80211_channel *, int mode, int count)
void ieee80211_start_all(struct ieee80211com *)
void ieee80211_notify_node_auth(struct ieee80211_node *)
uint8_t * ieee80211_add_wpa(uint8_t *, const struct ieee80211vap *)
static __inline int ieee80211_anyhdrsize(const void *data)
int ieee80211_probereq_ie(struct ieee80211vap *, struct ieee80211com *, uint8_t **, uint32_t *, const uint8_t *, size_t, bool)
void ieee80211_send_setup(struct ieee80211_node *, struct mbuf *, int, int, const uint8_t[IEEE80211_ADDR_LEN], const uint8_t[IEEE80211_ADDR_LEN], const uint8_t[IEEE80211_ADDR_LEN])
uint8_t * ieee80211_add_qos(uint8_t *, const struct ieee80211_node *)
void ieee80211_syncflag_vht(struct ieee80211vap *, int flag)
static __inline int ieee80211_hdrsize(const void *data)
struct mbuf * ieee80211_alloc_proberesp(struct ieee80211_node *, int)
void ieee80211_proto_attach(struct ieee80211com *)
int ieee80211_input_mimo_all(struct ieee80211com *, struct mbuf *)
void ieee80211_notify_node_leave(struct ieee80211_node *)
void ieee80211_aclator_unregister(const struct ieee80211_aclator *)
void ieee80211_wme_ic_getparams(struct ieee80211com *ic, struct chanAccParams *)
int ieee80211_raw_output(struct ieee80211vap *, struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *)
struct mbuf * ieee80211_alloc_prot(struct ieee80211_node *, const struct mbuf *, uint8_t, int)
void ieee80211_notify_node_deauth(struct ieee80211_node *)
struct wmeParams cap_wmeParams[WME_NUM_AC]
int(* iac_attach)(struct ieee80211vap *)
int(* iac_flush)(struct ieee80211vap *)
int(* iac_check)(struct ieee80211vap *, const struct ieee80211_frame *wh)
int(* iac_setpolicy)(struct ieee80211vap *, int)
void(* iac_detach)(struct ieee80211vap *)
int(* iac_getioctl)(struct ieee80211vap *, struct ieee80211req *)
int(* iac_getpolicy)(struct ieee80211vap *)
int(* iac_setioctl)(struct ieee80211vap *, struct ieee80211req *)
int(* iac_add)(struct ieee80211vap *, const uint8_t mac[IEEE80211_ADDR_LEN])
int(* iac_remove)(struct ieee80211vap *, const uint8_t mac[IEEE80211_ADDR_LEN])
void(* ia_node_join)(struct ieee80211_node *)
int(* ia_attach)(struct ieee80211vap *)
void(* ia_node_leave)(struct ieee80211_node *)
void(* ia_detach)(struct ieee80211vap *)
uint16_t bo_csa_trailer_len
uint16_t bo_tim_trailer_len
int(* wme_update)(struct ieee80211com *)
u_int wme_hipri_switch_hysteresis
struct wmeParams wme_params[WME_NUM_AC]
struct chanAccParams wme_wmeChanParams
struct chanAccParams wme_chanParams
struct chanAccParams wme_bssChanParams
struct chanAccParams wme_wmeBssChanParams
u_int wme_hipri_switch_thresh