FreeBSD kernel WLAN code
|
#include <sys/endian.h>
Go to the source code of this file.
Macros | |
#define | IEEE80211_VERIFY_ELEMENT(__elem, __maxlen, _action) |
#define | IEEE80211_VERIFY_LENGTH(_len, _minlen, _action) |
#define | IEEE80211_VERIFY_SSID(_ni, _ssid, _action) |
#define | SEQ_LEQ(a, b) ((int)((a)-(b)) <= 0) |
#define | SEQ_EQ(a, b) ((int)((a)-(b)) == 0) |
#define | SEQNO(a) ((a) >> IEEE80211_SEQ_SEQ_SHIFT) |
#define | FRAGNO(a) ((a) & IEEE80211_SEQ_FRAG_MASK) |
Functions | |
static __inline int | iswpaoui (const uint8_t *frm) |
static __inline int | iswmeoui (const uint8_t *frm) |
static __inline int | iswmeparam (const uint8_t *frm) |
static __inline int | iswmeinfo (const uint8_t *frm) |
static __inline int | isatherosoui (const uint8_t *frm) |
static __inline int | istdmaoui (const uint8_t *frm) |
static __inline int | ishtcapoui (const uint8_t *frm) |
static __inline int | ishtinfooui (const uint8_t *frm) |
static __inline int | ieee80211_check_rxseq_amsdu (const struct ieee80211_rx_stats *rxs) |
static __inline int | ieee80211_check_rxseq_amsdu_more (const struct ieee80211_rx_stats *rxs) |
static __inline int | ieee80211_check_rxseq (struct ieee80211_node *ni, struct ieee80211_frame *wh, uint8_t *bssid, const struct ieee80211_rx_stats *rxs) |
void | ieee80211_deliver_data (struct ieee80211vap *, struct ieee80211_node *, struct mbuf *) |
struct mbuf * | ieee80211_defrag (struct ieee80211_node *, struct mbuf *, int, int) |
struct mbuf * | ieee80211_realign (struct ieee80211vap *, struct mbuf *, size_t) |
struct mbuf * | ieee80211_decap (struct ieee80211vap *, struct mbuf *, int, uint8_t) |
struct mbuf * | ieee80211_decap1 (struct mbuf *, int *) |
int | ieee80211_setup_rates (struct ieee80211_node *ni, const uint8_t *rates, const uint8_t *xrates, int flags) |
void | ieee80211_send_error (struct ieee80211_node *, const uint8_t mac[IEEE80211_ADDR_LEN], int subtype, int arg) |
int | ieee80211_alloc_challenge (struct ieee80211_node *) |
int | ieee80211_parse_beacon (struct ieee80211_node *, struct mbuf *, struct ieee80211_channel *, struct ieee80211_scanparams *) |
int | ieee80211_parse_action (struct ieee80211_node *, struct mbuf *) |
#define FRAGNO | ( | a | ) | ((a) & IEEE80211_SEQ_FRAG_MASK) |
#define IEEE80211_VERIFY_ELEMENT | ( | __elem, | |
__maxlen, | |||
_action | |||
) |
Definition at line 33 of file ieee80211_input.h.
#define IEEE80211_VERIFY_LENGTH | ( | _len, | |
_minlen, | |||
_action | |||
) |
Definition at line 47 of file ieee80211_input.h.
#define IEEE80211_VERIFY_SSID | ( | _ni, | |
_ssid, | |||
_action | |||
) |
Definition at line 74 of file ieee80211_input.h.
#define SEQ_EQ | ( | a, | |
b | |||
) | ((int)((a)-(b)) == 0) |
#define SEQ_LEQ | ( | a, | |
b | |||
) | ((int)((a)-(b)) <= 0) |
#define SEQNO | ( | a | ) | ((a) >> IEEE80211_SEQ_SEQ_SHIFT) |
int ieee80211_alloc_challenge | ( | struct ieee80211_node * | ni | ) |
Definition at line 493 of file ieee80211_input.c.
References IEEE80211_CHALLENGE_LEN, IEEE80211_M_NOWAIT, IEEE80211_MALLOC, IEEE80211_MSG_AUTH, IEEE80211_MSG_DEBUG, IEEE80211_NOTE, ieee80211_node::ni_challenge, and ieee80211_node::ni_vap.
Referenced by hostap_auth_shared(), and sta_auth_shared().
|
static |
Definition at line 195 of file ieee80211_input.h.
References FRAGNO, ieee80211_frame::i_addr1, ieee80211_frame::i_fc, ieee80211_frame::i_seq, IEEE80211_AGGR_RUNNING, ieee80211_check_rxseq_amsdu(), ieee80211_check_rxseq_amsdu_more(), IEEE80211_DISCARD_MAC, IEEE80211_FC0_SUBTYPE_MASK, IEEE80211_FC0_TYPE_MASK, IEEE80211_FC1_RETRY, ieee80211_gettid(), IEEE80211_HAS_SEQ, IEEE80211_IS_MULTICAST, IEEE80211_MSG_INPUT, IEEE80211_NODE_HT, IEEE80211_NODE_STAT, ieee80211_stats::is_rx_dup, ieee80211vap::iv_stats, ieee80211_node::ni_flags, ieee80211_node::ni_rx_ampdu, ieee80211_node::ni_rxseqs, ieee80211_node::ni_vap, ieee80211_rx_ampdu::rxa_flags, SEQ_EQ, SEQ_LEQ, SEQNO, and WME_NUM_TID.
Referenced by adhoc_input(), hostap_input(), mesh_input(), sta_input(), and wds_input().
|
static |
Definition at line 137 of file ieee80211_input.h.
References ieee80211_rx_stats::c_pktflags, and IEEE80211_RX_F_AMSDU.
Referenced by ampdu_rx_add_slot(), ieee80211_ampdu_reorder(), and ieee80211_check_rxseq().
|
static |
Definition at line 150 of file ieee80211_input.h.
References ieee80211_rx_stats::c_pktflags, IEEE80211_RX_F_AMSDU, and IEEE80211_RX_F_AMSDU_MORE.
Referenced by ampdu_rx_add_slot(), ieee80211_ampdu_reorder(), and ieee80211_check_rxseq().
struct mbuf * ieee80211_decap | ( | struct ieee80211vap * | vap, |
struct mbuf * | m, | ||
int | hdrlen, | ||
uint8_t | qos | ||
) |
Definition at line 312 of file ieee80211_input.c.
References ieee80211_qosframe_addr4::i_addr1, ieee80211_qosframe_addr4::i_addr2, ieee80211_qosframe_addr4::i_addr3, ieee80211_qosframe_addr4::i_addr4, ieee80211_qosframe_addr4::i_fc, IEEE80211_ADDR_COPY, IEEE80211_FC1_DIR_DSTODS, IEEE80211_FC1_DIR_FROMDS, IEEE80211_FC1_DIR_MASK, IEEE80211_FC1_DIR_NODS, IEEE80211_FC1_DIR_TODS, IEEE80211_QOS_AMSDU, ieee80211_realign(), ieee80211_stats::is_rx_tooshort, and ieee80211vap::iv_stats.
Referenced by adhoc_input(), hostap_input(), sta_input(), and wds_input().
struct mbuf * ieee80211_decap1 | ( | struct mbuf * | m, |
int * | framelen | ||
) |
Definition at line 380 of file ieee80211_input.c.
References FF_LLC_SIZE.
Referenced by ieee80211_decap_amsdu().
struct mbuf * ieee80211_defrag | ( | struct ieee80211_node * | ni, |
struct mbuf * | m, | ||
int | hdrspace, | ||
int | has_decrypted | ||
) |
Definition at line 173 of file ieee80211_input.c.
References ieee80211_frame::i_addr1, ieee80211_frame::i_addr2, ieee80211_frame::i_fc, ieee80211_frame::i_seq, IEEE80211_ADDR_EQ, IEEE80211_FC1_MORE_FRAG, IEEE80211_FC1_PROTECTED, IEEE80211_IS_MULTICAST, IEEE80211_NODE_LOCK, IEEE80211_NODE_STAT, IEEE80211_NODE_UNLOCK, IEEE80211_SEQ_FRAG_MASK, ieee80211_stats::is_rx_defrag, ieee80211vap::iv_stats, ieee80211_node::ni_rxfrag, ieee80211_node::ni_rxfragstamp, ieee80211_node::ni_table, and ieee80211_node::ni_vap.
Referenced by adhoc_input(), hostap_input(), mesh_input(), sta_input(), and wds_input().
void ieee80211_deliver_data | ( | struct ieee80211vap * | vap, |
struct ieee80211_node * | ni, | ||
struct mbuf * | m | ||
) |
Definition at line 275 of file ieee80211_input.c.
References IEEE80211_M_HOSTAP, IEEE80211_NODE_STAT, IEEE80211_NODE_STAT_ADD, ieee80211vap::iv_ifp, ieee80211vap::iv_opmode, and ieee80211_node::ni_vlan.
Referenced by adhoc_input(), hostap_input(), ieee80211_proto_vattach(), mesh_input(), sta_input(), and wds_input().
int ieee80211_parse_action | ( | struct ieee80211_node * | ni, |
struct mbuf * | m | ||
) |
Definition at line 784 of file ieee80211_input.c.
References ieee80211_frame::i_addr1, ieee80211_frame::i_addr2, ieee80211_action::ia_action, ieee80211_action::ia_category, IEEE80211_ACTION_BA_ADDBA_REQUEST, IEEE80211_ACTION_BA_ADDBA_RESPONSE, IEEE80211_ACTION_BA_DELBA, IEEE80211_ACTION_CAT_BA, IEEE80211_ACTION_CAT_HT, IEEE80211_ACTION_CAT_MESH, IEEE80211_ACTION_CAT_SELF_PROT, IEEE80211_ACTION_CAT_VHT, IEEE80211_ACTION_HT_MIMOPWRSAVE, IEEE80211_ACTION_HT_TXCHWIDTH, IEEE80211_ACTION_MESH_CC, IEEE80211_ACTION_MESH_GANN, IEEE80211_ACTION_MESH_HWMP, IEEE80211_ACTION_MESH_LMETRIC, IEEE80211_ACTION_MESH_MCCA_ADVER, IEEE80211_ACTION_MESH_MCCA_AREQ, IEEE80211_ACTION_MESH_MCCA_SREP, IEEE80211_ACTION_MESH_MCCA_SREQ, IEEE80211_ACTION_MESH_MCCA_TRDOWN, IEEE80211_ACTION_MESH_TBTT_REQ, IEEE80211_ACTION_MESH_TBTT_RES, IEEE80211_ACTION_MESHPEERING_CLOSE, IEEE80211_ACTION_MESHPEERING_CONFIRM, IEEE80211_DISCARD, IEEE80211_IS_MULTICAST, IEEE80211_MSG_ELEMID, IEEE80211_MSG_INPUT, IEEE80211_NODE_STAT, IEEE80211_VERIFY_LENGTH, ieee80211_stats::is_rx_action, ieee80211vap::iv_bss, ieee80211vap::iv_stats, and ieee80211_node::ni_vap.
Referenced by adhoc_recv_mgmt(), hostap_recv_mgmt(), mesh_recv_mgmt(), sta_recv_mgmt(), and wds_recv_mgmt().
int ieee80211_parse_beacon | ( | struct ieee80211_node * | ni, |
struct mbuf * | m, | ||
struct ieee80211_channel * | rxchan, | ||
struct ieee80211_scanparams * | scan | ||
) |
Definition at line 516 of file ieee80211_input.c.
References ieee80211_scanparams::ath, ieee80211_scanparams::bchan, ieee80211_scanparams::bintval, ieee80211_scanparams::capinfo, ieee80211_scanparams::chan, ieee80211_scanparams::country, ieee80211_scanparams::csa, ieee80211_scanparams::erp, ieee80211_scanparams::fhdwell, ieee80211_scanparams::fhindex, ieee80211_scanparams::htcap, ieee80211_scanparams::htinfo, ieee80211com::ic_phytype, IEEE80211_BINTVAL_MAX, IEEE80211_BPARSE_BADIELEN, IEEE80211_BPARSE_BINTVAL_INVALID, IEEE80211_BPARSE_CSA_INVALID, IEEE80211_BPARSE_OFFCHAN, IEEE80211_BPARSE_RATES_INVALID, IEEE80211_BPARSE_SSID_INVALID, IEEE80211_BPARSE_XRATES_INVALID, ieee80211_chan2ieee(), IEEE80211_DISCARD, IEEE80211_DISCARD_IE, IEEE80211_ELEMID_APCHANREP, IEEE80211_ELEMID_BSSLOAD, IEEE80211_ELEMID_CFPARMS, IEEE80211_ELEMID_COUNTRY, IEEE80211_ELEMID_CSA, IEEE80211_ELEMID_DSPARMS, IEEE80211_ELEMID_ERP, IEEE80211_ELEMID_EXTCAP, IEEE80211_ELEMID_FHPARMS, IEEE80211_ELEMID_HTCAP, IEEE80211_ELEMID_HTINFO, IEEE80211_ELEMID_IBSSPARMS, IEEE80211_ELEMID_MESHCONF, IEEE80211_ELEMID_MESHID, IEEE80211_ELEMID_PWRCNSTR, IEEE80211_ELEMID_QUIET, IEEE80211_ELEMID_RATES, IEEE80211_ELEMID_RSN, IEEE80211_ELEMID_SSID, IEEE80211_ELEMID_TIM, IEEE80211_ELEMID_VENDOR, IEEE80211_ELEMID_VHT_CAP, IEEE80211_ELEMID_VHT_OPMODE, IEEE80211_ELEMID_XRATES, IEEE80211_FH_CHAN, IEEE80211_FHT_HTCOMPAT, IEEE80211_MSG_ELEMID, IEEE80211_MSG_INPUT, IEEE80211_NWID_LEN, IEEE80211_RATE_MAXSIZE, IEEE80211_T_FH, IEEE80211_VERIFY_ELEMENT, IEEE80211_VERIFY_LENGTH, ieee80211_scanparams::ies, ieee80211_scanparams::ies_len, ieee80211_stats::is_rx_badbintval, ieee80211_stats::is_rx_chanmismatch, ieee80211_stats::is_rx_elem_toobig, ieee80211_stats::is_rx_elem_unknown, isatherosoui(), ishtcapoui(), ishtinfooui(), istdmaoui(), iswmeinfo(), iswmeparam(), iswpaoui(), ieee80211vap::iv_flags_ht, ieee80211vap::iv_stats, ieee80211_scanparams::meshconf, ieee80211_scanparams::meshid, ieee80211_node::ni_ic, ieee80211_node::ni_vap, ieee80211_scanparams::quiet, ieee80211_scanparams::rates, ieee80211_scanparams::rsn, ieee80211_scanparams::ssid, ieee80211_scanparams::status, ieee80211_scanparams::tdma, ieee80211_scanparams::tim, ieee80211_scanparams::timoff, ieee80211_scanparams::tstamp, ieee80211_scanparams::vhtcap, ieee80211_scanparams::vhtopmode, ieee80211_scanparams::wme, ieee80211_scanparams::wpa, and ieee80211_scanparams::xrates.
Referenced by adhoc_recv_mgmt(), hostap_recv_mgmt(), mesh_recv_mgmt(), and sta_recv_mgmt().
struct mbuf * ieee80211_realign | ( | struct ieee80211vap * | vap, |
struct mbuf * | m, | ||
size_t | align | ||
) |
Definition at line 517 of file ieee80211_freebsd.c.
References IEEE80211_DISCARD, IEEE80211_MSG_ANY, ieee80211_stats::is_rx_badalign, and ieee80211vap::iv_stats.
Referenced by ieee80211_decap(), and mesh_decap().
void ieee80211_send_error | ( | struct ieee80211_node * | ni, |
const uint8_t | mac[IEEE80211_ADDR_LEN], | ||
int | subtype, | ||
int | arg | ||
) |
Definition at line 461 of file ieee80211_input.c.
References ieee80211_free_node(), IEEE80211_S_RUN, IEEE80211_SEND_MGMT, ieee80211_tmp_node(), ieee80211vap::iv_bss, ieee80211vap::iv_state, mac, and ieee80211_node::ni_vap.
Referenced by authalgreject(), hostap_auth_open(), hostap_auth_shared(), hostap_input(), hostap_recv_mgmt(), setmlme_common(), and sta_recv_mgmt().
int ieee80211_setup_rates | ( | struct ieee80211_node * | ni, |
const uint8_t * | rates, | ||
const uint8_t * | xrates, | ||
int | flags | ||
) |
Definition at line 425 of file ieee80211_input.c.
References ieee80211_fix_rate(), IEEE80211_MSG_XRATE, IEEE80211_NOTE, IEEE80211_RATE_MAXSIZE, ieee80211_stats::is_rx_rstoobig, ieee80211vap::iv_stats, ieee80211_node::ni_rates, ieee80211_node::ni_vap, ieee80211_rateset::rs_nrates, and ieee80211_rateset::rs_rates.
Referenced by hostap_recv_mgmt(), ieee80211_init_neighbor(), ieee80211_sta_join(), and sta_recv_mgmt().
|
static |
Definition at line 113 of file ieee80211_input.h.
References ATH_OUI, and ATH_OUI_TYPE.
Referenced by hostap_recv_mgmt(), ieee80211_ies_expand(), and ieee80211_parse_beacon().
|
static |
Definition at line 125 of file ieee80211_input.h.
References BCM_OUI, and BCM_OUI_HTCAP.
Referenced by hostap_recv_mgmt(), ieee80211_parse_beacon(), and sta_recv_mgmt().
|
static |
Definition at line 131 of file ieee80211_input.h.
References BCM_OUI, and BCM_OUI_HTINFO.
Referenced by ieee80211_parse_beacon(), and sta_recv_mgmt().
|
static |
Definition at line 119 of file ieee80211_input.h.
References TDMA_OUI, and TDMA_OUI_TYPE.
Referenced by ieee80211_ies_expand(), and ieee80211_parse_beacon().
|
static |
Definition at line 106 of file ieee80211_input.h.
References WME_INFO_OUI_SUBTYPE, WME_OUI, and WME_OUI_TYPE.
Referenced by hostap_recv_mgmt(), and ieee80211_parse_beacon().
|
static |
Definition at line 93 of file ieee80211_input.h.
References WME_OUI, and WME_OUI_TYPE.
Referenced by ieee80211_ies_expand(), and sta_recv_mgmt().
|
static |
Definition at line 99 of file ieee80211_input.h.
References WME_OUI, WME_OUI_TYPE, and WME_PARAM_OUI_SUBTYPE.
Referenced by ieee80211_parse_beacon().
|
static |
Definition at line 87 of file ieee80211_input.h.
References WPA_OUI, and WPA_OUI_TYPE.
Referenced by hostap_recv_mgmt(), ieee80211_ies_expand(), and ieee80211_parse_beacon().