The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/net80211/ieee80211_var.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $OpenBSD: ieee80211_var.h,v 1.111 2022/03/14 15:07:24 stsp Exp $        */
    2 /*      $NetBSD: ieee80211_var.h,v 1.7 2004/05/06 03:07:10 dyoung Exp $ */
    3 
    4 /*-
    5  * Copyright (c) 2001 Atsushi Onoe
    6  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
    7  * All rights reserved.
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  * 1. Redistributions of source code must retain the above copyright
   13  *    notice, this list of conditions and the following disclaimer.
   14  * 2. Redistributions in binary form must reproduce the above copyright
   15  *    notice, this list of conditions and the following disclaimer in the
   16  *    documentation and/or other materials provided with the distribution.
   17  * 3. The name of the author may not be used to endorse or promote products
   18  *    derived from this software without specific prior written permission.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   21  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   22  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   23  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   24  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   25  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   29  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   30  *
   31  * $FreeBSD: src/sys/net80211/ieee80211_var.h,v 1.15 2004/04/05 22:10:26 sam Exp $
   32  */
   33 #ifndef _NET80211_IEEE80211_VAR_H_
   34 #define _NET80211_IEEE80211_VAR_H_
   35 
   36 /*
   37  * Definitions for IEEE 802.11 drivers.
   38  */
   39 
   40 #ifdef  SMALL_KERNEL
   41 #define IEEE80211_STA_ONLY      1
   42 #endif
   43 
   44 #include <sys/timeout.h>
   45 
   46 #include <net80211/ieee80211.h>
   47 #include <net80211/ieee80211_crypto.h>
   48 #include <net80211/ieee80211_ioctl.h>           /* for ieee80211_stats */
   49 #include <net80211/ieee80211_node.h>
   50 #include <net80211/ieee80211_proto.h>
   51 
   52 #define IEEE80211_CHAN_MAX      255
   53 #define IEEE80211_CHAN_ANY      0xffff          /* token for ``any channel'' */
   54 #define IEEE80211_CHAN_ANYC \
   55         ((struct ieee80211_channel *) NULL)
   56 
   57 #define IEEE80211_TXPOWER_MAX   100     /* max power */
   58 #define IEEE80211_TXPOWER_MIN   -50     /* kill radio (if possible) */
   59 
   60 #define IEEE80211_RSSI_THRES_2GHZ               (-60)   /* in dBm */
   61 #define IEEE80211_RSSI_THRES_5GHZ               (-70)   /* in dBm */
   62 #define IEEE80211_RSSI_THRES_RATIO_2GHZ         60      /* in percent */
   63 #define IEEE80211_RSSI_THRES_RATIO_5GHZ         50      /* in percent */
   64 
   65 #define IEEE80211_BGSCAN_FAIL_MAX               512     /* units of 500 msec */
   66 
   67 /*
   68  * Missed beacon threshold: An access point has disappeared if this amount
   69  * of consecutive beacons have been missed.
   70  * This value needs to be high enough to avoid frequent re-connects to APs
   71  * which suffer from occasional packet loss, and low enough to avoid a long
   72  * delay before we start scanning when an AP has actually disappeared.
   73  *
   74  * The beacon interval is variable, but generally in the order of 100ms.
   75  * So 30 beacons implies a grace period of about 3 seconds before we start
   76  * searching for a new AP.
   77  */
   78 #define IEEE80211_BEACON_MISS_THRES             30      /* units of beacons */
   79 
   80 enum ieee80211_phytype {
   81         IEEE80211_T_DS,                 /* direct sequence spread spectrum */
   82         IEEE80211_T_OFDM,               /* frequency division multiplexing */
   83         IEEE80211_T_XR                  /* extended range mode */
   84 };
   85 #define IEEE80211_T_CCK IEEE80211_T_DS  /* more common nomenclature */
   86 
   87 /* XXX not really a mode; there are really multiple PHY's */
   88 enum ieee80211_phymode {
   89         IEEE80211_MODE_AUTO     = 0,    /* autoselect */
   90         IEEE80211_MODE_11A      = 1,    /* 5GHz, OFDM */
   91         IEEE80211_MODE_11B      = 2,    /* 2GHz, CCK */
   92         IEEE80211_MODE_11G      = 3,    /* 2GHz, OFDM */
   93         IEEE80211_MODE_11N      = 4,    /* 2GHz/5GHz, OFDM/HT */
   94         IEEE80211_MODE_11AC     = 5,    /* 5GHz, OFDM/VHT */
   95 };
   96 #define IEEE80211_MODE_MAX      (IEEE80211_MODE_11AC+1)
   97 
   98 enum ieee80211_opmode {
   99         IEEE80211_M_STA         = 1,    /* infrastructure station */
  100 #ifndef IEEE80211_STA_ONLY
  101         IEEE80211_M_IBSS        = 0,    /* IBSS (adhoc) station */
  102         IEEE80211_M_AHDEMO      = 3,    /* Old lucent compatible adhoc demo */
  103         IEEE80211_M_HOSTAP      = 6,    /* Software Access Point */
  104 #endif
  105         IEEE80211_M_MONITOR     = 8     /* Monitor mode */
  106 };
  107 
  108 /*
  109  * 802.11g protection mode.
  110  */
  111 enum ieee80211_protmode {
  112         IEEE80211_PROT_NONE     = 0,    /* no protection */
  113         IEEE80211_PROT_CTSONLY  = 1,    /* CTS to self */
  114         IEEE80211_PROT_RTSCTS   = 2     /* RTS-CTS */
  115 };
  116 
  117 /*
  118  * Channels are specified by frequency and attributes.
  119  */
  120 struct ieee80211_channel {
  121         u_int16_t       ic_freq;        /* setting in MHz */
  122         u_int16_t       ic_flags;       /* see below */
  123         u_int32_t       ic_xflags;      /* extra flags; see below */
  124 };
  125 
  126 /*
  127  * Channel attributes (XXX must keep in sync with radiotap flags).
  128  */
  129 #define IEEE80211_CHAN_CCK      0x0020  /* CCK channel */
  130 #define IEEE80211_CHAN_OFDM     0x0040  /* OFDM channel */
  131 #define IEEE80211_CHAN_2GHZ     0x0080  /* 2 GHz spectrum channel */
  132 #define IEEE80211_CHAN_5GHZ     0x0100  /* 5 GHz spectrum channel */
  133 #define IEEE80211_CHAN_PASSIVE  0x0200  /* Only passive scan allowed */
  134 #define IEEE80211_CHAN_DYN      0x0400  /* Dynamic CCK-OFDM channel */
  135 #define IEEE80211_CHAN_XR       0x1000  /* Extended range OFDM channel */
  136 #define IEEE80211_CHAN_HT       0x2000  /* 11n/HT channel */
  137 #define IEEE80211_CHAN_VHT      0x4000  /* 11ac/VHT channel */
  138 #define IEEE80211_CHAN_40MHZ    0x8000  /* use of 40 MHz is allowed */
  139 
  140 /*
  141  * Extra channel flags.
  142  */
  143 #define IEEE80211_CHANX_80MHZ   0x00000001 /* use of 80 MHz is allowed */
  144 #define IEEE80211_CHANX_160MHZ  0x00000002 /* use of 160 MHz is allowed */
  145 
  146 /*
  147  * Useful combinations of channel characteristics.
  148  */
  149 #define IEEE80211_CHAN_A \
  150         (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM)
  151 #define IEEE80211_CHAN_B \
  152         (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK)
  153 #define IEEE80211_CHAN_PUREG \
  154         (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM)
  155 #define IEEE80211_CHAN_G \
  156         (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN)
  157 
  158 #define IEEE80211_IS_CHAN_A(_c) \
  159         (((_c)->ic_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A)
  160 #define IEEE80211_IS_CHAN_B(_c) \
  161         (((_c)->ic_flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B)
  162 #define IEEE80211_IS_CHAN_PUREG(_c) \
  163         (((_c)->ic_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG)
  164 #define IEEE80211_IS_CHAN_G(_c) \
  165         (((_c)->ic_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G)
  166 #define IEEE80211_IS_CHAN_N(_c) \
  167         (((_c)->ic_flags & IEEE80211_CHAN_HT) == IEEE80211_CHAN_HT)
  168 #define IEEE80211_IS_CHAN_AC(_c) \
  169         (((_c)->ic_flags & IEEE80211_CHAN_VHT) == IEEE80211_CHAN_VHT)
  170 
  171 #define IEEE80211_IS_CHAN_2GHZ(_c) \
  172         (((_c)->ic_flags & IEEE80211_CHAN_2GHZ) != 0)
  173 #define IEEE80211_IS_CHAN_5GHZ(_c) \
  174         (((_c)->ic_flags & IEEE80211_CHAN_5GHZ) != 0)
  175 #define IEEE80211_IS_CHAN_OFDM(_c) \
  176         (((_c)->ic_flags & IEEE80211_CHAN_OFDM) != 0)
  177 #define IEEE80211_IS_CHAN_CCK(_c) \
  178         (((_c)->ic_flags & IEEE80211_CHAN_CCK) != 0)
  179 #define IEEE80211_IS_CHAN_XR(_c) \
  180         (((_c)->ic_flags & IEEE80211_CHAN_XR) != 0)
  181 
  182 #define IEEE80211_CHAN_40MHZ_ALLOWED(_c) \
  183         (((_c)->ic_flags & IEEE80211_CHAN_40MHZ) != 0)
  184 #define IEEE80211_CHAN_80MHZ_ALLOWED(_c) \
  185         (((_c)->ic_xflags & IEEE80211_CHANX_80MHZ) != 0)
  186 #define IEEE80211_CHAN_160MHZ_ALLOWED(_c) \
  187         (((_c)->ic_xflags & IEEE80211_CHANX_160MHZ) != 0)
  188 
  189 /*
  190  * EDCA AC parameters.
  191  */
  192 struct ieee80211_edca_ac_params {
  193         u_int8_t        ac_ecwmin;      /* CWmin = 2^ECWmin - 1 */
  194         u_int8_t        ac_ecwmax;      /* CWmax = 2^ECWmax - 1 */
  195         u_int8_t        ac_aifsn;
  196         u_int16_t       ac_txoplimit;   /* 32TU */
  197 #define IEEE80211_TXOP_TO_US(txop)      ((txop) * 32)
  198 
  199         u_int8_t        ac_acm;
  200 };
  201 
  202 extern const struct ieee80211_edca_ac_params
  203             ieee80211_edca_table[IEEE80211_MODE_MAX][EDCA_NUM_AC];
  204 extern const struct ieee80211_edca_ac_params
  205             ieee80211_qap_edca_table[IEEE80211_MODE_MAX][EDCA_NUM_AC];
  206 
  207 #define IEEE80211_DEFRAG_SIZE   3       /* must be >= 3 according to spec */
  208 /*
  209  * Entry in the fragment cache.
  210  */
  211 struct ieee80211_defrag {
  212         struct timeout  df_to;
  213         struct mbuf     *df_m;
  214         u_int16_t       df_seq;
  215         u_int8_t        df_frag;
  216 };
  217 
  218 #define IEEE80211_PROTO_NONE    0
  219 #define IEEE80211_PROTO_RSN     (1 << 0)
  220 #define IEEE80211_PROTO_WPA     (1 << 1)
  221 
  222 #define IEEE80211_SCAN_UNLOCKED 0x0
  223 #define IEEE80211_SCAN_LOCKED   0x1
  224 #define IEEE80211_SCAN_REQUEST  0x2
  225 #define IEEE80211_SCAN_RESUME   0x4
  226 
  227 #define IEEE80211_GROUP_NKID    6
  228 
  229 struct ieee80211_node_switch_bss_arg;
  230 
  231 struct ieee80211com {
  232         struct arpcom           ic_ac;
  233         LIST_ENTRY(ieee80211com) ic_list;       /* chain of all ieee80211com */
  234         void                    (*ic_recv_mgmt)(struct ieee80211com *,
  235                                     struct mbuf *, struct ieee80211_node *,
  236                                     struct ieee80211_rxinfo *, int);
  237         int                     (*ic_send_mgmt)(struct ieee80211com *,
  238                                     struct ieee80211_node *, int, int, int);
  239         int                     (*ic_newstate)(struct ieee80211com *,
  240                                     enum ieee80211_state, int);
  241         int                     (*ic_newauth)(struct ieee80211com *,
  242                                     struct ieee80211_node *, int, uint16_t);
  243         void                    (*ic_newassoc)(struct ieee80211com *,
  244                                     struct ieee80211_node *, int);
  245         void                    (*ic_node_leave)(struct ieee80211com *,
  246                                     struct ieee80211_node *);
  247         void                    (*ic_updateslot)(struct ieee80211com *);
  248         void                    (*ic_updateedca)(struct ieee80211com *);
  249         void                    (*ic_set_tim)(struct ieee80211com *, int, int);
  250         int                     (*ic_set_key)(struct ieee80211com *,
  251                                     struct ieee80211_node *,
  252                                     struct ieee80211_key *);
  253         void                    (*ic_delete_key)(struct ieee80211com *,
  254                                     struct ieee80211_node *,
  255                                     struct ieee80211_key *);
  256         int                     (*ic_ampdu_tx_start)(struct ieee80211com *,
  257                                     struct ieee80211_node *, u_int8_t);
  258         void                    (*ic_ampdu_tx_stop)(struct ieee80211com *,
  259                                     struct ieee80211_node *, u_int8_t);
  260         int                     (*ic_ampdu_rx_start)(struct ieee80211com *,
  261                                     struct ieee80211_node *, u_int8_t);
  262         void                    (*ic_ampdu_rx_stop)(struct ieee80211com *,
  263                                     struct ieee80211_node *, u_int8_t);
  264         void                    (*ic_updateprot)(struct ieee80211com *);
  265         void                    (*ic_updatechan)(struct ieee80211com *);
  266         void                    (*ic_updatedtim)(struct ieee80211com *);
  267         int                     (*ic_bgscan_start)(struct ieee80211com *);
  268         void                    (*ic_bgscan_done)(struct ieee80211com *,
  269                                     struct ieee80211_node_switch_bss_arg *,
  270                                     size_t);
  271         struct timeout          ic_bgscan_timeout;
  272         uint32_t                ic_bgscan_fail;
  273         u_int8_t                ic_myaddr[IEEE80211_ADDR_LEN];
  274         struct ieee80211_rateset ic_sup_rates[IEEE80211_MODE_MAX];
  275         struct ieee80211_channel ic_channels[IEEE80211_CHAN_MAX+1];
  276         u_char                  ic_chan_avail[howmany(IEEE80211_CHAN_MAX,NBBY)];
  277         u_char                  ic_chan_active[howmany(IEEE80211_CHAN_MAX, NBBY)];
  278         u_char                  ic_chan_scan[howmany(IEEE80211_CHAN_MAX,NBBY)];
  279         struct mbuf_queue       ic_mgtq;
  280         struct mbuf_queue       ic_pwrsaveq;
  281         u_int8_t                ic_scan_count;  /* count scans */
  282         u_int32_t               ic_flags;       /* state flags */
  283         u_int32_t               ic_xflags;      /* more flags */
  284         u_int32_t               ic_userflags;   /* yet more flags */
  285         u_int32_t               ic_caps;        /* capabilities */
  286         u_int16_t               ic_modecaps;    /* set of mode capabilities */
  287         u_int16_t               ic_curmode;     /* current mode */
  288         enum ieee80211_phytype  ic_phytype;     /* XXX wrong for multi-mode */
  289         enum ieee80211_opmode   ic_opmode;      /* operation mode */
  290         enum ieee80211_state    ic_state;       /* 802.11 state */
  291         u_int32_t               *ic_aid_bitmap;
  292         u_int16_t               ic_max_aid;
  293         enum ieee80211_protmode ic_protmode;    /* 802.11g/n protection mode */
  294         struct ifmedia          ic_media;       /* interface media config */
  295         caddr_t                 ic_rawbpf;      /* packet filter structure */
  296         struct ieee80211_node   *ic_bss;        /* information for this node */
  297         struct ieee80211_channel *ic_ibss_chan;
  298         int                     ic_fixed_rate;  /* index to ic_sup_rates[] */
  299         u_int16_t               ic_rtsthreshold;
  300         u_int16_t               ic_fragthreshold;
  301         u_int                   ic_scangen;     /* gen# for timeout scan */
  302         struct ieee80211_node   *(*ic_node_alloc)(struct ieee80211com *);
  303         void                    (*ic_node_free)(struct ieee80211com *,
  304                                         struct ieee80211_node *);
  305         void                    (*ic_node_copy)(struct ieee80211com *,
  306                                         struct ieee80211_node *,
  307                                         const struct ieee80211_node *);
  308         u_int8_t                (*ic_node_getrssi)(struct ieee80211com *,
  309                                         const struct ieee80211_node *);
  310         int                     (*ic_node_checkrssi)(struct ieee80211com *,
  311                                         const struct ieee80211_node *);
  312         u_int8_t                ic_max_rssi;
  313         struct ieee80211_tree   ic_tree;
  314         int                     ic_nnodes;      /* length of ic_nnodes */
  315         int                     ic_max_nnodes;  /* max length of ic_nnodes */
  316         u_int16_t               ic_lintval;     /* listen interval */
  317         int16_t                 ic_txpower;     /* tx power setting (dBm) */
  318         int                     ic_bmissthres;  /* beacon miss threshold */
  319         int                     ic_mgt_timer;   /* mgmt timeout */
  320 #ifndef IEEE80211_STA_ONLY
  321         struct timeout          ic_inact_timeout; /* node inactivity timeout */
  322         struct timeout          ic_node_cache_timeout;
  323 #endif
  324         struct task             ic_rtm_80211info_task;
  325         int                     ic_des_esslen;
  326         u_int8_t                ic_des_essid[IEEE80211_NWID_LEN];
  327         struct ieee80211_channel *ic_des_chan;  /* desired channel */
  328         u_int8_t                ic_des_bssid[IEEE80211_ADDR_LEN];
  329         struct ieee80211_key    ic_nw_keys[IEEE80211_GROUP_NKID];
  330         int                     ic_def_txkey;   /* group data key index */
  331 #define ic_wep_txkey    ic_def_txkey
  332         int                     ic_igtk_kid;    /* IGTK key index */
  333         u_int32_t               ic_iv;          /* initial vector for wep */
  334         struct ieee80211_stats  ic_stats;       /* statistics */
  335         struct timeval          ic_last_merge_print;    /* for rate-limiting
  336                                                          * IBSS merge print-outs
  337                                                          */
  338         struct ieee80211_edca_ac_params ic_edca_ac[EDCA_NUM_AC];
  339         u_int                   ic_edca_updtcount;
  340         u_int16_t               ic_tid_noack;
  341         u_int8_t                ic_globalcnt[EAPOL_KEY_NONCE_LEN];
  342         u_int8_t                ic_nonce[EAPOL_KEY_NONCE_LEN];
  343         u_int8_t                ic_psk[IEEE80211_PMK_LEN];
  344         struct timeout          ic_rsn_timeout;
  345         time_t                  ic_tkip_micfail;
  346         u_int64_t               ic_tkip_micfail_last_tsc;
  347 #ifndef IEEE80211_STA_ONLY
  348         struct timeout          ic_tkip_micfail_timeout;
  349 #endif
  350 
  351         TAILQ_HEAD(, ieee80211_pmk) ic_pmksa;   /* PMKSA cache */
  352         u_int                   ic_rsnprotos;
  353         u_int                   ic_rsnakms;
  354         u_int                   ic_rsnciphers;
  355         enum ieee80211_cipher   ic_rsngroupcipher;
  356         enum ieee80211_cipher   ic_rsngroupmgmtcipher;
  357 
  358 #ifdef notyet
  359         struct ieee80211_defrag ic_defrag[IEEE80211_DEFRAG_SIZE];
  360         int                     ic_defrag_cur;
  361 #endif
  362 
  363         u_int8_t                *ic_tim_bitmap;
  364         u_int                   ic_tim_len;
  365         u_int                   ic_tim_mcast_pending;
  366         u_int                   ic_dtim_period;
  367         u_int                   ic_dtim_count;
  368 
  369         u_int32_t               ic_txbfcaps;
  370         u_int16_t               ic_htcaps;
  371         u_int8_t                ic_ampdu_params;
  372         u_int8_t                ic_sup_mcs[howmany(80, NBBY)];
  373         u_int16_t               ic_max_rxrate;  /* in Mb/s, 0 <= rate <= 1023 */
  374         u_int8_t                ic_tx_mcs_set;
  375         u_int16_t               ic_htxcaps;
  376         u_int8_t                ic_aselcaps;
  377         u_int8_t                ic_dialog_token;
  378         int                     ic_fixed_mcs;
  379 
  380         uint32_t                ic_vhtcaps;
  381         uint16_t                ic_vht_rxmcs;
  382         uint16_t                ic_vht_rx_max_lgi_mbit_s;
  383         uint16_t                ic_vht_txmcs;
  384         uint16_t                ic_vht_tx_max_lgi_mbit_s;
  385 
  386         TAILQ_HEAD(, ieee80211_ess)      ic_ess;
  387 };
  388 #define ic_if           ic_ac.ac_if
  389 #define ic_softc        ic_if.if_softc
  390 
  391 /* list of APs we want to automatically use */
  392 /* all data is copied from struct ieee80211com */
  393 struct ieee80211_ess {
  394         /* nwid */
  395         int                     esslen;
  396         u_int8_t                essid[IEEE80211_NWID_LEN];
  397 
  398         /* clear/wep/wpa */
  399         u_int32_t               flags;
  400 
  401         /* nwkey */
  402         struct ieee80211_key    nw_keys[IEEE80211_GROUP_NKID];
  403         int                     def_txkey;
  404 
  405         /* wpakey */
  406         u_int8_t                psk[IEEE80211_PMK_LEN];
  407         u_int                   rsnprotos;
  408         u_int                   rsnakms;
  409         u_int                   rsnciphers;
  410         enum ieee80211_cipher   rsngroupcipher;
  411 
  412         TAILQ_ENTRY(ieee80211_ess) ess_next;
  413 };
  414 
  415 #define IEEE80211_ADDR_EQ(a1,a2)        (memcmp(a1,a2,IEEE80211_ADDR_LEN) == 0)
  416 #define IEEE80211_ADDR_COPY(dst,src)    memcpy(dst,src,IEEE80211_ADDR_LEN)
  417 
  418 /* ic_flags */
  419 #define IEEE80211_F_ASCAN       0x00000001      /* STATUS: active scan */
  420 #define IEEE80211_F_SIBSS       0x00000002      /* STATUS: start IBSS */
  421 #define IEEE80211_F_WEPON       0x00000100      /* CONF: WEP enabled */
  422 #define IEEE80211_F_IBSSON      0x00000200      /* CONF: IBSS creation enable */
  423 #define IEEE80211_F_PMGTON      0x00000400      /* CONF: Power mgmt enable */
  424 #define IEEE80211_F_DESBSSID    0x00000800      /* CONF: des_bssid is set */
  425 #define IEEE80211_F_ROAMING     0x00002000      /* CONF: roaming enabled */
  426 #define IEEE80211_F_TXPMGT      0x00018000      /* STATUS: tx power */
  427 #define IEEE80211_F_TXPOW_OFF   0x00000000      /* TX Power: radio disabled */
  428 #define IEEE80211_F_TXPOW_FIXED 0x00008000      /* TX Power: fixed rate */
  429 #define IEEE80211_F_TXPOW_AUTO  0x00010000      /* TX Power: undefined */
  430 #define IEEE80211_F_SHSLOT      0x00020000      /* STATUS: short slot time */
  431 #define IEEE80211_F_SHPREAMBLE  0x00040000      /* STATUS: short preamble */
  432 #define IEEE80211_F_QOS         0x00080000      /* CONF: QoS enabled */
  433 #define IEEE80211_F_USEPROT     0x00100000      /* STATUS: protection enabled */
  434 #define IEEE80211_F_RSNON       0x00200000      /* CONF: RSN enabled */
  435 #define IEEE80211_F_PSK         0x00400000      /* CONF: pre-shared key set */
  436 #define IEEE80211_F_COUNTERM    0x00800000      /* STATUS: countermeasures */
  437 #define IEEE80211_F_MFPR        0x01000000      /* CONF: MFP required */
  438 #define IEEE80211_F_HTON        0x02000000      /* CONF: HT enabled */
  439 #define IEEE80211_F_PBAR        0x04000000      /* CONF: PBAC required */
  440 #define IEEE80211_F_BGSCAN      0x08000000      /* STATUS: background scan */
  441 #define IEEE80211_F_AUTO_JOIN   0x10000000      /* CONF: auto-join active */
  442 #define IEEE80211_F_VHTON       0x20000000      /* CONF: VHT enabled */
  443 
  444 /* ic_xflags */
  445 #define IEEE80211_F_TX_MGMT_ONLY 0x00000001     /* leave data frames on ifq */
  446 
  447 /* ic_caps */
  448 #define IEEE80211_C_WEP         0x00000001      /* CAPABILITY: WEP available */
  449 #define IEEE80211_C_IBSS        0x00000002      /* CAPABILITY: IBSS available */
  450 #define IEEE80211_C_PMGT        0x00000004      /* CAPABILITY: Power mgmt */
  451 #define IEEE80211_C_HOSTAP      0x00000008      /* CAPABILITY: HOSTAP avail */
  452 #define IEEE80211_C_AHDEMO      0x00000010      /* CAPABILITY: Old Adhoc Demo */
  453 #define IEEE80211_C_APPMGT      0x00000020      /* CAPABILITY: AP power mgmt */
  454 #define IEEE80211_C_TXPMGT      0x00000040      /* CAPABILITY: tx power mgmt */
  455 #define IEEE80211_C_SHSLOT      0x00000080      /* CAPABILITY: short slottime */
  456 #define IEEE80211_C_SHPREAMBLE  0x00000100      /* CAPABILITY: short preamble */
  457 #define IEEE80211_C_MONITOR     0x00000200      /* CAPABILITY: monitor mode */
  458 #define IEEE80211_C_SCANALL     0x00000400      /* CAPABILITY: scan all chan */
  459 #define IEEE80211_C_QOS         0x00000800      /* CAPABILITY: QoS avail */
  460 #define IEEE80211_C_RSN         0x00001000      /* CAPABILITY: RSN avail */
  461 #define IEEE80211_C_MFP         0x00002000      /* CAPABILITY: MFP avail */
  462 #define IEEE80211_C_RAWCTL      0x00004000      /* CAPABILITY: raw ctl */
  463 #define IEEE80211_C_SCANALLBAND 0x00008000      /* CAPABILITY: scan all bands */
  464 #define IEEE80211_C_TX_AMPDU    0x00010000      /* CAPABILITY: send A-MPDU */
  465 #define IEEE80211_C_ADDBA_OFFLOAD 0x00020000    /* CAPABILITY: ADDBA offload */
  466 
  467 /* flags for ieee80211_fix_rate() */
  468 #define IEEE80211_F_DOSORT      0x00000001      /* sort rate list */
  469 #define IEEE80211_F_DOFRATE     0x00000002      /* use fixed rate */
  470 #define IEEE80211_F_DONEGO      0x00000004      /* calc negotiated rate */
  471 #define IEEE80211_F_DODEL       0x00000008      /* delete ignore rate */
  472 
  473 void    ieee80211_ifattach(struct ifnet *);
  474 void    ieee80211_ifdetach(struct ifnet *);
  475 void    ieee80211_channel_init(struct ifnet *);
  476 void    ieee80211_media_init(struct ifnet *, ifm_change_cb_t, ifm_stat_cb_t);
  477 int     ieee80211_media_change(struct ifnet *);
  478 void    ieee80211_media_status(struct ifnet *, struct ifmediareq *);
  479 int     ieee80211_ioctl(struct ifnet *, u_long, caddr_t);
  480 int     ieee80211_get_rate(struct ieee80211com *);
  481 void    ieee80211_watchdog(struct ifnet *);
  482 int     ieee80211_fix_rate(struct ieee80211com *, struct ieee80211_node *, int);
  483 uint64_t        ieee80211_rate2media(struct ieee80211com *, int,
  484                     enum ieee80211_phymode);
  485 int     ieee80211_media2rate(uint64_t);
  486 uint64_t        ieee80211_mcs2media(struct ieee80211com *, int,
  487                     enum ieee80211_phymode);
  488 int     ieee80211_media2mcs(uint64_t);
  489 u_int8_t ieee80211_rate2plcp(u_int8_t, enum ieee80211_phymode);
  490 u_int8_t ieee80211_plcp2rate(u_int8_t, enum ieee80211_phymode);
  491 u_int   ieee80211_mhz2ieee(u_int, u_int);
  492 u_int   ieee80211_chan2ieee(struct ieee80211com *,
  493                 const struct ieee80211_channel *);
  494 u_int   ieee80211_ieee2mhz(u_int, u_int);
  495 int     ieee80211_min_basic_rate(struct ieee80211com *);
  496 int     ieee80211_max_basic_rate(struct ieee80211com *);
  497 int     ieee80211_setmode(struct ieee80211com *, enum ieee80211_phymode);
  498 enum ieee80211_phymode ieee80211_next_mode(struct ifnet *);
  499 enum ieee80211_phymode ieee80211_chan2mode(struct ieee80211com *,
  500                 const struct ieee80211_channel *);
  501 void    ieee80211_disable_wep(struct ieee80211com *); 
  502 void    ieee80211_disable_rsn(struct ieee80211com *); 
  503 int     ieee80211_add_ess(struct ieee80211com *, struct ieee80211_join *);
  504 void    ieee80211_del_ess(struct ieee80211com *, char *, int, int);
  505 void    ieee80211_set_ess(struct ieee80211com *, struct ieee80211_ess *,
  506             struct ieee80211_node *);
  507 void    ieee80211_deselect_ess(struct ieee80211com *);
  508 struct ieee80211_ess *ieee80211_get_ess(struct ieee80211com *, const char *, int);
  509 void    ieee80211_begin_bgscan(struct ifnet *);
  510 
  511 extern  int ieee80211_cache_size;
  512 
  513 #endif /* _NET80211_IEEE80211_VAR_H_ */

Cache object: d8c09d2ccc4b8385f47ea67b6c8d2387


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.