FreeBSD kernel WLAN code
|
#include <sys/cdefs.h>
#include "opt_wlan.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/mbuf.h>
#include <sys/malloc.h>
#include <sys/endian.h>
#include <sys/kernel.h>
#include <sys/socket.h>
#include <net/ethernet.h>
#include <net/if.h>
#include <net/if_var.h>
#include <net/if_llc.h>
#include <net/if_media.h>
#include <net/if_vlan_var.h>
#include <net80211/ieee80211_var.h>
#include <net80211/ieee80211_input.h>
#include <net/bpf.h>
Go to the source code of this file.
Macros | |
#define | FF_LLC_SIZE (sizeof(struct ether_header) + sizeof(struct llc)) |
Functions | |
__FBSDID ("$FreeBSD$") | |
static void | ieee80211_process_mimo (struct ieee80211_node *ni, struct ieee80211_rx_stats *rx) |
int | ieee80211_input_mimo (struct ieee80211_node *ni, struct mbuf *m) |
int | ieee80211_input_all (struct ieee80211com *ic, struct mbuf *m, int rssi, int nf) |
int | ieee80211_input_mimo_all (struct ieee80211com *ic, struct mbuf *m) |
struct mbuf * | ieee80211_defrag (struct ieee80211_node *ni, struct mbuf *m, int hdrspace, int has_decrypted) |
void | ieee80211_deliver_data (struct ieee80211vap *vap, struct ieee80211_node *ni, struct mbuf *m) |
struct mbuf * | ieee80211_decap (struct ieee80211vap *vap, struct mbuf *m, int hdrlen, uint8_t qos) |
struct mbuf * | ieee80211_decap1 (struct mbuf *m, int *framelen) |
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 *ni, const uint8_t mac[IEEE80211_ADDR_LEN], int subtype, int arg) |
int | ieee80211_alloc_challenge (struct ieee80211_node *ni) |
int | ieee80211_parse_beacon (struct ieee80211_node *ni, struct mbuf *m, struct ieee80211_channel *rxchan, struct ieee80211_scanparams *scan) |
int | ieee80211_parse_action (struct ieee80211_node *ni, struct mbuf *m) |
#define FF_LLC_SIZE (sizeof(struct ether_header) + sizeof(struct llc)) |
__FBSDID | ( | "$FreeBSD$" | ) |
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().
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_input_all | ( | struct ieee80211com * | ic, |
struct mbuf * | m, | ||
int | rssi, | ||
int | nf | ||
) |
Definition at line 105 of file ieee80211_input.c.
References ieee80211_rx_stats::c_nf, ieee80211_rx_stats::c_rssi, ieee80211_add_rx_params(), ieee80211_input_mimo_all(), IEEE80211_R_NF, IEEE80211_R_RSSI, and ieee80211_rx_stats::r_flags.
int ieee80211_input_mimo | ( | struct ieee80211_node * | ni, |
struct mbuf * | m | ||
) |
Definition at line 88 of file ieee80211_input.c.
References ieee80211_rx_stats::c_nf, ieee80211_rx_stats::c_rssi, ieee80211_get_rx_params(), ieee80211_process_mimo(), ieee80211vap::iv_input, and ieee80211_node::ni_vap.
Referenced by ieee80211_input_mimo_all().
int ieee80211_input_mimo_all | ( | struct ieee80211com * | ic, |
struct mbuf * | m | ||
) |
Definition at line 120 of file ieee80211_input.c.
References ieee80211_free_node(), ieee80211_input_mimo(), IEEE80211_M_WDS, ieee80211_ref_node(), IEEE80211_S_INIT, ieee80211vap::iv_bss, ieee80211vap::iv_opmode, and ieee80211vap::iv_state.
Referenced by ieee80211_input_all().
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().
|
static |
Definition at line 64 of file ieee80211_input.c.
References ieee80211_rx_stats::c_chain, ieee80211_rx_stats::c_nf_ctl, ieee80211_rx_stats::c_nf_ext, ieee80211_rx_stats::c_rssi_ctl, ieee80211_rx_stats::c_rssi_ext, IEEE80211_MAX_CHAINS, IEEE80211_R_C_CHAIN, IEEE80211_R_C_NF, IEEE80211_R_C_RSSI, IEEE80211_RSSI_LPF, ieee80211_node::ni_mimo_chains, ieee80211_node::ni_mimo_noise_ctl, ieee80211_node::ni_mimo_noise_ext, ieee80211_node::ni_mimo_rssi_ctl, ieee80211_node::ni_mimo_rssi_ext, and ieee80211_rx_stats::r_flags.
Referenced by ieee80211_input_mimo().
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().